Пример #1
0
 private void RefreshDeformer()
 {
     Initialize();
     if (FilePath != "")
     {
         Mesh_Binder = SS_File.GetFile_ByteObject <MeshBinder>(Application.streamingAssetsPath + FilePath);
     }
     Deformer();
 }
Пример #2
0
        /// <summary>
        /// 绑定方法
        /// </summary>
        private void Bind()
        {
            Mesh_Binder = new MeshBinder();

            for (int i = 0; i < mesh.vertices.Length; i++)//遍历mesh全点
            {
                ShortDistance = Mathf.Infinity;

                for (int i1 = 0; i1 < mesh_Skeleton.Pionts.Count; i1++)//遍历骨架线节点
                {
                    Vector3 Offset = (mesh_Skeleton.Pionts[i1].SE_World_To_local(transform.SE_Local_To_World(mesh.vertices[i])));

                    if (Offset.magnitude < ShortDistance)//取最近骨架节点
                    {
                        ShortDistance = Offset.magnitude;
                        OffsetSave    = Offset;
                        index         = i1;
                    }
                }

                if (Mesh_Binder.MeshBind.ContainsKey(index.ToString()))//骨架编号与mesh节点编号绑定
                {
                    Mesh_Binder.MeshBind[index.ToString()].Add(i.ToString(), OffsetSave);
                }
                else
                {
                    Mesh_Binder.MeshBind.Add(index.ToString(), new Dictionary <string, SF_Vector3>());
                    Mesh_Binder.MeshBind[index.ToString()].Add(i.ToString(), OffsetSave);
                }
                index = 0;
            }

            string path = Application.streamingAssetsPath + FilePath;

            SS_File.SetFile_byteObject(Mesh_Binder, path);//绑定过程太慢所以需要存档
        }