Exemple #1
0
 public SkinMeshData(SkinMeshInfo skinMesh)
 {
     name  = skinMesh.skinMesh.name;
     mesh  = new MeshData(skinMesh.mesh);
     bones = new string[skinMesh.skinMesh.bones.Length];
     for (int i = 0; i < skinMesh.skinMesh.bones.Length; i++)
     {
         bones[i] = GetPathToRoot(skinMesh.skinMesh.transform.parent, skinMesh.skinMesh.bones[i]);
     }
     poseCount = skinMesh.skinMesh.sharedMesh.bindposes.Length;
     bindposes = new Matrix4x4[poseCount];
     for (int j = 0; j < poseCount; j++)
     {
         bindposes[j] = skinMesh.skinMesh.sharedMesh.bindposes[j];
     }
     rootBone     = skinMesh.skinMesh.rootBone.name;
     bonesPerVert = skinMesh.mesh.mesh.GetBonesPerVertex().ToArray();
     vertexCount  = bonesPerVert.Length;
     BoneWeight1[] weigts = skinMesh.mesh.mesh.GetAllBoneWeights().ToArray();
     boneIndexes = new int[weigts.Length];
     boneWeigts  = new float[weigts.Length];
     for (int k = 0; k < weigts.Length; k++)
     {
         boneIndexes[k] = weigts[k].boneIndex;
         boneWeigts[k]  = weigts[k].weight;
     }
     boundsCenter = skinMesh.skinMesh.localBounds.center;
     boundsExtend = skinMesh.skinMesh.localBounds.extents;
 }
Exemple #2
0
 private void SetObjectData(Transform trans, ParametersController controller, ObjectData data)
 {
     // Mesh for non-imported objects
     if (null == controller || !controller.isImported)
     {
         MeshRenderer meshRenderer = trans.GetComponent <MeshRenderer>();
         MeshFilter   meshFilter   = trans.GetComponent <MeshFilter>();
         if (null != meshFilter && null != meshRenderer)
         {
             // Materials
             foreach (Material material in meshRenderer.materials)
             {
                 string materialId = trans.name + "_" + material.name;
                 GetMaterialPath(currentProjectName, materialId, out string materialAbsolutePath, out string materialRelativePath);
                 MaterialInfo materialInfo = new MaterialInfo {
                     relativePath = materialRelativePath, absolutePath = materialAbsolutePath, material = material
                 };
                 if (!materials.ContainsKey(materialId))
                 {
                     materials.Add(materialId, materialInfo);
                 }
                 data.materialsData.Add(new MaterialData(materialInfo));
             }
             // Mesh
             GetMeshPath(currentProjectName, meshFilter.sharedMesh.name, out string meshAbsolutePath, out string meshRelativePath);
             meshes[meshRelativePath] = new MeshInfo {
                 relativePath = meshRelativePath, absolutePath = meshAbsolutePath, mesh = meshFilter.sharedMesh
             };
             data.meshPath = meshRelativePath;
         }
         data.isImported = false;
         if (trans.TryGetComponent <SkinnedMeshRenderer>(out SkinnedMeshRenderer skinRenderer))
         {
             foreach (Material material in skinRenderer.materials)
             {
                 string materialId = trans.name + "_" + material.name;
                 GetMaterialPath(currentProjectName, materialId, out string materialAbsolutePath, out string materialRelativePath);
                 MaterialInfo materialInfo = new MaterialInfo {
                     relativePath = materialRelativePath, absolutePath = materialAbsolutePath, material = material
                 };
                 if (!materials.ContainsKey(materialId))
                 {
                     materials.Add(materialId, materialInfo);
                 }
                 data.materialsData.Add(new MaterialData(materialInfo));
             }
             GetMeshPath(currentProjectName, skinRenderer.sharedMesh.name, out string meshAbsolutePath, out string meshRelativePath);
             MeshInfo meshI = new MeshInfo {
                 absolutePath = meshAbsolutePath, relativePath = meshRelativePath, mesh = skinRenderer.sharedMesh
             };
             skinMeshes[meshRelativePath] = new SkinMeshInfo {
                 absolutePath = meshAbsolutePath, relativePath = meshRelativePath, skinMesh = skinRenderer, mesh = meshI
             };
             data.meshPath   = meshRelativePath;
             data.isSkinMesh = true;
         }
     }
     else if (null != controller && controller.isImported)
     {
         data.meshPath   = controller.importPath;
         data.isImported = true;
     }
 }