I think you are both putting a little too much importance into units in 3D. In the real world, we have units (metric or imperial) because they actually mean something. The unit is agreed upon and defined based on some physical law (e.g. speed of light) or some prototype (e.g. the platinum metre in Sévre), both of which also exist in the real world.
Now, in virtual 3D worlds, we have no prototypes, and we have no laws of physics, so everything is relative and we can ourselves decide what unit system we want to use.
This can, and does, mean that any two tools might use different scales for their units. A scale that is considered big by one tool might actually be considered really small by another.
This also means that real-life units (e.g. metres, centimetres, inches, feet, yards) are all just meta-data that doesn’t actually mean anything more than a decimal point does. Sure, two objects that are both size 1 will be differently scaled if one has it’s size tagged with the “metre” meta-data and the other with the “centimetre” meta-data. But it’s not like these objects will actually match anything outside of the virtual world, and the unit meta-data is just a scale factor where “cm” means “multiply by 0.01”.
In some tools you can configure the program to use real-life units, but again, that’s just to simplify your authoring. As long as you’re not going to transfer your content into the physical world (e.g. if you’re doing CAD to plan an actual construction) the only thing that matters is the relative size between your objects (and things like where your camera is located, et c.)
To prove this, create a default cube in Blender and export it as OBJ. Open the OBJ file in a text editor and read the data. It will reach from (-1,-1,-1) to (1,1,1), so it’s 2x2x2 units big. Note that OBJ does not support unit meta-data, so the measurements are not given as metres or any other real-life unit, but just implied, anonymous scalars.
Now, configure Blender to use metres instead and export the OBJ again. You’ll see the exact same measurements in there. That’s because Blender knows very well that real-life units have no meaning in virtual worlds, so it actually keeps it’s no-unit representation internally, and that’s what the exporter uses.
Try again using Imperial units. You’ll see the same result. The cube still comes out as 2x2x2, even though completely different measurements are represented in the Blender UI.
So, where does this magic 2% (0.02) come from? Probably because a default cube in Blender is 2x2x2, whereas the default cube in Away3D is 100x100x100, i.e. there is a 0.02 ratio between the two. As we’ve seen, it doesn’t matter whether you configure Blender to use “no” units, metric units or imperial units. The exported output, and therefor also the ratio, will be the same.
Now, the unit meta-data still exists in Blender, because there are file formats that support unit meta-data, like CAD formats for example. That’s because in CAD the unit actually means something, because ultimately the goal is to end up with a physical product. If you’re not going to end up in the physical world however, trying to bother with units like this is just a waste of time and brain cycles.
So how do I recommend you work? Well, here are a couple of pointers:
- “Away3D units” are just scalars, so you can give them whatever meaning you want. If you’re on a project where all measurements for the models are given in feet, you can decide that 1 unit in Away3D == 1 feet. If units are given in mm, you can decide that 1 unit in Away3D == 1 mm. That should keep the math simple enough. If you ever need to display some real-life unit to the user (e.g. kilometres travelled in a game) you can easily calculate it from the number of “Away3D units”.
- Agree on a scale within your team before starting asset creation. If you decide that 1 unit is 1 centimetre, tell your modeler about that, and they can model their objects according to that scale. As long as all models are correctly scaled relative to each other everything will look fine.
- There is no “better scale” and the main reason why some tools use one scale and others use another is just legacy. If you prefer having small scales like in Blender, you can of course configure Away3D to work well with those as well, by for example moving the camera closer and setting it’s far/near clipping distances to smaller numbers than the defaults.
I hope this helps clarify some things!