How do I get rid of texture distortions when exporting FBX model to Unreal Engine?

I made a model of a lab table in Blender 2.9 and exported it as an FBX without really knowing which options to select during exporting. I got it to import in Unreal and applied one of the materials that come with Unreal to the Material slots of my Lab Table. The problem is that my modelling isn’t exactly world class and I get some stretching around a part of my mesh where I used an Inset for a hole.

I’ve seen before that people use these checkerboard textures in blender to check if their models have good (UVs?) and I’m trying to redo my model in such a way that the checkerboard texture will look even around the inset part of my mesh. So I tested to see if a simple cube with an inset and a moved face will produce such a distortion as can be seen in my lab table.

As you can see, the distortion doesn’t show up in the checkerboard texture. So I’m guessing that I cannot tell, just by looking at the checkerboard texture in Blender, if this problem will occur further down the line.

How do I prevent this type of stretching from occurring? What are the best practices to make models with appropriate UVs?

PS: I had to combine two of my images into one since new users aren’t allowed more than one image.

Welcome :tada:

Are you sure this object has UV’s at all… or that the texture setting in Unreal ares set to (the correct) UV’s ??

(not using Unreal myself)

I’m a bleeding Amateure so I’ve got no idea about that. I did discover though that when I move down the top face of my cube to make a tabletop, the checkerboard will compress in the z-direction. My guess is that this means that when the material will be applied in Unreal, the wood material will be compressed as well in that region. How do I avoid that?

By doing a proper unwrap.
It is fairly simple to understand.
Unwrapping is like doing an Origami in reverse.
Take a look at the UV Map and take a look at the object in 3D space and you’ll see why there is stretching and compressing…
Spoiler: There is a disparity between the 2 dimensional UV texture projection and the shape in 3D space.
Your UV still looks like that of a cube with equally long sides, while your 3D model has non-quadratic sides.
The dimension/proportion in UV space and in 3D space must be identical in order to avoid stretching/compressing.

My model basically only consists of cubes. I’m planning to make the model somewhat modular. So the tabletop will be one mesh and the table legs will be separate models as well. Can I then export them as a single object without issue? Will the unwrapping be applied to the separate submeshes individually?

What I’m taking away from your comment is that I need to UV unwrap the mesh and then adjust the UVs until the checkerboard texture looks right?

Every 3D mesh has its own representation in UV space (every vertex, edge, triangle). You can combine meshes or separate pieces and their UV maps will be joined or split.
Exporting UV’s is generally no problem, but sometimes they can get lost due to import/export settings with some file formats, so there is room for confusion/mistakes.
FBX however should be fine.

Here is an workflow tip: If yu have lots of identical meshes - unwrap one THEN copy it.
Don’t create 7 identical meshes and then unwrap all 7 of them individually.
Also, there are certain mesh operations that do get performed on the UV’d mesh, meaning you can apply them after unwrap and the UV map will be fine - insets, sliding edges, doing cuts, dissolving edges.

Ok so I got it. I thought that a cube will be UV unwrapped by default and that’s why I don’t need to mark seams and UV unwrap, but apparently I was mistaken.

I made an image explaining my process, but essentially I just added an Image Texture to my object in the Shading tab and made a new image Texture (Generated type = UV Grid)

Then I marked the seams of my object and UV unwrapped it and it immediately looked like I wanted it to.


Thank you for your responses. I though this would be unnecessary for a scaled cube, but I guess it is still required even for primitive meshes.