mirror of
https://github.com/panda3d/panda3d.git
synced 2025-10-03 10:22:45 -04:00
This version gets rid of the pseuodo joints and works much better with the existing tools.
This commit is contained in:
parent
766fb18472
commit
fea7746011
@ -42,13 +42,14 @@ SoftNodeDesc(SoftNodeDesc *parent, const string &name) :
|
|||||||
_parent->_children.push_back(this);
|
_parent->_children.push_back(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// set the _parentJoint to Null
|
||||||
|
_parentJoint = NULL;
|
||||||
|
|
||||||
fullname = NULL;
|
fullname = NULL;
|
||||||
|
|
||||||
numTexLoc = 0;
|
numTexLoc = 0;
|
||||||
numTexGlb = 0;
|
numTexGlb = 0;
|
||||||
|
|
||||||
no_pseudo = FALSE;
|
|
||||||
|
|
||||||
uScale = NULL;
|
uScale = NULL;
|
||||||
vScale = NULL;
|
vScale = NULL;
|
||||||
uOffset = NULL;
|
uOffset = NULL;
|
||||||
@ -146,7 +147,8 @@ get_model() const {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
bool SoftNodeDesc::
|
bool SoftNodeDesc::
|
||||||
is_joint() const {
|
is_joint() const {
|
||||||
return _joint_type == JT_joint || _joint_type == JT_pseudo_joint;
|
// return _joint_type == JT_joint || _joint_type == JT_pseudo_joint;
|
||||||
|
return _joint_type == JT_joint;
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
@ -308,6 +310,47 @@ is_partial(char *search_prefix) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
// Function: SoftNodeTree::set_parentJoint
|
||||||
|
// Access: Public
|
||||||
|
// Description: Go through the ancestors and figure out who is the
|
||||||
|
// immediate _parentJoint of this node
|
||||||
|
///////////////////////////////////////////////////////////////////////
|
||||||
|
void SoftNodeDesc::
|
||||||
|
set_parentJoint(SAA_Scene *scene, SoftNodeDesc *lastJoint) {
|
||||||
|
if (is_junk())
|
||||||
|
return;
|
||||||
|
//set its parent joint to the lastJoint
|
||||||
|
_parentJoint = lastJoint;
|
||||||
|
softegg_cat.spam() << get_name() << ": parent joint set to :" << lastJoint;
|
||||||
|
if (lastJoint)
|
||||||
|
softegg_cat.spam() << "(" << lastJoint->get_name() << ")";
|
||||||
|
softegg_cat.spam() << endl;
|
||||||
|
|
||||||
|
// is this node a joint?
|
||||||
|
SAA_Boolean isSkeleton = false;
|
||||||
|
if (has_model())
|
||||||
|
SAA_modelIsSkeleton( scene, get_model(), &isSkeleton );
|
||||||
|
|
||||||
|
// if name has "joint" in it
|
||||||
|
const char *name = get_name().c_str();
|
||||||
|
if (isSkeleton || strstr(name, "joint") != NULL) {
|
||||||
|
lastJoint = this;
|
||||||
|
}
|
||||||
|
if ( _parentJoint && strstr( _parentJoint->get_name().c_str(), "scale" ) != NULL ) {
|
||||||
|
_parentJoint = lastJoint = NULL;
|
||||||
|
//lastJoint = stec._tree._root;
|
||||||
|
softegg_cat.spam() << "scale joint flag set!\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// look in the children
|
||||||
|
Children::const_iterator ci;
|
||||||
|
for (ci = _children.begin(); ci != _children.end(); ++ci) {
|
||||||
|
SoftNodeDesc *child = (*ci);
|
||||||
|
child->set_parentJoint(scene, lastJoint);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
// Function: SoftNodeDesc::check_pseudo_joints
|
// Function: SoftNodeDesc::check_pseudo_joints
|
||||||
// Access: Private
|
// Access: Private
|
||||||
@ -318,7 +361,7 @@ is_partial(char *search_prefix) {
|
|||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void SoftNodeDesc::
|
void SoftNodeDesc::
|
||||||
check_pseudo_joints(bool joint_above) {
|
check_pseudo_joints(bool joint_above) {
|
||||||
if (_joint_type == JT_joint_parent && joint_above && !no_pseudo) {
|
if (_joint_type == JT_joint_parent && joint_above) {
|
||||||
// This is one such node: it is the parent of a joint
|
// This is one such node: it is the parent of a joint
|
||||||
// (JT_joint_parent is set), and it is the child of a joint
|
// (JT_joint_parent is set), and it is the child of a joint
|
||||||
// (joint_above is set).
|
// (joint_above is set).
|
||||||
@ -353,7 +396,7 @@ check_pseudo_joints(bool joint_above) {
|
|||||||
bool all_joints = true;
|
bool all_joints = true;
|
||||||
for (ci = _children.begin(); ci != _children.end(); ++ci) {
|
for (ci = _children.begin(); ci != _children.end(); ++ci) {
|
||||||
SoftNodeDesc *child = (*ci);
|
SoftNodeDesc *child = (*ci);
|
||||||
if (child->_joint_type == JT_joint_parent && !no_pseudo) {
|
if (child->_joint_type == JT_joint_parent) {
|
||||||
child->_joint_type = JT_pseudo_joint;
|
child->_joint_type = JT_pseudo_joint;
|
||||||
softegg_cat.debug() << "pseudo " << child->get_name() << " case2 by parent " << get_name() << "\n";
|
softegg_cat.debug() << "pseudo " << child->get_name() << " case2 by parent " << get_name() << "\n";
|
||||||
} else if (child->_joint_type == JT_none || child->_joint_type == JT_junk) {
|
} else if (child->_joint_type == JT_none || child->_joint_type == JT_junk) {
|
||||||
@ -363,7 +406,7 @@ check_pseudo_joints(bool joint_above) {
|
|||||||
|
|
||||||
if (all_joints || any_joints) {
|
if (all_joints || any_joints) {
|
||||||
// Finally, if all children or at least one is a joint, then we are too.
|
// Finally, if all children or at least one is a joint, then we are too.
|
||||||
if (_joint_type == JT_joint_parent && !no_pseudo) {
|
if (_joint_type == JT_joint_parent) {
|
||||||
_joint_type = JT_pseudo_joint;
|
_joint_type = JT_pseudo_joint;
|
||||||
softegg_cat.debug() << "pseudo " << get_name() << " case3\n";
|
softegg_cat.debug() << "pseudo " << get_name() << " case3\n";
|
||||||
}
|
}
|
||||||
@ -386,13 +429,13 @@ get_transform(SAA_Scene *scene, EggGroup *egg_group, bool global) {
|
|||||||
int scale_joint = 0;
|
int scale_joint = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ( strstr( _parent->get_name().c_str(), "scale" ) != NULL ) {
|
if ( _parentJoint && strstr( _parentJoint->get_name().c_str(), "scale" ) != NULL ) {
|
||||||
scale_joint = 1;
|
scale_joint = 1;
|
||||||
softegg_cat.spam() << "scale joint flag set!\n";
|
softegg_cat.spam() << "scale joint flag set!\n";
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (!global && _parent->is_joint() && !stec.flatten && !scale_joint) {
|
if (!global && _parentJoint && !stec.flatten && !scale_joint) {
|
||||||
|
|
||||||
SAA_modelGetMatrix( scene, get_model(), SAA_COORDSYS_LOCAL, matrix );
|
SAA_modelGetMatrix( scene, get_model(), SAA_COORDSYS_LOCAL, matrix );
|
||||||
softegg_cat.debug() << get_name() << " using local matrix :parent ";
|
softegg_cat.debug() << get_name() << " using local matrix :parent ";
|
||||||
@ -404,7 +447,11 @@ get_transform(SAA_Scene *scene, EggGroup *egg_group, bool global) {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
softegg_cat.debug() << _parent->get_name() << endl;
|
if (_parentJoint)
|
||||||
|
softegg_cat.debug() << _parentJoint->get_name() << endl;
|
||||||
|
else
|
||||||
|
softegg_cat.debug() << _parentJoint << endl;
|
||||||
|
|
||||||
|
|
||||||
softegg_cat.spam() << "model matrix = " << matrix[0][0] << " " << matrix[0][1] << " " << matrix[0][2] << " " << matrix[0][3] << "\n";
|
softegg_cat.spam() << "model matrix = " << matrix[0][0] << " " << matrix[0][1] << " " << matrix[0][2] << " " << matrix[0][3] << "\n";
|
||||||
softegg_cat.spam() << "model matrix = " << matrix[1][0] << " " << matrix[1][1] << " " << matrix[1][2] << " " << matrix[1][3] << "\n";
|
softegg_cat.spam() << "model matrix = " << matrix[1][0] << " " << matrix[1][1] << " " << matrix[1][2] << " " << matrix[1][3] << "\n";
|
||||||
@ -447,9 +494,9 @@ get_joint_transform(SAA_Scene *scene, EggGroup *egg_group, EggXfmSAnim *anim, b
|
|||||||
float h,p,r;
|
float h,p,r;
|
||||||
float x,y,z;
|
float x,y,z;
|
||||||
int scale_joint = 0;
|
int scale_joint = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ( strstr( _parent->get_name().c_str(), "scale" ) != NULL ) {
|
if ( _parentJoint && strstr( _parentJoint->get_name().c_str(), "scale" ) != NULL ) {
|
||||||
scale_joint = 1;
|
scale_joint = 1;
|
||||||
softegg_cat.spam() << "scale joint flag set!\n";
|
softegg_cat.spam() << "scale joint flag set!\n";
|
||||||
}
|
}
|
||||||
@ -457,7 +504,7 @@ get_joint_transform(SAA_Scene *scene, EggGroup *egg_group, EggXfmSAnim *anim, b
|
|||||||
|
|
||||||
softegg_cat.spam() << "\n\nanimating child " << name << endl;
|
softegg_cat.spam() << "\n\nanimating child " << name << endl;
|
||||||
|
|
||||||
if (_parent->is_joint() && !stec.flatten && !scale_joint ) {
|
if (_parentJoint && !stec.flatten && !scale_joint ) {
|
||||||
softegg_cat.debug() << "using local matrix\n";
|
softegg_cat.debug() << "using local matrix\n";
|
||||||
|
|
||||||
//get SAA orientation
|
//get SAA orientation
|
||||||
|
@ -64,6 +64,7 @@ public:
|
|||||||
bool is_partial(char *search_prefix);
|
bool is_partial(char *search_prefix);
|
||||||
|
|
||||||
SoftNodeDesc *_parent;
|
SoftNodeDesc *_parent;
|
||||||
|
SoftNodeDesc *_parentJoint; // keep track of who is your parent joint
|
||||||
typedef pvector< PT(SoftNodeDesc) > Children;
|
typedef pvector< PT(SoftNodeDesc) > Children;
|
||||||
Children _children;
|
Children _children;
|
||||||
|
|
||||||
@ -74,6 +75,8 @@ private:
|
|||||||
void check_junk(bool parent_junk);
|
void check_junk(bool parent_junk);
|
||||||
void check_pseudo_joints(bool joint_above);
|
void check_pseudo_joints(bool joint_above);
|
||||||
|
|
||||||
|
void set_parentJoint(SAA_Scene *scene, SoftNodeDesc *lastJoint);
|
||||||
|
|
||||||
SAA_ModelType type;
|
SAA_ModelType type;
|
||||||
|
|
||||||
SAA_Elem *_model;
|
SAA_Elem *_model;
|
||||||
@ -100,8 +103,6 @@ public:
|
|||||||
|
|
||||||
const char *fullname;
|
const char *fullname;
|
||||||
|
|
||||||
bool no_pseudo;
|
|
||||||
|
|
||||||
int numTri;
|
int numTri;
|
||||||
// int numShapes;
|
// int numShapes;
|
||||||
int numTexLoc;
|
int numTexLoc;
|
||||||
|
@ -211,6 +211,9 @@ build_complete_hierarchy(SAA_Scene &scene, SAA_Database &database) {
|
|||||||
// check the nodes that are pseudo joints
|
// check the nodes that are pseudo joints
|
||||||
_root->check_pseudo_joints(false);
|
_root->check_pseudo_joints(false);
|
||||||
|
|
||||||
|
// find _parentJoint for each node
|
||||||
|
_root->set_parentJoint(&scene, NULL);
|
||||||
|
|
||||||
return all_ok;
|
return all_ok;
|
||||||
}
|
}
|
||||||
#if 0
|
#if 0
|
||||||
@ -360,13 +363,13 @@ get_egg_group(SoftNodeDesc *node_desc) {
|
|||||||
egg_group->set_group_type(EggGroup::GT_joint);
|
egg_group->set_group_type(EggGroup::GT_joint);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!node_desc->_parent || node_desc->_parent == _root) {
|
if (!node_desc->_parentJoint || node_desc->_parentJoint == _root) {
|
||||||
// The parent is the root.
|
// The parent is the root.
|
||||||
softegg_cat.spam() << "came hereeeee\n";
|
softegg_cat.spam() << "came hereeeee\n";
|
||||||
_egg_root->add_child(egg_group);
|
_egg_root->add_child(egg_group);
|
||||||
} else {
|
} else {
|
||||||
// The parent is another node.
|
// The parent is another node.
|
||||||
EggGroup *parent_egg_group = get_egg_group(node_desc->_parent);
|
EggGroup *parent_egg_group = get_egg_group(node_desc->_parentJoint);
|
||||||
parent_egg_group->add_child(egg_group);
|
parent_egg_group->add_child(egg_group);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -406,13 +409,13 @@ get_egg_table(SoftNodeDesc *node_desc) {
|
|||||||
node_desc->_anim->set_fps(_fps);
|
node_desc->_anim->set_fps(_fps);
|
||||||
egg_table->add_child(node_desc->_anim);
|
egg_table->add_child(node_desc->_anim);
|
||||||
|
|
||||||
if (!node_desc->_parent || node_desc->_parent == _root) {
|
if (!node_desc->_parentJoint || node_desc->_parentJoint == _root) {
|
||||||
// if (!node_desc->_parent->is_joint()) {
|
// if (!node_desc->_parent->is_joint()) {
|
||||||
// The parent is not a joint; put it at the top.
|
// The parent is not a joint; put it at the top.
|
||||||
_skeleton_node->add_child(egg_table);
|
_skeleton_node->add_child(egg_table);
|
||||||
} else {
|
} else {
|
||||||
// The parent is another joint.
|
// The parent is another joint.
|
||||||
EggTable *parent_egg_table = get_egg_table(node_desc->_parent);
|
EggTable *parent_egg_table = get_egg_table(node_desc->_parentJoint);
|
||||||
parent_egg_table->add_child(egg_table);
|
parent_egg_table->add_child(egg_table);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -441,7 +444,7 @@ get_egg_anim(SoftNodeDesc *node_desc) {
|
|||||||
// Description: Sets joint information for MNILL node
|
// Description: Sets joint information for MNILL node
|
||||||
////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////
|
||||||
void SoftNodeTree::
|
void SoftNodeTree::
|
||||||
handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, char *node_name) {
|
handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, const char *node_name) {
|
||||||
const char *name = node_name;
|
const char *name = node_name;
|
||||||
SAA_AlgorithmType algo;
|
SAA_AlgorithmType algo;
|
||||||
SAA_Elem *model = node_desc->get_model();
|
SAA_Elem *model = node_desc->get_model();
|
||||||
@ -473,6 +476,7 @@ handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, char *node_name) {
|
|||||||
// MakeJoint( &scene, lastJoint, lastAnim, model, name );
|
// MakeJoint( &scene, lastJoint, lastAnim, model, name );
|
||||||
node_desc->set_joint();
|
node_desc->set_joint();
|
||||||
softegg_cat.spam() << " animating Standard null!!!\n";
|
softegg_cat.spam() << " animating Standard null!!!\n";
|
||||||
|
softegg_cat.spam() << "isSkeleton: " << isSkeleton << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -505,23 +509,25 @@ build_node(SAA_Scene *scene, SAA_Elem *model) {
|
|||||||
node_name = name;
|
node_name = name;
|
||||||
|
|
||||||
SoftNodeDesc *node_desc = r_build_node(NULL, node_name);
|
SoftNodeDesc *node_desc = r_build_node(NULL, node_name);
|
||||||
if (stec.notPseudoName && !strcmp(name, stec.notPseudoName)) {
|
|
||||||
node_desc->no_pseudo = true;
|
|
||||||
softegg_cat.debug() << "set no_pseudo" << endl;
|
|
||||||
}
|
|
||||||
node_desc->fullname = fullname;
|
node_desc->fullname = fullname;
|
||||||
node_desc->set_model(model);
|
node_desc->set_model(model);
|
||||||
SAA_modelIsSkeleton( scene, model, &isSkeleton );
|
SAA_modelIsSkeleton( scene, model, &isSkeleton );
|
||||||
if (isSkeleton || (strstr(node_desc->get_name().c_str(), "joint") != NULL))
|
|
||||||
node_desc->set_joint();
|
|
||||||
|
|
||||||
// find out what type of node we're dealing with
|
// find out what type of node we're dealing with
|
||||||
SAA_modelGetType( scene, node_desc->get_model(), &type );
|
SAA_modelGetType( scene, node_desc->get_model(), &type );
|
||||||
|
|
||||||
|
if (type == SAA_MJNT || isSkeleton || (strstr(node_desc->get_name().c_str(), "joint") != NULL))
|
||||||
|
node_desc->set_joint();
|
||||||
|
|
||||||
// treat the MNILL differently, because it needs to detect and set some joints
|
// treat the MNILL differently, because it needs to detect and set some joints
|
||||||
if (type == SAA_MNILL)
|
if (type == SAA_MNILL)
|
||||||
handle_null(scene, node_desc, name);
|
handle_null(scene, node_desc, name);
|
||||||
|
|
||||||
|
if (node_desc->is_joint())
|
||||||
|
softegg_cat.spam() << "type: " << type << " isSkeleton: " << isSkeleton << endl;
|
||||||
|
|
||||||
|
// get to the children
|
||||||
SAA_modelGetNbChildren( scene, model, &numChildren );
|
SAA_modelGetNbChildren( scene, model, &numChildren );
|
||||||
softegg_cat.spam() << " Model " << node_name << " children: " << numChildren << endl;
|
softegg_cat.spam() << " Model " << node_name << " children: " << numChildren << endl;
|
||||||
|
|
||||||
@ -541,17 +547,23 @@ build_node(SAA_Scene *scene, SAA_Elem *model) {
|
|||||||
softegg_cat.spam() << " building child " << thisChild << "...";
|
softegg_cat.spam() << " building child " << thisChild << "...";
|
||||||
|
|
||||||
SoftNodeDesc *node_child = r_build_node(node_desc, node_name);
|
SoftNodeDesc *node_child = r_build_node(node_desc, node_name);
|
||||||
if (stec.notPseudoName && !strcmp(node_name.c_str(), stec.notPseudoName)) {
|
|
||||||
node_child->no_pseudo = true;
|
|
||||||
softegg_cat.debug() << "set no_pseudo" << endl;
|
|
||||||
}
|
|
||||||
node_child->fullname = fullname;
|
node_child->fullname = fullname;
|
||||||
node_child->set_model(&children[thisChild]);
|
node_child->set_model(&children[thisChild]);
|
||||||
|
|
||||||
// if (strstr(name, "joint") != NULL)
|
|
||||||
SAA_modelIsSkeleton( scene, &children[thisChild], &isSkeleton );
|
SAA_modelIsSkeleton( scene, &children[thisChild], &isSkeleton );
|
||||||
if (isSkeleton || (strstr(node_child->get_name().c_str(), "joint") != NULL))
|
|
||||||
|
// find out what type of node we're dealing with
|
||||||
|
SAA_modelGetType( scene, node_child->get_model(), &type );
|
||||||
|
|
||||||
|
if (type == SAA_MJNT || isSkeleton || (strstr(node_child->get_name().c_str(), "joint") != NULL))
|
||||||
node_child->set_joint();
|
node_child->set_joint();
|
||||||
|
|
||||||
|
// treat the MNILL differently, because it needs to detect and set some joints
|
||||||
|
if (type == SAA_MNILL)
|
||||||
|
handle_null(scene, node_child, node_name.c_str());
|
||||||
|
|
||||||
|
if (node_child->is_joint())
|
||||||
|
softegg_cat.spam() << "type: " << type << " isSkeleton: " << isSkeleton << endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return node_desc;
|
return node_desc;
|
||||||
|
@ -41,7 +41,7 @@ public:
|
|||||||
SoftNodeTree();
|
SoftNodeTree();
|
||||||
SoftNodeDesc *build_node(SAA_Scene *scene, SAA_Elem *model);
|
SoftNodeDesc *build_node(SAA_Scene *scene, SAA_Elem *model);
|
||||||
bool build_complete_hierarchy(SAA_Scene &scene, SAA_Database &database);
|
bool build_complete_hierarchy(SAA_Scene &scene, SAA_Database &database);
|
||||||
void handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, char *node_name);
|
void handle_null(SAA_Scene *scene, SoftNodeDesc *node_desc, const char *node_name);
|
||||||
// bool build_selected_hierarchy(SAA_Scene *s, SAA_Database *d, char *scene_name);
|
// bool build_selected_hierarchy(SAA_Scene *s, SAA_Database *d, char *scene_name);
|
||||||
|
|
||||||
int get_num_nodes() const;
|
int get_num_nodes() const;
|
||||||
|
@ -202,8 +202,7 @@ ShowOpts()
|
|||||||
" -c - Cancel morph conversion.\n"
|
" -c - Cancel morph conversion.\n"
|
||||||
" -C - Cancel duv conversion.\n"
|
" -C - Cancel duv conversion.\n"
|
||||||
" -D - Don't make the output model a character.\n"
|
" -D - Don't make the output model a character.\n"
|
||||||
" -o <prefix>- Convert only models with given prefix.\n"
|
" -o <prefix>- Convert only models with given prefix.\n";
|
||||||
" -E <name> - Don't make the specified node a pseudo node.\n";
|
|
||||||
|
|
||||||
// EggBase::ShowOpts();
|
// EggBase::ShowOpts();
|
||||||
}
|
}
|
||||||
@ -221,7 +220,6 @@ bool SoftToEggConverter::
|
|||||||
DoGetopts(int &argc, char **&argv) {
|
DoGetopts(int &argc, char **&argv) {
|
||||||
bool okflag = true;
|
bool okflag = true;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
notPseudoName = NULL;
|
|
||||||
softegg_cat.info() << "argc " << argc << "\n";
|
softegg_cat.info() << "argc " << argc << "\n";
|
||||||
if (argc <2) {
|
if (argc <2) {
|
||||||
Usage();
|
Usage();
|
||||||
@ -447,14 +445,6 @@ HandleGetopts(int &idx, int argc, char **argv)
|
|||||||
++idx;
|
++idx;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'E': // Don't make this node pseudo.
|
|
||||||
if ( strcmp( argv[idx+1], "" ) ) {
|
|
||||||
notPseudoName = argv[idx+1];
|
|
||||||
softegg_cat.info() << "Don't make the following node pseudo: " << notPseudoName << endl;
|
|
||||||
}
|
|
||||||
++idx;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'f': /// Set animation frame rate.
|
case 'f': /// Set animation frame rate.
|
||||||
if ( strcmp( argv[idx+1], "" ) ) {
|
if ( strcmp( argv[idx+1], "" ) ) {
|
||||||
anim_rate = atoi(argv[idx+1]);
|
anim_rate = atoi(argv[idx+1]);
|
||||||
@ -842,6 +832,11 @@ convert_char_chan() {
|
|||||||
|
|
||||||
for (i = 0; i < num_nodes; i++) {
|
for (i = 0; i < num_nodes; i++) {
|
||||||
SoftNodeDesc *node_desc = _tree.get_node(i);
|
SoftNodeDesc *node_desc = _tree.get_node(i);
|
||||||
|
|
||||||
|
if (node_desc->is_partial(search_prefix)) {
|
||||||
|
softegg_cat.debug() << endl;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (node_desc->is_joint()) {
|
if (node_desc->is_joint()) {
|
||||||
softegg_cat.spam() << "-----joint " << node_desc->get_name() << "\n";
|
softegg_cat.spam() << "-----joint " << node_desc->get_name() << "\n";
|
||||||
EggXfmSAnim *anim = _tree.get_egg_anim(node_desc);
|
EggXfmSAnim *anim = _tree.get_egg_anim(node_desc);
|
||||||
@ -858,6 +853,9 @@ convert_char_chan() {
|
|||||||
// easier to read.
|
// easier to read.
|
||||||
for (i = 0; i < num_nodes; i++) {
|
for (i = 0; i < num_nodes; i++) {
|
||||||
SoftNodeDesc *node_desc = _tree.get_node(i);
|
SoftNodeDesc *node_desc = _tree.get_node(i);
|
||||||
|
if (node_desc->is_partial(search_prefix))
|
||||||
|
continue;
|
||||||
|
|
||||||
if (node_desc->is_joint()) {
|
if (node_desc->is_joint()) {
|
||||||
_tree.get_egg_anim(node_desc)->optimize();
|
_tree.get_egg_anim(node_desc)->optimize();
|
||||||
}
|
}
|
||||||
|
@ -100,14 +100,14 @@ private:
|
|||||||
string _program_name;
|
string _program_name;
|
||||||
bool _from_selection;
|
bool _from_selection;
|
||||||
|
|
||||||
SoftNodeTree _tree;
|
|
||||||
|
|
||||||
SI_Error result;
|
SI_Error result;
|
||||||
SAA_Elem model;
|
SAA_Elem model;
|
||||||
SAA_Database database;
|
SAA_Database database;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
SoftNodeTree _tree;
|
||||||
|
|
||||||
SAA_Scene scene;
|
SAA_Scene scene;
|
||||||
|
|
||||||
char *_getopts;
|
char *_getopts;
|
||||||
@ -128,7 +128,6 @@ public:
|
|||||||
char *tex_path;
|
char *tex_path;
|
||||||
char *tex_filename;
|
char *tex_filename;
|
||||||
char *search_prefix;
|
char *search_prefix;
|
||||||
char *notPseudoName;
|
|
||||||
|
|
||||||
int nurbs_step;
|
int nurbs_step;
|
||||||
int anim_start;
|
int anim_start;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user