Hi Robert,
It could be the DOF local coordinate system. I recommend going to the
MPI website and download the latest version of the specification for
details on the DOF record.
Regards,
Brede
On 12/6/06, Robert Nitti <[EMAIL PROTECTED]> wrote:
Hi –
I loaded an OpenFlight model with several DOFTransforms. I noticed, upon
looking in the debugger, that the InversePut matrix of the DOFT(s) seem to
have all its values in absolute coordinates despite several DOFTransforms
being children of other DOFTs; I know they are children because I parse the
scene graph and I see that one DOFT is a child of another, etc. The
Transform::ReferenceFrame clearly states that the values are in RELATIVE_RF,
but it's obvious by just looking at the model (and in the debugger) that the
values could not possibly be relative; if they were the subordinate parts of
the DOFT would be way off the model; but they are not. They are spot-on and
when I animate the DOFTs, everything seems to work perfectly. All the
(sub)vertices also seem to be in absolute.
I'm not very familiar with the OpenFlght standard, so I don't know if it's
the model that's build that way, or if it's OSG's interpretation when it
imports the model. If the O.F is build that way, then why does OSG say
RELATIVE_RF? If its OSG, is there not some redundant calculation being done
since the values appear to all be in absolute; but they must as some point
be converted to relative, no?
I've provided part of the callstack of the 2 DOFTs (that are of concern)
below. The cannon should be relative to the turret. And just looking at
the model, there is no way the cannon is ~2 meters away (in both y, and z
axis) from the turret if they are relative to each other. It just doesn't
make sense; however, it looks fine in the visual – so values are somehow
interpreted properly. In Z, they should be about 15cm away (ie:
2.0553188323974609 - 1.8663945198059082) from each other but its showing
2.0553188323974609m.
Any help would be appreciated.
Thanks
- osg::Transform {_referenceFrame=RELATIVE_RF } const osg::Transform
+ osg::Object {_name={"TURRET"} _dataVariance=DYNAMIC
_userData={_ptr=0x00000000 {_refMutex=??? _refCount=??? _observers=??? } } }
osg::Object
- _inversePut {_mat=0x0aa3fa90 } osg::Matrixd
- _mat 0x0aa3fa90 double [4][4]
+ [0] 0x0aa3fa90 double [4]
+ [1] 0x0aa3fab0 double [4]
+ [2] 0x0aa3fad0 double [4]
- [3] 0x0aa3faf0 double [4]
[0] -0.0068642422556877136 double
[1] 0.082249075174331665 double
[2] 1.8663945198059082 double
[3] 1.0000000000000000 double
- osg::Transform {_referenceFrame=RELATIVE_RF } const osg::Transform
+ osg::Object {_name={"CANNON"} _dataVariance=DYNAMIC
_userData={_ptr=0x00000000 {_refMutex=??? _refCount=??? _observers=??? } } }
osg::Object
- _inversePut {_mat=0x0ab78d80 } osg::Matrixd
- _mat 0x0ab78d80 double [4][4]
+ [0] 0x0ab78d80 double [4]
+ [1] 0x0ab78da0 double [4]
+ [2] 0x0ab78dc0 double [4]
- [3] 0x0ab78de0 double [4]
[0] -0.0068642422556877136 double
[1] 1.5622954368591309 double
[2] 2.0553188323974609 double
[3] 1.0000000000000000 double
_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/
_______________________________________________
osg-users mailing list
[email protected]
http://openscenegraph.net/mailman/listinfo/osg-users
http://www.openscenegraph.org/