Hi Ulrich, Paul, and all,
I agree we should unify the coordinate system during loading AND writing. Here
are my suggestions :
- Have plugins do NO rotation by default (reading and writing) when the format
doesn't have coordinate system information (that is to say all but FBX and
maybe FLT).
- Have plugins read and apply coordinate system information if available by
default when reading.
- Have optionnal READING options:
- readXup, readYup, readZup to suppose model is X, Y or Z-up (overrides
format's coordinate system information)
- readLeftHanded, readRightHanded (similar setting)
- When in conflict (two options defined), use the latest one
- Have optionnal WRITING options:
- writeXup, writeYup, writeZup, writeLeftHanded, writeRightHanded (which
should almost never be supported, in my opinion)
- Let plugings optionnally support these options prefixed with their name and
"_". For instance "3ds_readYup" would assume ONLY ".3ds" files are Y-up. These
would take precedence over the general settings.
- Also support "pluginName_read/writeAutoUp" and
"pluginName_read/writeAutoHanded", which would specifically deactivate a global
setting for a given plugin. For instance, "fbx_readAutoUp" would let the plugin
decide the up vector (here using coordinate system information in the .fbx).
"3ds_readAutoUp" would mean "no rotation" for .3ds.
- Write a portion of code somewhere in osgDB to parse all these options and
store it in a nice structure (to avoid each plugin duplicating code). To be
called with something like "myStructure =
osgDB::readStandardCoordinateSystemOptions(PLUGIN_NAME)".
- As OpenGL doesn't have a "etched in stone" orientation standard, use the
osgGA as an "internal" standard (that is to say +Z up, right handed) when a
change is needed.
1. Please raise your hand if you agree, and tell about changes you'd like to
introduce in this summary.
2a. Please mention all plugins you know which break these rules.
2b. Please tell if you agree modifying those plugins.
When all is ok, I'll code it.
Cheers,
Sukender
PVLE - Lightweight cross-platform game engine - http://pvle.sourceforge.net/
----- "Ulrich Hertlein" <[email protected]> a écrit :
> On 29/12/09 6:52 PM, Paul Martz wrote:
> > Paul Martz wrote:
> >> I've noticed the same thing with OBJ.
> >
> > A little digging reveals that the OBJ plugin has a "noRotation"
> Option
> > that disables the x axis rotation. The rotation is only done on
> file
> > load, not on file write.
> >
> > Rotation about x is on by default. I'd suggest a change to off by
> > default, and the Option changed to "doRotation" to enable it.
>
> The .x plugin has 'leftHanded' and 'rightHanded'. Maybe we could
> establish a common
> option for this type of functionality (one that does 'convert to
> right-handed, Z-axis up').
>
> There already are options with (apparently) related functionality
> (courtesy of 'osgconv
> --formats'):
>
> Coordinate system:
> obj:noRotation
> x:leftHanded
> x:rightHanded
>
> Optimization:
> obj:generateFacetNormals
> obj:noTriStripPolygons
> stl:generateNormals
> stl:smooth
> stl:tristrip
>
> Image orientation
> hdr:NO_YFLIP
> hdr:YFLIP
> x:flipTexture
>
> Cheers,
> /ulrich
> _______________________________________________
> osg-users mailing list
> [email protected]
> http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org
_______________________________________________
osg-users mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org