fix fbx hierarchy issue
This commit is contained in:
parent
6767ff540b
commit
82cae6daf4
@ -652,10 +652,10 @@ void WriterNodeVisitor::apply(osg::Geometry& geometry)
|
|||||||
// retrieved from the geometry.
|
// retrieved from the geometry.
|
||||||
|
|
||||||
// create fbx node to contain the single geometry
|
// create fbx node to contain the single geometry
|
||||||
FbxNode* parent = _curFbxNode;
|
//FbxNode* parent = _curFbxNode;
|
||||||
FbxNode* nodeFBX = FbxNode::Create(_pSdkManager, geometry.getName().empty() ? "Geometry" : geometry.getName().c_str());
|
//FbxNode* nodeFBX = FbxNode::Create(_pSdkManager, geometry.getName().empty() ? "Geometry" : geometry.getName().c_str());
|
||||||
_curFbxNode->AddChild(nodeFBX);
|
//_curFbxNode->AddChild(nodeFBX);
|
||||||
_curFbxNode = nodeFBX;
|
//_curFbxNode = nodeFBX;
|
||||||
|
|
||||||
_geometryList.push_back(&geometry);
|
_geometryList.push_back(&geometry);
|
||||||
|
|
||||||
@ -669,23 +669,33 @@ void WriterNodeVisitor::apply(osg::Geometry& geometry)
|
|||||||
buildFaces(geometry.getName(), _geometryList, _listTriangles, _texcoords);
|
buildFaces(geometry.getName(), _geometryList, _listTriangles, _texcoords);
|
||||||
|
|
||||||
// return to parent fbx node
|
// return to parent fbx node
|
||||||
_curFbxNode = parent;
|
//_curFbxNode = parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriterNodeVisitor::apply(osg::Group& node)
|
void WriterNodeVisitor::apply(osg::Group& node)
|
||||||
{
|
{
|
||||||
FbxNode* parent = _curFbxNode;
|
if (_firstNodeProcessed)
|
||||||
|
{
|
||||||
|
FbxNode* parent = _curFbxNode;
|
||||||
|
|
||||||
FbxNode* nodeFBX = FbxNode::Create(_pSdkManager, node.getName().empty() ? "DefaultName" : node.getName().c_str());
|
FbxNode* nodeFBX = FbxNode::Create(_pSdkManager, node.getName().empty() ? "DefaultName" : node.getName().c_str());
|
||||||
_curFbxNode->AddChild(nodeFBX);
|
_curFbxNode->AddChild(nodeFBX);
|
||||||
_curFbxNode = nodeFBX;
|
_curFbxNode = nodeFBX;
|
||||||
|
|
||||||
traverse(node);
|
traverse(node);
|
||||||
|
|
||||||
if (_listTriangles.size() > 0)
|
if (_listTriangles.size() > 0)
|
||||||
buildFaces(node.getName(), _geometryList, _listTriangles, _texcoords);
|
buildFaces(node.getName(), _geometryList, _listTriangles, _texcoords);
|
||||||
|
|
||||||
_curFbxNode = parent;
|
_curFbxNode = parent;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_firstNodeProcessed = true;
|
||||||
|
traverse(node);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void WriterNodeVisitor::apply(osg::MatrixTransform& node)
|
void WriterNodeVisitor::apply(osg::MatrixTransform& node)
|
||||||
|
@ -86,7 +86,8 @@ class WriterNodeVisitor: public osg::NodeVisitor
|
|||||||
_options(options),
|
_options(options),
|
||||||
_externalWriter(srcDirectory, osgDB::getFilePath(fileName), true, 0),
|
_externalWriter(srcDirectory, osgDB::getFilePath(fileName), true, 0),
|
||||||
_texcoords(false),
|
_texcoords(false),
|
||||||
_drawableNum(0)
|
_drawableNum(0),
|
||||||
|
_firstNodeProcessed(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
virtual void apply(osg::Geometry& node);
|
virtual void apply(osg::Geometry& node);
|
||||||
@ -234,6 +235,9 @@ class WriterNodeVisitor: public osg::NodeVisitor
|
|||||||
///Tell us if the last apply succeed, useful to stop going through the graph.
|
///Tell us if the last apply succeed, useful to stop going through the graph.
|
||||||
bool _succeedLastApply;
|
bool _succeedLastApply;
|
||||||
|
|
||||||
|
///Marks if the first node is processed.
|
||||||
|
bool _firstNodeProcessed;
|
||||||
|
|
||||||
///The current directory.
|
///The current directory.
|
||||||
std::string _directory;
|
std::string _directory;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user