Scaling issue from 3DMax to Unity

Hey all,

I’m having serious issues trying to figure out how to get the correct “conversion” for my scaling of models when I export from 3DMax into Unity (fbx). I’ve researched this forum up and down and have found some answers, but none that really work for me.

I know about the import settings mesh scale factor (default .01 I believe) but what scale does my Max have to be at in order for that to work.

Ultimately, I would love to have the ability to work in feet and Inches within Max, then convert that over to Unity and have it be to scale.

Can somebody please help me out. It’s been days and I think I see a gray hair!

Thanks.

Hey… I just need to check that you have seen this part of the manual…

http://unity3d.com/support/documentation/Manual/HOWTO-ImportObjectMax.html

?

try to match those settings exactly and take it from there…

Hey Joe,
Thanks for the point to the manual, I hadn’t seen it before. However, it doesn’t answer my question exactly.

Basically what I want is to know what options / parameters to set in the graphic below (from max) and what mesh import size I should select in Unity to keep the scaling the same.

Thanks for the help so far!

101484--3908--$screenie_290.jpg

I know, my response will not exactly answer to your problem but…
I did some tests with differents export settings from Max :
I mean , inches, cm, m.

I export the same character 3 times (inch, cm, m), and resize after in Unity the character to have the __same siz__e in unity.

I discovered that performance was linked to the scale : export in inches+resize inside Unity is faster than export in cm or m + resize inside Unity.

The scale in perf was significative : from 25FPS to 3-6FPS

Regards,

Oh wow. Thanks for the tidbit of information. I had no idea that scale would even effect the performance.

One of the scaling ideas that i’m using to test scale is that I create a cylinder (in unity) and set the height to 2. I’m assuming that since the default unit of scale in Unity is 1 meter, that a height value of 2 is (roughly) 6 feet tall.

With that said, I’m still having issues exporting to fit the size. I can punch in random mesh scale numbers into the import window, but an import value of .075 means nothing to me in regards to exact scale.

To get a box made in max (1m) in to Unity with the same size as the unity made box, I just export the box with fbx in meters and set the the import settings in unity to 1 and my box from max is just as big as the Unity box.

(Edited)Yes scaled object decrease proformance, thats what I have been told be the greater beings at work (coders) so do it in the import setting.

Ps. -remember to use “reset xform” once in a while, to reset “bad scaling”.

Thanks for the feedback guys. It’s really helpful.

Has this been confirmed by the Unity3D staff?

I’d be very surprised if that were to be true.

Bye, Lucas

PS Which doesn’t mean it’s not a bad idea to do it at import time. I like having my runtime scale at 1,1,1.

I have edited my post sorry for the fuzz :wink:

So you’re saying to model in Meters with in Max, then import into Unity with a value of 1? Makes sense, I’ll give it a try. I was initially
modeling with a scale of centimeters in max and importing into Unity with a value of .01 — This whole process needs a revamp in my opinion.

I cannot remember, where I read the thing about the scaling. The following is based on a combination of my fuzzy memory and my own deductions.

As far as I know, when you set the “Scale” parameter in the transform to something other than 1,1,1 then a temp copy of the mesh is created with the scaling applied to the mesh vertices.

I believe this is done as an optimization, because usually there is no need to have the scale vary dynamcally. By not having to include scale in a transformation, the transform can be stored as a position offset plus a quaternion. 7 floats in all. And so can combinations of transforms (an object below an object, below an object, etc. such as a bone rig)
If scale was introduced, the resulting transforms would probably have to be stored (and processed) as 4x4 mattrices. This would not only eat storage, but also make them expensive to combine.

Now, if you do use scale in the transform hierarchy, this will either cause recomputation of temporary meshes, or a switch to 4x4 matrix math. I don’t know which, but this is the reason why it is better for performance to do the scaling in the import settings.

As I said:
“…greater beings”

@cblarsen - sounds logical, why scale and add another computation that could slow performance?

@holmeren - hilarious comment.

I’ve not been seeing a meter in Max as equating to a meter in Unity, plus I hate working in meters, it’s too big a unit - so I tested generic units in Max - a character 200 generic units tall ends up importing into Unity as a 2-meter tall character.

/ Brad Strong
www.3dcognition.com

This is the same method I use and seems to work well. I dont mind working in meters either. When modeling other props/elements for the scene I usually have a box that represents the same size/volume of the main character to use as a size reference when modeling new elements.