Re: [osg-users] Oddities when loading a FLT file

2012-11-12 Thread Paul Martz
I had another thought on this, Chris. Set a breakpoint in the Multiswitch 
constructor and verify that the "missing" Multiswitch is being created under 
both circumstances. Assuming that test passes, set a breakpoint in the 
Multiswitch destructor, it should get hit when the "missing" Multiswitch is 
deleted. Then you can look at the call stack and find out why and how it is 
being removed.

   -Paul


On 11/8/2012 7:55 PM, Chris Hanson wrote:


   I've encountered a strange behavior when loading a client-supplied FLT file
and I haven't been able to drill down and find an explanation. I think I know
what must be happening, but I can't find any mechanism to explain how.

   The customer has a TXP database which refers to a FLT model. The FLT model
has a named MultiSwitch node, which controls some LightPointNodes.

   The symptom is that if the FLT file is loaded by itself (into osgViewer.exe
for example) a NodeVisitor of ours is able to locate the MultiSwitch by name. If
the FLT file is loaded via the DataBasePager from the TXP file, the FLT loads,
but the visitor is unable to locate the MultiSwitch.

   Further investigation (adding debug code in a readfilecallback to save out a
temporary .OSG file) reveals that somehow the MultiSwitch is not even in the
resulting graph that gets produced from the FLT file. Converting the FLT file to
OSG via osgconv, or a simple readNodeFile+writeNodeFile at the beginning of
main() however produces an .OSG file that does contain the missing MultiSwitch.

   I've gone so far as to add this debug code at the beginning of main(), as
well as in the readfilecallback that is invoked when the databasepager loads the
FLT file:

osgDB::ReaderWriter::ReadResult result =
osgDB::Registry::instance()->readNodeImplementation("foo.flt",NULL);
osgDB::writeNodeFile(*(result.getNode()), "foo.osg");


   I use readNodeImplementation to ensure we're avoiding any callbacks.

  When execute from main(), this code produces a OSG file containing the
MultiSwitch. When copy & pasted to the readfilecallback, it produces a OSG file
lacking the MultiSwitch.
.
   I don't believe the osgUtil Optimizer is in play here, as the databasepager
runs that after the load returns. I don't think any of the FLT loader options (
http://www.openscenegraph.org/projects/osg/wiki/Support/KnowledgeBase/OpenFlight
 )like
preserveObject are affecting things, because I'm passing a NULL options pointer
in both cases.

   What else could be different between these two cases that could lead to a
different graph being produced from the same FLT file, and how do I unify this
to one (correct) behavior? (I wouldn't think preserveObject or other FLT loader
options would be optimizing out a MultiSwitch as redundant anyway, but perhaps
it's misguided.)


   Please grant me some sanity.


--
Chris 'Xenon' Hanson, omo sanza lettere. xe...@alphapixel.com
http://www.alphapixel.com/
Training • Consulting • Contracting
3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL
• OpenGL ES 1 • OpenGL ES 2 • OpenCL
Digital Imaging • GIS • GPS • Telemetry • Cryptography • Digital Audio • LIDAR •
Kinect • Embedded • Mobile • iPhone/iPad/iOS • Android



___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


Re: [osg-users] Oddities when loading a FLT file

2012-11-10 Thread Paul Martz
Are you sure you're getting the same FLT file in both cases? Echo the full path 
returned by osgDB::findDataFile().

   -Paul


On 11/8/2012 7:55 PM, Chris Hanson wrote:


   I've encountered a strange behavior when loading a client-supplied FLT file
and I haven't been able to drill down and find an explanation. I think I know
what must be happening, but I can't find any mechanism to explain how.

   The customer has a TXP database which refers to a FLT model. The FLT model
has a named MultiSwitch node, which controls some LightPointNodes.

   The symptom is that if the FLT file is loaded by itself (into osgViewer.exe
for example) a NodeVisitor of ours is able to locate the MultiSwitch by name. If
the FLT file is loaded via the DataBasePager from the TXP file, the FLT loads,
but the visitor is unable to locate the MultiSwitch.

   Further investigation (adding debug code in a readfilecallback to save out a
temporary .OSG file) reveals that somehow the MultiSwitch is not even in the
resulting graph that gets produced from the FLT file. Converting the FLT file to
OSG via osgconv, or a simple readNodeFile+writeNodeFile at the beginning of
main() however produces an .OSG file that does contain the missing MultiSwitch.

   I've gone so far as to add this debug code at the beginning of main(), as
well as in the readfilecallback that is invoked when the databasepager loads the
FLT file:

osgDB::ReaderWriter::ReadResult result =
osgDB::Registry::instance()->readNodeImplementation("foo.flt",NULL);
osgDB::writeNodeFile(*(result.getNode()), "foo.osg");


   I use readNodeImplementation to ensure we're avoiding any callbacks.

  When execute from main(), this code produces a OSG file containing the
MultiSwitch. When copy & pasted to the readfilecallback, it produces a OSG file
lacking the MultiSwitch.
.
   I don't believe the osgUtil Optimizer is in play here, as the databasepager
runs that after the load returns. I don't think any of the FLT loader options (
http://www.openscenegraph.org/projects/osg/wiki/Support/KnowledgeBase/OpenFlight
 )like
