Asset import from 3dsmax : rotation issue

Hello all,

A quick question. I've got a pre-fab that contains my 3D object that i created in max. In max the object sits at (0,0,1/2) and rotated (0,0,0), however, when Unity grabs hold on the auto-asset import, the model is rotated -90 degrees on the x axis in Unity, so it's like it's laying sideways / fallen over.

Is anyone aware of issues with rotations changing like such?

Can i create a pre-fab from instantiated objects in my level currently? So that it can manage to hold the rotation for a quick hack fix?

Thanks!

Bryan

Yeah. I also had that extremely aggravating problem, except I was importing from Blender. There are several ways to fix this. Yes, you can do a hack fix by creating a prefab of the object, where it sits in an empty gameobject, rotated correctly. Any scripts applied to the object, you then apply to the prefab instead. This will ensure correct rotation, and correct behavior - if you rotate it and leave it outside of a gameobject, the axes will be pointing in funny directions. Another fix is to import it to Blender, bake the animations, and export as an FBX. Also, check the import settings and make sure there are no automatic rotations applied on import. Hope this helps!

As said, all you need to do is adjust the pivot.

In 3DS Max, you need to make sure in pivot rotation that the green arrow points up.

Easiest way to do this is select object, goto pivot tab, select affect pivot only, reset pivot, rotate pivote by 90 around the x axis

There is a problem with the rotation when you import from max the x goes to 270 degrees . But the model is imported straight. It is an unnecessary Unity bug. If it comes by default on the side then apart from the bug there is a problem with your model. (At least with the latest fbx exporter available) here . To make sure that at least in max your model is correct. go to utilities and add resetXform then collapse the stack.

The old Skool way to resetxform in max (and Maya), is to create a cube at 0,0,0 -convert to poly - assign the same material with the model - attach your model - go to element mode select cube and delete. This way your pivot point will become the one of the deleted cube but you can do it with the xform utility too by moving the center and gizmo.

The game objects as elbon 96 said have 0,0,0 rotations so you can do your scripts there.

In 3DS Max, make sure your pivot is rotated properly.

For example, I had a bowling pin that was upright in my views, but the pivot was showing that Z was vertical and Y was horizontal.

To rotate your pivot in Max:

  • Turn on "Angle Snap Toggle."
  • Go to your Hierarchy command panel>Affect Pivot only and rotate it.

When you save, your Unity file should update.

I tried to modify the pivot point as described here (http://x9productions.com/blog/?cat=3&lang=en_us&paged=4) but it strangely makes no difference, still it may work for others.

Max 2009 FBX 2009.3

I went with the empty game object method, for a quick fix it works a treat.

First use the "box method" to reset object transforms in max and then center the object and adjust the location of the object axis. This ensures that you have no funky transforms applied to the object axis before the next step.

For any object in 3D Studio Max before exporting also: rotate the object axis about the x axis 90 degrees within Max so that x(the red axis)remains the same, the blue axis points along what would be unity's z,and the green axis now points downward. Again, red stays the same (pointing right), the blue along the z forward (into the screen from front view in max) and the green pointing down.

You're not done yet. Export FBX to unity. Within unity ensure that BOTH the object's game object folder and the mesh object have 0 rotations. Unity's rotation scheme is a work around for 3D Studio Max's unique coordinate system. After setting Unity to 0, you should have an object that is oriented properly without rotation transforms within unity.

I would guess that the fewer transforms Unity has to put on an object just to get it scaled and oriented properly for the app., the quicker the object will render, so this could have a performance boost to get your rotations worked out ahead of time?

This problem is more with Max than Unity and goes way way back.

I'm using an older version of Max and FBX converter. Perhaps this has been fixed.

I fixed this issue (using Blender) by exporting as a .3ds instead, then re-importing this into unity.

Worked like a charm, but bizarrely enough the prefab’s mesh is now rotated by 270 degrees in the preview, but instantiates fine.

Using 3dsmax, look at the toolbar to the right. On the right most tab tou will see a hammer. CLick that. Select your mesh Then click the button called Reset XForm. Next click the bottom button that says “reset selected”

There are 2 ways to make it works in 3ds Max. One is easy and work with animated and unanimated objects and the other only works with object without animations.

First, a ResetXForm which is available in the Utilities tools menu which also require you to collapse everything in the Modifier list can work for meshes without animations. If you do it on something that include animations, the animations (and armatures) will be broken (as each bones will be reseted to their initial position) So DON’T USE RESETXFORM WITH ANIMATED MESHES!!!

For animated meshes, but it can also work with ANYTHING, you can simply rotate the pivot master. If you didn’t made any master or if, as an example, you have “multiple” part animated separately, you should first create a dummy and then link all the roots asset to that single dummy. It will also ensure that everything will rotate without any errors in the translation.
Then, you select the dummy (which you should rename with the name of your asset), select the Hierarchy menu (a white square with 3 with square under it), click on the Pivot tab, click on “Affect Pivot Only” so that it’s blue/activated. Then you rotate the dummy 90/0/0 with the world Coordinate system selected.(DON’T do it manually. Simply enter the number 90 in the bottom coordinate/rotation field. A single 0.001 degree of difference can means huge problem, which happen often when moving the meshes manually.)
Then click again on “Affect Pivot Only” to disable the option. After, if you want to make sure everything is fine, look at the (WorldCoordinate) rotation of the dummy which should now be at 90/0/0. Change the dummy rotation to zero and it should face upward.

Export the FBX with the axis conversion at “Y-UP” and once inside Unity, everything will be find. :slight_smile:

That will fix the direction difference in Unity.

So I have a problem where the editing gizmo for the actual gizmo disappears. When I choose on or allow multiple gizmos it shows up for a second then goes away. So I cannot rotate it. I can move it but nothing else.