Beispiel #1
0
        // INFO MODEL NODE
        public void InfoModelNode(SkinModel model, SkinModel.ModelNode n, int tabLevel)
        {
            string ntab = "";

            for (int i = 0; i < tabLevel; i++)
            {
                ntab += "  ";
            }
            string rtab = "\n" + ntab;
            string msg  = "\n";

            msg += rtab + $"{n.name}  ";
            msg += rtab + $"|_children.Count: {n.children.Count} ";
            if (n.parent == null)
            {
                msg += $"|_parent: IsRoot ";
            }
            else
            {
                msg += $"|_parent: " + n.parent.name;
            }
            msg += rtab + $"|_hasARealBone: {n.hasRealBone} ";
            msg += rtab + $"|_isThisAMeshNode: {n.isMeshNode}";
            if (n.uniqueMeshBones.Count > 0)
            {
                msg += rtab + $"|_uniqueMeshBones.Count: {n.uniqueMeshBones.Count}  ";
                int i = 0;
                foreach (var bone in n.uniqueMeshBones)
                {
                    msg += rtab + $"|_node: {n.name}  lists  uniqueMeshBone[{i}] ...  meshIndex: {bone.meshIndex}  meshBoneIndex: {bone.boneIndex}   " + $"mesh[{bone.meshIndex}]bone[{bone.boneIndex}].Name: {model.meshes[bone.meshIndex].meshBones[bone.boneIndex].name}  " + $"in  mesh[{bone.meshIndex}].Name: {model.meshes[bone.meshIndex].Name}";
                    var nameToCompare = model.meshes[bone.meshIndex].meshBones[bone.boneIndex].name;
                    int j             = 0;
                    foreach (var anim in model.animations)
                    {
                        int k = 0;
                        foreach (var animNode in anim.animatedNodes)
                        {
                            if (animNode.nodeName == nameToCompare)
                            {
                                msg += rtab + $"|^has corresponding Animation[{j}].Node[{k}].Name: {animNode.nodeName}";
                            }
                            k++;
                        }
                        j++;
                    }
                    i++;
                }
            }
            Console.WriteLine(msg);
            for (int i = 0; i < n.children.Count; i++)
            {
                InfoModelNode(model, n.children[i], tabLevel + 1);
            }
        }
Beispiel #2
0
        // SHOW NODE TREE INFO
        public void ShowNodeTreeInfo(int tabLevel, Node curAssimpNode, bool matrixInfo, SkinModel.ModelNode modelNode, SkinModel model, Scene scene)
        {
            string ntab = "";

            for (int i = 0; i < tabLevel; i++)
            {
                ntab += "  ";
            }
            string ntab2 = ntab + "    ";

            Console.WriteLine("\n\n@@@CreateModelNodeTreeTransformsRecursively \n \n ");
            Console.Write("\n " + ntab + "  ModelNode Name: " + modelNode.name + "  curAssimpNode.Name: " + curAssimpNode.Name);
            if (curAssimpNode.MeshIndices.Count > 0)
            {
                Console.Write("\n " + ntab + "  |_This node has mesh references.  aiMeshCount: " + curAssimpNode.MeshCount + " Listed MeshIndices: ");
                for (int i = 0; i < curAssimpNode.MeshIndices.Count; i++)
                {
                    Console.Write(" , " + curAssimpNode.MeshIndices[i]);
                }
                for (int i = 0; i < curAssimpNode.MeshIndices.Count; i++)
                {
                    var nodesmesh = model.meshes[curAssimpNode.MeshIndices[i]];
                    Console.Write("\n " + ntab + " " + " |_Is a mesh ... Mesh nodeRefContainingAnimatedTransform Set to node: "
                                  + nodesmesh.node_with_anim_trans.name + "  mesh: " + nodesmesh.Name);
                }
            }
            if (matrixInfo)
            {
                Console.WriteLine("\n " + ntab2 + "|_curAssimpNode.Transform: " + curAssimpNode.Transform.SrtInfoToString(ntab2));
            }
            for (int mIndex = 0; mIndex < scene.Meshes.Count; mIndex++)
            {
                SkinModel.ModelBone bone;
                int boneIndexInMesh = 0;
                if (GetBoneForMesh(model.meshes[mIndex], modelNode.name, out bone, out boneIndexInMesh))
                {
                    var adjustedBoneIndexInMesh = boneIndexInMesh;
                    Console.Write("\n " + ntab + "  |_The node will be marked as having a real bone node along the bone route.");
                    if (modelNode.isMeshNode)
                    {
                        Console.Write("\n " + ntab + "  |_The node is also a mesh node so this is maybe a node targeting a mesh transform with animations.");
                    }
                    Console.Write("\n " + ntab + "  |_Adding uniqueBone for Node: " + modelNode.name + " of Mesh[" + mIndex + " of " + scene.Meshes.Count + "].Name: " + scene.Meshes[mIndex].Name);
                    Console.Write("\n " + ntab + "  |_It's a Bone  in mesh #" + mIndex + "  aiBoneIndexInMesh: " + (boneIndexInMesh - 1) + " adjusted BoneIndexInMesh: " + adjustedBoneIndexInMesh);
                }
            }
        }