preserveObject are affecting things, because I'm passing a NULL options pointer
in both cases.

   What else could be different between these two cases that could lead to a
different graph being produced from the same FLT file, and how do I unify this
to one (correct) behavior? (I wouldn't think preserveObject or other FLT loader
options would be optimizing out a MultiSwitch as redundant anyway, but perhaps
it's misguided.)


   Please grant me some sanity.


--
Chris 'Xenon' Hanson, omo sanza lettere. xe...@alphapixel.com
http://www.alphapixel.com/
Training • Consulting • Contracting
3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 • GLSL
• OpenGL ES 1 • OpenGL ES 2 • OpenCL
Digital Imaging • GIS • GPS • Telemetry • Cryptography • Digital Audio • LIDAR •
Kinect • Embedded • Mobile • iPhone/iPad/iOS • Android



___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org

___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org


[osg-users] Oddities when loading a FLT file

2012-11-08 Thread Chris Hanson
  I've encountered a strange behavior when loading a client-supplied FLT
file and I haven't been able to drill down and find an explanation. I think
I know what must be happening, but I can't find any mechanism to explain
how.

  The customer has a TXP database which refers to a FLT model. The FLT
model has a named MultiSwitch node, which controls some LightPointNodes.

  The symptom is that if the FLT file is loaded by itself (into
osgViewer.exe for example) a NodeVisitor of ours is able to locate the
MultiSwitch by name. If the FLT file is loaded via the DataBasePager from
the TXP file, the FLT loads, but the visitor is unable to locate the
MultiSwitch.

  Further investigation (adding debug code in a readfilecallback to save
out a temporary .OSG file) reveals that somehow the MultiSwitch is not even
in the resulting graph that gets produced from the FLT file. Converting the
FLT file to OSG via osgconv, or a simple readNodeFile+writeNodeFile at the
beginning of main() however produces an .OSG file that does contain the
missing MultiSwitch.

  I've gone so far as to add this debug code at the beginning of main(), as
well as in the readfilecallback that is invoked when the databasepager
loads the FLT file:

 osgDB::ReaderWriter::ReadResult result =
osgDB::Registry::instance()->readNodeImplementation("foo.flt",NULL);
osgDB::writeNodeFile(*(result.getNode()), "foo.osg");


  I use readNodeImplementation to ensure we're avoiding any callbacks.

 When execute from main(), this code produces a OSG file containing the
MultiSwitch. When copy & pasted to the readfilecallback, it produces a OSG
file lacking the MultiSwitch.
.
  I don't believe the osgUtil Optimizer is in play here, as the
databasepager runs that after the load returns. I don't think any of the
FLT loader options (
http://www.openscenegraph.org/projects/osg/wiki/Support/KnowledgeBase/OpenFlight
)like
preserveObject are affecting things, because I'm passing a NULL options
pointer in both cases.

  What else could be different between these two cases that could lead to a
different graph being produced from the same FLT file, and how do I unify
this to one (correct) behavior? (I wouldn't think preserveObject or other
FLT loader options would be optimizing out a MultiSwitch as redundant
anyway, but perhaps it's misguided.)


  Please grant me some sanity.


-- 
Chris 'Xenon' Hanson, omo sanza lettere. xe...@alphapixel.com
http://www.alphapixel.com/
Training • Consulting • Contracting
3D • Scene Graphs (Open Scene Graph/OSG) • OpenGL 2 • OpenGL 3 • OpenGL 4 •
GLSL • OpenGL ES 1 • OpenGL ES 2 • OpenCL
Digital Imaging • GIS • GPS • Telemetry • Cryptography • Digital Audio •
LIDAR • Kinect • Embedded • Mobile • iPhone/iPad/iOS • Android
___
osg-users mailing list
osg-users@lists.openscenegraph.org
http://lists.openscenegraph.org/listinfo.cgi/osg-users-openscenegraph.org