@@ -219,8 +219,7 @@ void USDImporterImplTinyusdz::InternReadFile(
219
219
textures (render_scene, pScene, nameWExt);
220
220
textureImages (render_scene, pScene, nameWExt);
221
221
buffers (render_scene, pScene, nameWExt);
222
-
223
- setupNodes (render_scene, pScene, nameWExt);
222
+ pScene->mRootNode = nodesRecursive (nullptr , render_scene.nodes [0 ], render_scene.skeletons );
224
223
225
224
setupBlendShapes (render_scene, pScene, nameWExt);
226
225
}
@@ -249,6 +248,7 @@ void USDImporterImplTinyusdz::animations(
249
248
}
250
249
251
250
// each channel affects a node (joint)
251
+ newAiAnimation->mTicksPerSecond = render_scene.meta .framesPerSecond ;
252
252
newAiAnimation->mNumChannels = animation.channels_map .size ();
253
253
newAiAnimation->mChannels = new aiNodeAnim *[newAiAnimation->mNumChannels ];
254
254
int channelIndex = 0 ;
@@ -797,44 +797,6 @@ void USDImporterImplTinyusdz::buffers(
797
797
}
798
798
}
799
799
800
- void USDImporterImplTinyusdz::setupNodes (
801
- const tinyusdz::tydra::RenderScene &render_scene,
802
- aiScene *pScene,
803
- const std::string &nameWExt) {
804
- stringstream ss;
805
-
806
- pScene->mRootNode = nodes (render_scene, nameWExt);
807
- if (pScene->mRootNode == nullptr ) {
808
- return ;
809
- }
810
-
811
- pScene->mRootNode ->mNumMeshes = pScene->mNumMeshes ;
812
- pScene->mRootNode ->mMeshes = new unsigned int [pScene->mRootNode ->mNumMeshes ];
813
-
814
- ss.str (" " );
815
- ss << " setupNodes(): pScene->mNumMeshes: " << pScene->mNumMeshes ;
816
- ss << " , mRootNode->mNumMeshes: " << pScene->mRootNode ->mNumMeshes ;
817
- TINYUSDZLOGD (TAG, " %s" , ss.str ().c_str ());
818
-
819
- for (unsigned int meshIdx = 0 ; meshIdx < pScene->mNumMeshes ; meshIdx++) {
820
- pScene->mRootNode ->mMeshes [meshIdx] = meshIdx;
821
- }
822
- }
823
-
824
- aiNode *USDImporterImplTinyusdz::nodes (
825
- const tinyusdz::tydra::RenderScene &render_scene,
826
- const std::string &nameWExt) {
827
- const size_t numNodes{render_scene.nodes .size ()};
828
- (void ) numNodes; // Ignore unused variable when -Werror enabled
829
- stringstream ss;
830
- ss.str (" " );
831
- ss << " nodes(): model" << nameWExt << " , numNodes: " << numNodes;
832
- TINYUSDZLOGD (TAG, " %s" , ss.str ().c_str ());
833
-
834
- aiNode *rootNode = nodesRecursive (nullptr , render_scene.nodes [0 ], render_scene.skeletons );
835
- return rootNode;
836
- }
837
-
838
800
using Assimp::tinyusdzNodeTypeFor;
839
801
using Assimp::tinyUsdzMat4ToAiMat4;
840
802
using tinyusdz::tydra::NodeType;
@@ -847,6 +809,13 @@ aiNode *USDImporterImplTinyusdz::nodesRecursive(
847
809
cNode->mParent = pNodeParent;
848
810
cNode->mName .Set (node.prim_name );
849
811
cNode->mTransformation = tinyUsdzMat4ToAiMat4 (node.local_matrix .m );
812
+
813
+ if (node.nodeType == NodeType::Mesh) {
814
+ cNode->mNumMeshes = 1 ;
815
+ cNode->mMeshes = new unsigned int [cNode->mNumMeshes ];
816
+ cNode->mMeshes [0 ] = node.id ;
817
+ }
818
+
850
819
ss.str (" " );
851
820
ss << " nodesRecursive(): node " << cNode->mName .C_Str () <<
852
821
" type: |" << tinyusdzNodeTypeFor (node.nodeType ) <<
@@ -855,7 +824,7 @@ aiNode *USDImporterImplTinyusdz::nodesRecursive(
855
824
ss << " (parent " << cNode->mParent ->mName .C_Str () << " )" ;
856
825
}
857
826
ss << " has " << node.children .size () << " children" ;
858
- if (node.id != - 1 ) {
827
+ if (node.nodeType == NodeType::Mesh ) {
859
828
ss << " \n node mesh id: " << node.id << " (node type: " << tinyusdzNodeTypeFor (node.nodeType ) << " )" ;
860
829
}
861
830
TINYUSDZLOGD (TAG, " %s" , ss.str ().c_str ());
0 commit comments