Esempio n. 1
0
        private void ExportStaticMeshLods(CStaticMeshLod lod, FArchiveWriter Ar, List <MaterialExporter>?materialExports, ETexturePlatform platform = ETexturePlatform.DesktopMobile)
        {
            var share   = new CVertexShare();
            var boneHdr = new VChunkHeader();
            var infHdr  = new VChunkHeader();

            share.Prepare(lod.Verts);
            foreach (var vert in lod.Verts)
            {
                share.AddVertex(vert.Position, vert.Normal);
            }

            ExportCommonMeshData(Ar, lod.Sections.Value, lod.Verts, lod.Indices.Value, share, materialExports, platform);

            boneHdr.DataCount = 0;
            boneHdr.DataSize  = 120;
            Ar.SerializeChunkHeader(boneHdr, "REFSKELT");

            infHdr.DataCount = 0;
            infHdr.DataSize  = 12;
            Ar.SerializeChunkHeader(infHdr, "RAWWEIGHTS");

            ExportVertexColors(Ar, lod.VertexColors, lod.NumVerts);
            ExportExtraUV(Ar, lod.ExtraUV.Value, lod.NumVerts, lod.NumTexCoords);
        }
Esempio n. 2
0
        public Gltf(string name, CStaticMeshLod lod, List <MaterialExporter>?materialExports)
        {
            var mesh = new MeshBuilder <VERTEX, VertexColorXTextureX, VertexEmpty>(name);

            for (var i = 0; i < lod.Sections.Value.Length; i++)
            {
                ExportStaticMeshSections(i, lod, lod.Sections.Value[i], materialExports, mesh);
            }

            var sceneBuilder = new SceneBuilder();

            sceneBuilder.AddRigidMesh(mesh, Matrix4x4.Identity);
            Model = sceneBuilder.ToGltf2();
        }