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!
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.
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”.
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.
@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.
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.