コード例 #1
0
        private Mesh CreateMeshFromWowMeshWithMaterials(WowMeshWithMaterials wowMesh)
        {
            var mesh = new Mesh();

            var vertices = wowMesh.Vertices
                           .Select(x => new Vector3(x.Position.X, x.Position.Y, x.Position.Z))
                           .ToList();

            var normals = wowMesh.Vertices
                          .Select(x => new Vector3(x.Normal.X, x.Normal.Y, x.Normal.Z))
                          .ToList();

            var uv1 = wowMesh.Vertices
                      .Select(x => new Vector2(x.UV1.X, x.UV1.Y))
                      .ToList();

            var uv2 = wowMesh.Vertices
                      .Select(x => new Vector2(x.UV2.X, x.UV2.Y))
                      .ToList();

            var boneWeights = wowMesh.Vertices
                              .Select(x => new BoneWeight()
            {
                boneIndex0 = x.BoneIndexes[0],
                weight0    = x.BoneWeights[0],

                boneIndex1 = x.BoneIndexes[1],
                weight1    = x.BoneWeights[1],

                boneIndex2 = x.BoneIndexes[2],
                weight2    = x.BoneWeights[2],

                boneIndex3 = x.BoneIndexes[3],
                weight3    = x.BoneWeights[3],
            })
                              .ToArray();

            mesh.SetVertices(vertices);

            mesh.SetNormals(normals);

            mesh.SetUVs(0, uv1);
            mesh.SetUVs(1, uv2);

            mesh.boneWeights = boneWeights;

            mesh.subMeshCount = wowMesh.Submeshes.Count;
            for (int submeshIdx = 0; submeshIdx < wowMesh.Submeshes.Count; submeshIdx++)
            {
                mesh.SetTriangles(wowMesh.Submeshes[submeshIdx].Triangles.Select(x => (int)x).ToList(), submeshIdx);
            }

            mesh.RecalculateBounds();
            //mesh.RecalculateNormals();

            return(mesh);
        }
コード例 #2
0
        private Material[] CreateMaterialsFromWowMeshWithMaterials(WowMeshWithMaterials wowMesh)
        {
            var materials = new Material[wowMesh.Submeshes.Count];

            for (int submeshIdx = 0; submeshIdx < wowMesh.Submeshes.Count; submeshIdx++)
            {
                var whMaterial = wowMesh.Submeshes[submeshIdx].Material;

                var material = new Material(_standardShader);

                // Smoothness
                material.SetFloat("_Glossiness", 0);

                material.SetTexture("_MainTex", CreateTextureFromBitmap(whMaterial.MainImage.Bitmap));

                materials[submeshIdx] = material;
            }

            return(materials);
        }
コード例 #3
0
 public WowSubmeshWithMaterials(WowMeshWithMaterials mesh, ushort[] triangles, WowMaterial material)
 {
     Mesh      = mesh;
     Triangles = triangles;
     Material  = material;
 }