I know that Unity uses meters by default, but I want to be able to change that. I have had multiple scaling issues while making my building in 3ds max, and I want to have access to the units settings for unity to double check that it is right now. I know that similar questions have been asked before, but they only tell how to change gravity. I need to change DISTANCE and MEASUREMENT units. Gravity is working just fine for me right now.
You could make a converter class which multiplies everything by the conversion factor, but it sounds like this is an issue for importing 3ds models. I would look into a post-processor on the model importer, see http://unity3d.com/support/documentation/ScriptReference/AssetPostprocessor.OnPostprocessModel.html Basically after the model loads you could wrap it in a transform which applies the scale, or crawl its hierarchy to apply the scales, or modify the meshes, etc.
Now with VR they have actual meaning. They are everything for VR!
I have been struggling with this as well. The consensus is that they are “units” and not meters. But as an architect I strongly disagree with this school of thought. Units are relative to your daily life, just as language is. How are you supposed to reference a word if you don’t know the language?
Measurement units are all about reference and your point of view.
So for all of you out there struggling with this, the answer is simple. If you are using 3DS Max or Maya, simply just build whatever you are building as if each unit was 1 foot. Then, right before you export it, scale your entire scene up * 0.3048.
This will make it come into unity at the correct scale, and also allow you to model at a relative scale.
Units of distance and scale are meaningless and relative to nothing. Call them meters, inches or lightyears, it affects nothing.
The only thing that it does affect if force and velocity calculations by the physics engine. But since you control this all you have to do is take it into account. The only hardcoded place where you need to adjust the force is under gravity settings, because all the other physics settings are done through code by you yourself.
So to change the units of measurements, pick a word for how you call them (mine are Joshuas, plane that is 9 square Joshua). Now decide what the scale of this unit is compared to meters (mine are 1! :p) and divide the gravity by that. From there on it’s just a matter of imputting the right force and velocity variables.
So the reason all you can find on changing measurements is changing gravity is because changing measurements is useless, as they are meaningless units. They are just used by the physics engine, so change how it uses them.
Units and scale have meaning in physics (2011) and VR (2019), and now with URP and HDRP units and scale have actual meaning when dealing with lighting and light falloff, too. If your scene is way too large you will need to crank values of your light intensity to astronomical values. That may in and of itself not be a problem, but then directional lights don’t have light falloff and so will use intensity values that are calibrated for standard scale. So if your room is too big, a point light may need intensity of 1000+ to equal what’s being output by an intensity 1 directional light.
Using correct scale also allows artists and coders using marketplace assets to minimize overhead when importing/exporting, so we don’t end up with one model that’s the size of the moon and another which is as small as a toenail.
Given the importance of scale in modern rendering pipelines, and the de facto (but unwritten) standard that Unity uses of 1 unit = 1 meter, Unity should prioritize supporting standard units and scale within the program, and should allow the user to input custom scale factors to ensure that all projects are able to work in meaningful and accurate units.