From e1be4d99df6cd041f20d71c2466251a8cf496e71 Mon Sep 17 00:00:00 2001 From: "Asad M. Zaman" Date: Wed, 24 Dec 2003 22:36:56 +0000 Subject: [PATCH] fixed the book model on toon-props, re-build the whole tree --- pandatool/src/softegg/softToEggConverter.cxx | 59 +++++++++++--------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/pandatool/src/softegg/softToEggConverter.cxx b/pandatool/src/softegg/softToEggConverter.cxx index fe29e16700..99a8c7963e 100755 --- a/pandatool/src/softegg/softToEggConverter.cxx +++ b/pandatool/src/softegg/softToEggConverter.cxx @@ -1962,36 +1962,41 @@ cleanup_soft_skin() int numVerts = (int)vpool->size(); softegg_cat.spam() << "found vpool " << vpool_name << " w/ " << numVerts << " verts\n"; - // find the closest _parentJoint - SoftNodeDesc *parentJ = node_desc; - while( parentJ && !parentJ->_parentJoint) { - if ( parentJ->_parent) { - SAA_Boolean isSkeleton; - //softegg_cat.spam() << " checking parent " << parentJ->_parent->get_name() << endl; - if (parentJ->_parent->has_model()) - SAA_modelIsSkeleton( &scene, parentJ->_parent->get_model(), &isSkeleton ); - - if (isSkeleton) { - joint = parentJ->_parent->get_egg_group(); - softegg_cat.spam() << "parent to " << parentJ->_parent->get_name() << endl; - break; + // if this node is a joint, then these vertices belong + // to this joint + if (node_desc->is_joint()) + joint = node_desc->get_egg_group(); + else { + // find the closest _parentJoint + SoftNodeDesc *parentJ = node_desc; + while( parentJ && !parentJ->_parentJoint) { + if ( parentJ->_parent) { + SAA_Boolean isSkeleton; + //softegg_cat.spam() << " checking parent " << parentJ->_parent->get_name() << endl; + if (parentJ->_parent->has_model()) + SAA_modelIsSkeleton( &scene, parentJ->_parent->get_model(), &isSkeleton ); + + if (isSkeleton) { + joint = parentJ->_parent->get_egg_group(); + softegg_cat.spam() << "parent to " << parentJ->_parent->get_name() << endl; + break; + } + + parentJ = parentJ->_parent; } - - parentJ = parentJ->_parent; + else + break; + } + if (!joint && (!parentJ || !parentJ->_parentJoint)) { + softegg_cat.spam() << node_desc->get_name() << " has no _parentJoint?!" << endl; + continue; + } + + if (!joint) { + softegg_cat.spam() << "parent joint to " << parentJ->_parentJoint->get_name() << endl; + joint = parentJ->_parentJoint->get_egg_group(); } - else - break; } - if (!joint && (!parentJ || !parentJ->_parentJoint)) { - softegg_cat.spam() << node_desc->get_name() << " has no _parentJoint?!" << endl; - continue; - } - - if (!joint) { - softegg_cat.spam() << "parent joint to " << parentJ->_parentJoint->get_name() << endl; - joint = parentJ->_parentJoint->get_egg_group(); - } - EggVertexPool::iterator vi; double membership = 1.0f; for ( vi = vpool->begin(); vi != vpool->end(); ++vi) {