Beispiel #1
0
    // Use this for initialization
    void Start()
    {
        BinaryReader reader = new BinaryReader(new MemoryStream(SKN.bytes));

        data = new SknData(reader);

        var m = new Mesh();

        m.SetVertices(data.Vertexes.Select(x => x.Vertex).ToList());
        m.SetIndices(data.Indexes.Select(x => (int)x).ToArray(), MeshTopology.Triangles, 1);
        m.SetUVs(1, data.Vertexes.Select(x => x.UV).ToList());
    }
Beispiel #2
0
        private GameObject generateMesh()
        {
            var          SKN    = System.IO.File.ReadAllBytes(this.SKNFile);
            BinaryReader reader = new BinaryReader(new MemoryStream(SKN));

            sknData = new SknData(reader);
            var data = sknData;

            GameObject obj        = new GameObject();
            var        meshFilter = obj.AddComponent <MeshFilter>();

            meshFilter.sharedMesh = new Mesh();
            //var meshrender = obj.AddComponent<MeshRenderer>();

            var skinmesh = obj.AddComponent <SkinnedMeshRenderer>();

            skinmesh.sharedMesh = meshFilter.sharedMesh;

            var m = meshFilter.sharedMesh;

            m.name = data.Materials[0].Name;
            m.SetVertices(data.Vertexes.Select(x => x.Vertex).ToList());
            m.SetIndices(data.Indexes.Select(x => (int)x).ToArray(), MeshTopology.Triangles, 0);
            m.uv          = (data.Vertexes.Select(x => x.UV).ToArray());
            m.normals     = (data.Vertexes.Select(x => x.Normal).ToArray());
            m.boneWeights = data.Vertexes.Select(x => new BoneWeight()
            {
                weight0 = x.BoneWeight[0],
                weight1 = x.BoneWeight[1],
                weight2 = x.BoneWeight[2],
                weight3 = x.BoneWeight[3],

                boneIndex0 = x.BoneIndex[0],
                boneIndex1 = x.BoneIndex[1],
                boneIndex2 = x.BoneIndex[2],
                boneIndex3 = x.BoneIndex[3],
            }).ToArray();

            return(obj);
        }