Units setup in 3ds max
I have read every thread I could find and the answer was not found.
I have set up my 3ds Max System Unit Setup to be 1 Unit = 1 Meter.
Then, under Units Setup, I also choose to work in Metric, Meters.
When I create a 1x1x1 meter cube, it is extremely tiny. When I import it to Unity, it is also extremely tiny.
Everyone seems to think that the units of measure in Unity are meters. Therefore, what anti-intuitive step must be taken in 3ds Max to ensure that the units are properly set?
It is useless to say that "the units are what I want them to be." When creating the model in 3ds Max, I prefer to work with a known scale. And I do not want to any re-scaling of the imported FBX in Unity, so as to ensure a tidy workflow.
Thanks in advance.
I don't use 3d $$anonymous$$ax so i can't really tell, but a unity unit can be pretty much everything you want: a meter, a micrometer, or a kilometer, 3.78 centimeter. It is all relative. In blender the units transfer 1 to 1. $$anonymous$$eaning one blender unit is one unity unit when you import a modell. Independant of this, you can choose a scale factor for each individual modell. Again: I don't know about 3d $$anonymous$$ax, but in blender you get a rotation offset when importing. This is due to unity using a left handed coordinate system (who's idea was this anyways?).
The idea here is to streamline workflow by doing no scaling at all. I want to build the model in true world dimensions, and have it import into Unity at the exact same size. No scaling done at any point. I discovered where the bug/error is, and have described it below.
Answer by greenevo · Feb 09, 2014 at 03:04 PM
thx for your help - just a short overview
3ds max settings: Metric / 1Unit = 1 cm
FBX export settings: change the Scale Factor from "automatic" to "scene units converted to:" - "Centimeters"
Unity settings: leave the scale factor 0,01
Answer by CS_ · Jun 01, 2015 at 09:30 AM
When you change your unit(s) in 3Ds Max, you MUST change your system units as well
So, if you want 1mx1mx1m box to be appear as same as 1x1x1 in Unity;
In 3Ds Max, go to 'Customize->Unit Setup'. Check Metric and set it to 'Meters'
Click on 'System Unit Setup', then another window will pop up.
Change '1 Unit = 2.54 Inches' to '1 Unit = 1 Meters'. Then change 'Distance from Origin' to 0.
Create a 1mx1mx1m in 3Ds Max, export it, just set Unit Conversion option to Automatic.
If you see scale factor as 1.0, then Unity will import asset as 1.0 scale(ie. 1m scale).
If you noticed, when you make 100cm x 100cm x 100cm box in 3Ds Max and set conversion to centimeters, scale factor automatically changed to 2.54. That's because system scale was set to '1 Unit = 2.54 Inches'.
Answer by Wyloch · Jun 04, 2013 at 02:49 AM
UPDATE: Tried some out-of-the-box googling, and may have finally found the answer.
Suppose you model a 1x1x1 meter cube, and want to export it to FBX for use in Unity.
In 3ds Max, when you set up your units, select 1 Unit = 1 cm. Do not use the sensible assignment of 1 Unit = 1 meter. Obviously, this appears to create an inconsistency, because an object imported to Unity will be imported at 1 Unit = 1 meter. But wait and see...
When you export to FBX, leave your scaling at 1. Leave it as 1 cm = 1 cm. In other words, do not do any scaling whatsoever.
When you import to Unity, you will get a properly scaled model. Clearly, this is not what is expected. You've exported a cube that is, in terms of raw units, 100x100x100. When Unity does the import, we know that it does so at a scale of 1 Unit = 1 meter. So the cube should appear enormous in Unity. Alas, it appears in the Unity scene properly scaled.
So where is exactly is the bug? Unknown which of the two is the culprit. Somewhere in the workflow, there is a divide by 100 being done where it shouldn't. To work around this error, set your 3ds Max system units to 1 Unit = 1 cm.
UPDATE: From your Project pane, you will see your FBX model. Select it. In the inspector, there is a field called "Scale Factor." For me, it was set to 0.01 by default. This fully explains the 100x scaling. Solved.
Answer by CMaxo · Feb 17, 2014 at 04:28 AM
If you want to have Unity fully recognize the exact units you used in 3DS max without any conversion, there's how you can do it naturally :
1) Set 3ds Max unity to "Generic". From then, consider that 1 unit = 1 cm even if it's not written anywhere.
2) Once you're done with the meshes, export it as an FBX. Leave the export setting as default. In case you modified it, make sure that the "Unit" conversion is set to automatic. (It's a check square above the list of unit you could wish to have the current 3ds Max units converted to)
3) Import it as that in Unity (you can literally drag and drop the asset from its folder into Unity's folder.)
From now on, in Unity, the asset will have exactly the size you wanted it to have. The thing thought is that Unity will show its size in meters and not in units (centimeters) like 3ds Max. 100 Units in 3ds Max with the automatic conversion option on is equivalent to 1 meter in Unity. (And logically, 100cm = 1m)
If you want to test if things work correctly on your end, simply make a cube with 100 units on its sizes in 3ds Max. Do what I wrote above and export it into an FBX in Unity. Once in Unity, simply bring the cube on the scene and check its size. If it's size is 1/1/1, you're all good. If you still need to confirm it, just create a normal cube directly in Unity and that cube will have a 1m/1m/1m size.
If you do with the same units but with Meters or centimeters in 3ds Max and force an unit conversion, the size of the cube in Unity will be of 2.54/2.54/2.54 while it will have the size of a 1m/1m/1m and that means that the 1/1 ration size of the thing you made is of 40cm instead of 1 meter while in Unity.
Answer by ali raza · Feb 25, 2014 at 01:25 PM
The default Unit System of Unity is Centimeter....Set the System Unit in 3dsmax to Centimeter(Customize->Units Setups-> System Unit Setup). Make sure You set the units to centimeter in System Unit Setup and not the display unit scale. Create a Cube of 1cm X 1cm X 1cm. Export it FBX with Units setting "Automatic" Checked. Now import it in Unity. When Imported check the Scale Factor of Mesh "It should be 1". now load it in unity scene. Create a unity cube of 1 X 1 X 1. Now both the cubes will be of the same size.
Did you notice the conversation you replied to was started in 2013?