// メッシュを結合する static public Mesh CombineAndConvertMesh(IEnumerable <Mesh> meshes, Transform[] bones) { var qCis = from mesh in meshes select new CombineInstance { mesh = mesh }; //return ChMeshConverter.ConvertToChMesh( smrs_.ElementAt( 0 ).sharedMesh, smrs_.ElementAt(0).bones ); var dstmesh = new Mesh(); var boneLength = meshes.First().bindposes.Length; // 後でちゃんとした結合に差し替えよう dstmesh.CombineMeshes(qCis.ToArray(), mergeSubMeshes: true, useMatrices: false); dstmesh.boneWeights = ( from w in dstmesh.boneWeights select new BoneWeight { boneIndex0 = w.boneIndex0 % boneLength, boneIndex1 = w.boneIndex1 % boneLength, boneIndex2 = w.boneIndex2 % boneLength, boneIndex3 = w.boneIndex3 % boneLength, weight0 = w.weight0, weight1 = w.weight1, weight2 = w.weight2, weight3 = w.weight3, } ) .ToArray(); return(ChMeshConverter.ConvertToChMesh(dstmesh, bones)); }
public Entity Convert(EntityManager em, Func <Mesh, Material, BoneType, int, Entity> initDrawModelComponentsAction) { var mrs = this.GetComponentsInChildren <SkinnedMeshRenderer>(); var motionClip = this.GetComponent <MotionAuthoring>().MotionClip; // var mesh = combineAndConvertMesh(mrs, motionClip); // var mat = new Material(mrs[0].sharedMaterial); mat.shader = this.Shader;// ちゃんとした材質生成が必要 mat.enableInstancing = true; //var drawIndex = drawres.AddDrawMeshResource( mesh, mat, this.BoneType, this.MaxInstance ); var modelEntity = initDrawModelComponentsAction(mesh, mat, this.BoneType, mesh.bindposes.Length); return(DrawMeshPrefabCreator.CreatePrefab(em, mesh.bindposes.Length, modelEntity)); // メッシュを結合する Mesh combineAndConvertMesh(IEnumerable <SkinnedMeshRenderer> smrs_, MotionClip motionClip_) { var qCis = from mr in smrs_ select new CombineInstance { mesh = mr.sharedMesh }; //return ChMeshConverter.ConvertToChMesh( smrs_.ElementAt( 0 ).sharedMesh, smrs_.ElementAt(0).bones ); var dstmesh = new Mesh(); var boneLength = smrs_.First().bones.Length; // 後でちゃんとした結合に差し替えよう dstmesh.CombineMeshes(qCis.ToArray(), mergeSubMeshes: true, useMatrices: false); dstmesh.boneWeights = ( from w in dstmesh.boneWeights select new BoneWeight { boneIndex0 = w.boneIndex0 % boneLength, boneIndex1 = w.boneIndex1 % boneLength, boneIndex2 = w.boneIndex2 % boneLength, boneIndex3 = w.boneIndex3 % boneLength, weight0 = w.weight0, weight1 = w.weight1, weight2 = w.weight2, weight3 = w.weight3, } ) .ToArray(); return(ChMeshConverter.ConvertToChMesh(dstmesh, smrs_.ElementAt(0).bones)); } }