diff --git a/code/FBXConverter.cpp b/code/FBXConverter.cpp index 746777d65..8aac70a0f 100644 --- a/code/FBXConverter.cpp +++ b/code/FBXConverter.cpp @@ -215,24 +215,30 @@ void Converter::ConvertNodes( uint64_t id, aiNode& parent, const aiMatrix4x4& pa // attach geometry ConvertModel( *model, *nodes_chain.back(), new_abs_transform ); - // now link the geometric transform inverse nodes, + // check if there will be any child nodes + const std::vector& child_conns + = doc.GetConnectionsByDestinationSequenced( model->ID(), "Model" ); + + // if so, link the geometric transform inverse nodes // before we attach any child nodes - for( aiNode* postnode : post_nodes_chain ) { - ai_assert( postnode ); + if (child_conns.size()) { + for( aiNode* postnode : post_nodes_chain ) { + ai_assert( postnode ); - if ( last_parent != &parent ) { - last_parent->mNumChildren = 1; - last_parent->mChildren = new aiNode*[ 1 ]; - last_parent->mChildren[ 0 ] = postnode; + if ( last_parent != &parent ) { + last_parent->mNumChildren = 1; + last_parent->mChildren = new aiNode*[ 1 ]; + last_parent->mChildren[ 0 ] = postnode; + } + + postnode->mParent = last_parent; + last_parent = postnode; + + new_abs_transform *= postnode->mTransformation; } - - postnode->mParent = last_parent; - last_parent = postnode; - - new_abs_transform *= postnode->mTransformation; } - // attach sub-nodes + // attach sub-nodes (if any) ConvertNodes( model->ID(), *last_parent, new_abs_transform ); if ( doc.Settings().readLights ) { diff --git a/code/FBXExporter.cpp b/code/FBXExporter.cpp index 86804bccc..582916d04 100644 --- a/code/FBXExporter.cpp +++ b/code/FBXExporter.cpp @@ -1775,7 +1775,10 @@ const std::map> transform_types = { {"ScalingPivotInverse", {"ScalingPivotInverse", 'i'}}, {"GeometricScaling", {"GeometricScaling", 's'}}, {"GeometricRotation", {"GeometricRotation", 'r'}}, - {"GeometricTranslation", {"GeometricTranslation", 't'}} + {"GeometricTranslation", {"GeometricTranslation", 't'}}, + {"GeometricTranslationInverse", {"GeometricTranslationInverse", 'i'}}, + {"GeometricRotationInverse", {"GeometricRotationInverse", 'i'}}, + {"GeometricScalingInverse", {"GeometricScalingInverse", 'i'}} }; // write a single model node to the stream