Is it possible to change the coordinate system?

Is it possible to change the coordinate frames ? I am trying to migrate from my custom engine, which used Y+ UP, RHS. And the units were in centimeters. What would be the best way of migrating all my assets and maps ?

Is there an automation library one could use to generate umap files programmatically ?

Hi Tansien,

Awesome! That’s great that you want to use UE4!

You can’t configure the Up Axis in UE4 - but we do convert assets that we import if we know what coordinate system was used by the DCC tool that exported the FBX file. So assuming that information is present - it should just work. Also Unreal uses centimeter units by default - so you’re set there.

If the FBX importer is unable to figure it out it just leaves it as is, and you’ll need to fix it up in whatever tool it was modeled in.

Your maps are going to be a lot trickier, as they’re likely in a format we can’t import. What you could do is make a simple importer command line operation that lets you give it a file name, and you write some code in our engine to parse your map files, and create the instance of the static meshes in our engine, or other objects you’ve created parallels for in blueprints or whatever in order to recreate your maps.

Cheers,
Nick (Epic Games)

Ah, so there is a use for the ‘coordinate system used’ variables in the FBX file, nice to know that unreal respects this.
Is there an automation library that would let me manipulate .umap files from code ? So that i can write a converter from my simple format (which is basically just static mesh references and lights) to an umap

Yeah there’s a similar thing in Unreal. We call them Commandlets, but there’s a fair number of caveats on what is loaded when they run. My recommendation would be to just write a plugin.

We’ve got some plugin documentation here, Plugins in Unreal Engine | Unreal Engine 5.1 Documentation

And there is lots of general information here, https://docs.unrealengine.com/latest/INT/Programming/index.html

I would look at some of the plugins we ship in the “Engine\Plugins” directory.

Once your plugin is loaded you can access the bits of the running level and spawn actors and static meshes based on the file you’re importing and they’ll be saved when you save the level.

I use Cinema4D (Left Handed Coordinate system) Y-Up.

UE4 seems to deal with importing my mesh “mostly” fine. Ideally though I suspect that I would want my Skeletal Meshes to be rotated to face down X on import, currently a lll static and skeletal meshes end up facing down Y.

Is this an option that could be added?

The thing that is really bothering me is the look at for skeletal meshes - as in don’t wheels have to rotate around the Y Axis and move forwards alone the X etc.?

Anadin, is it mirrored on one of the axes ? (so no matter how you rotate the camera around it, you can never get it to face the right way?)
If Cinema 4d writes FBX files set with LeftHanded AxisSystem, there’s a bug for all consumers of FBX SDK (including UE4, Max, Maya) where the call to ConvertScene on import cannot deal with the case of different source->target handedness. I’ve fixed this by exporting my LHS Y-Up source data as RHS Y-Up, and manually mirroring vertex data. I made a forum post on autodesk FBX forum about it: http://forums.autodesk.com/t5/FBX-SDK/FBX-SDK-FbxAxisSystem-ConvertScene-cannot-change-handedness/td-p/4996498

And all of this is a major shame since UE4 is left handed as well, just both max and maya are RHS so they tailored the FBX pipeline to accept RHS.

Unfortunately its not mirrored as much as just 90˚ as in all the models end up facing down the Y axis.

Original Model in C4D - note the Z going into the screen and X to the right

I’ve hit some max size for this post so linking to the rest now…

Same model in UE as a Static Mesh - Not Y Axis coming out of the Front (Z-Up is all good)

https://dl.dropboxusercontent.com/u/4780157/C4DUEXForward/Screenshot%202014-05-05%2015.12.55.png

And if I make it a skeletal mesh the joint not only faces down Y, its Z is down

https://dl.dropboxusercontent.com/u/4780157/C4DUEXForward/Screenshot%202014-05-05%2015.17.39.png

Link to Binary and ASCII versions of these two FBX’s

https://dl.dropboxusercontent.com/u/4780157/C4DUEXForward/C4DOrientationProblems.zip

Unfortunately C4D has no options to change orientation on export like Blender/Maya/Max etc. It is something I have requested though.

So if I look at the character in the 3rd person tutorial he is also facing down Y which makes me think it is OK to do so? As I said before I am more worried about skeletal meshes that are not moved my a capsule (vehicles?) and perhaps if root motion gets introduced.

Of course the axes will change, because the coordinate systems are different, everything will get converted to UE4’s axis system on import. What’s important is that Up stays Up, and Front stays front.

Sorry to be a pain here but that’s my point. For me and the 3rd person control demo character (HeroTTP). Which I suspect came from maya. The models are importing with front facing down their own (and the worlds) y axis. The fix in the third person project is to rotate the character in its blueprint 90 degrees. Isn’t front in UE Supposed to be pointing down the x axis?