- Home /
How would one properly use scaling/size of objects
I can make a ball and scale it to 1,1,1 but what does 1 mean? and is there more memory/processing used if I scale it to 10,10,10 or 100,100,100? And are there less resources used if I scale it to 0.01,0.01,0.01
what effect does the scale of an object have in the world, and what is generally the correct scale? I've noticed when importing models I've made that I can set the import scale, which is different from the models relevant scale. If I import it as scaled to 5 then it's 5x as large, but still says 1,1,1
There are the obvious issues, like with terrain painting. The paintbrush at size 1 can be either a very large brush, or a very tiny brush, all depending on the scaling. (I ran into that issue in the past when I scaled everything so small that the brush was huge at size 1)
Thanks :)
Answer by syclamoth · Oct 10, 2011 at 07:15 AM
Let me tell you about memory sizes!
When your computer stores a 'scale' variable, it is stored as 3 floats (or doubles, depends). Now, a float is a binary representation of an arbitrarily sized number- a 'single precision float' as they are called will always fit into 32 bits, whether they are 0.1 or 1000. There is a more precise version called a 'double' which uses 64 bits. One of the dangers of using floats is that they become imprecise at very small values, because there are a finite number of values which can be defined with 32 bits. This imprecision is what is called 'floating point inaccuracy'- it can cause all sorts of problems, from large things to very small. 'Integers' do not have this problem, since every possible integer value maps to exactly one and only one number- the only issue is that there is a hard limit to how large (or small) an int can be (which depends on how many bits the integer is, and whether it is allowed to go into negative numbers).
The things that take up more resources are detailed textures (they have more pixels, and thus require more memory), more complex models (more vertex data to store, despite the fact that every vertex is equal, and higher-bitrate music (lower compression ratio, better quality). Changing the scale of an object will make absolutely no difference to its size in memory, on your disk, or in your graphics card- in fact, the only difference is that there will be less room on the screen for other things - which could even be called an optimisation!
Answer by CHPedersen · Oct 10, 2011 at 07:14 AM
If you do a quick search you can read up on this in the following questions as well. I've supplied the links here for your convenience:
http://answers.unity3d.com/questions/39818/does-unity-3-use-si-units.html http://answers.unity3d.com/questions/14195/units-of-measurement-in-unity.html http://answers.unity3d.com/questions/146852/unity-scaleunits-and-mipmaps.html http://answers.unity3d.com/questions/140988/how-do-you-change-measurement-units-in-unity.html
To answer your question on resources (which is new, I'll admit), your computer doesn't care what you set those numbers to, it doesn't affect its usage of resources. The scale is stored as a Vector3, whose components are floats, and a float takes up 32 bits. As far as your computer is concerned, what those 3x32 bits say is completely irrelevant, using 32 bits to store the number "0.01" makes no difference from using 32 bits to store the number "100".
The import scale is just what it says it is - a scale applied on import only. The model you're importing has some size defined by the points in its file. The import scale resizes that and thus redefines what Unity considers 1,1,1. But the numbers themselves are unitless.
As is also mentioned in the links, if you feel you must apply some meaning to them, it is recommended to go for meters, because Unity's default gravity is set to 9.82, the unit of which is m/s^2, so it makes physics in your game easier to set up.