One of the tricky part when working on a game development pipeline is dealing with the different units and coordinate systems of each platform. Currently I’m working on projects based on Autodesk 3ds Max for assets production and Unity 3D or Unreal Engine for game development. It’s very easy, while continuously switching from one platform to another, to get stuck on a cross product or an UV based shader routine because you are not sure what coordinate system you are dealing with. While a trial and error approach can be fast and effective with very simple situations, it can easily lead to an explosion of combinations when the number of variables grows up. Thus I decided to write a series of articles as a memorandum about the different conventions in 3ds Max, Unity 3D and Unreal Engine. In this first article I will address UVs. Here is the complete list of articles:
UVs in Autodesk 3ds Max
You can see below the UV editor of 3ds Max. Here I’m using a grid texture with 10×10 tiles. I will export a quad with this texture UV mapped in order to compare UV coordinates in Unity and Unreal Engine. As you can see in the image, 3ds Max UV coordinates have the origin in the bottom left.
UVs in Unity 3D
I imported into Unity 3D the quad created in 3ds Max and then applied to it a material with the same checker texture. I set the tiling and offset values for the UVs in order to remap the UVs inside a square of 0.2 size (two tiles) starting at position (0,0.3). As you can see in the image below, the mapped portion of the texture is the same we would expect to see in 3ds Max UV coordinate system. Thus the two systems have the origin in the lower left.
UVs in Unreal Engine
The same test in Unreal Engine with the checker texture mapped with 0.2 tiling (two tiles square) and offset (0.1, 0.6) is shown below. As you can see, the mapped portion of the texture reveals that Unreal Engine is using a coordinate system with origin on the upper left. This doesn’t mean that you’ll get vertically flipped textures when importing stuff from Max to Unreal; the engine will fix the coordinate change during the import phase. You have to pay attention to the different UV system only when writing code involving UV coordinates.
And here are the UV coordinate systems for each platorm:
- Autodesk 3ds Max: lower left.
- Unity 3D: lower left.
- Unreal Engine: upper left.