Robert Rioux writes:
So, you need to exchange geometry or animation from one software to another? Let's see what are your options.
Robert Rioux writes:
So, you need to exchange geometry or animation from one software to another? Let's see what are your options.
14 Comments
I'd like to know how OBJ doesn't have scaling issues. As far as I know, it does not encode scaling information.
Exactly. But it does use a unit. That unit is be adapted to the software itself. So in Blender, Maya, Nuke etc the default unit is 1unit = 1 meter. So if you make a cube that is 1x1x1 meters in Blender, it will also be 1x1x1 meters in the other software.
It is my understanding that OBJ does not explicitly use units, but rather encodes them in the comments. This is the reason why it doesn't universally work. I think all the software you use knows how to interpret this information embedded in the comments, but that is a coincidence... Not all the software I use does, and I get scaling issues.
Well, I just Mae a 1x1x1 cube and this is part of the code where it defines the vertices position:
o Cube
v -1.000000 -1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v 1.000000 1.000000 1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -1.000000
So Maya, Blender, Nuke, Houdini will place these vertices exactly there. So if Maya/Nuke/Houdini's default is 1 unit = 1 meter, you get exactly that.
Which software is giving you trouble with OBJ scale?
You've just illustrated the problem. OBJ does not explicitly express units, so if the source app's units are different from the destination app's, you get scaling issues. Exporting OBJ from, say, Daz Studio to Blender exhibits the problem.
Somebody in the comments beneath explained that Daz uses 1 OBJ unit = 8 feet. Daz is the problem, not OBJ.
Thank you for this analysis. I use Better FBX but you taught me a few things. You also seem to be confirming that: Open Source = good, proprietary = bad.
Proprietary = buy our stuff, open source= let's work together.
Alembic, USD and VDB are open source :-)
Exactly. This is not a nerdy point but a very practical one. The open source formats work because the developer integrating them could look at the format's source code and figure everything out. FBX is locked away in the bowels of Autodesk HQ.
The problem is not that some apps are y-up and others are z-up. It is that some have a right-handed coordinate system and some have a left handed system.
The difference from y-up to z-up is not just a rigid rotation of 90 degrees; it's also mirroring, i.e. (x,y,z) => (x,-z,y). This is not apparent if the object is symmetrical with respect to the y-axis.
I never had issues with mirroring. Which software combination gives you that?
OBJ has considerable scaling issues which may or may not crop up depending upon which 3D applications you use. Some 3D applications use 1 OBJ unit as one metre (Maya, Blender) while Poser and DAZ Studio scale everything as 1 OBJ unit equals 8 feet, which is about 2.4 metres! Another application I have used (sorry, forgotten it's name, haven't used it recently thank goodness) adds a comment line to the .obj file to announce scaling; no other application reads this line so the scale you get if you import such an .OBJ into Blender or Maya is anyone's guess. I imported a woman into Blender once from that program as an .OBJ and she was as tall as a four storey building exported by the same application! This was because it normalises the scale so the smallest coordinate is 0 and the largest is 1, then adds that scaling comment line along with a similar line for defining the origin. Oh, and Carrara uses yet another meaning for the .OBJ unit size, though I cannot recall what it is.
If it doesn't crop up in your workflow you are fortunate, but not having a proper defined scale IS a problem.
If Daz considers that 1 OBJ unit is 8 feet, OBJ is not the problem. Daz is. There's also the issue that some people model with an arbitrary scale. They make a car, a boat or anything but they don't care about the scale of it. Sometimes when I deal with very small or very big objects, I won't care about the scaling until I'm done, then I will make it the right size. Some people don't. And they should do push ups.
Neither is the problem. Both are the problem.
The definition of units is completely arbitrary and there is no universally "correct" choice. But it remains true that Wavefront OBJ isn't going to help you. But one could also easily argue that it is correct for an interchange format to be agnostic with respect to scaling because scale is not a local property of the object.