Hi Robert,
This patch fixes a regression (introduced in @ rev 9228), where simple
.dae files, that have no material assignments, will cause a crash on load.
In particular, the case when the "instance_geometry" element has no
"bind_material" sub-element. This is valid, according to the official
collada 1.4.1 specification.
Example test files available on request.
Reagrds,
Lilith.
Index: daeRGeometry.cpp
===================================================================
--- daeRGeometry.cpp (revision 10887)
+++ daeRGeometry.cpp (working copy)
@@ -240,7 +240,10 @@
void daeReader::processSinglePPrimitive(osg::Geode* geode, T *group, SourceMap &sources, GLenum mode )
{
osg::Geometry *geometry = new ReaderGeometry();
- geometry->setName(group->getMaterial());
+ if (group->getMaterial() != NULL )
+ {
+ geometry->setName(group->getMaterial());
+ }
IndexMap index_map;
resolveArrays( group->getInput_array(), geometry, sources, index_map );
@@ -256,7 +259,10 @@
void daeReader::processMultiPPrimitive(osg::Geode* geode, T *group, SourceMap &sources, GLenum mode )
{
osg::Geometry *geometry = new ReaderGeometry();
- geometry->setName(group->getMaterial());
+ if (group->getMaterial() != NULL )
+ {
+ geometry->setName(group->getMaterial());
+ }
IndexMap index_map;
resolveArrays( group->getInput_array(), geometry, sources, index_map );
@@ -275,7 +281,10 @@
void daeReader::processPolylist(osg::Geode* geode, domPolylist *group, SourceMap &sources )
{
osg::Geometry *geometry = new ReaderGeometry();
- geometry->setName(group->getMaterial());
+ if (group->getMaterial() != NULL )
+ {
+ geometry->setName(group->getMaterial());
+ }
IndexMap index_map;
resolveArrays( group->getInput_array(), geometry, sources, index_map );
_______________________________________________
osg-submissions mailing list
[email protected]
http://lists.openscenegraph.org/listinfo.cgi/osg-submissions-openscenegraph.org