コード例 #1
0
ファイル: GlbCreator.cs プロジェクト: AugmentedGeoBae/pg2b3dm
        public static byte[] GetGlb(TriangleCollection triangles)
        {
            var materialCache     = new MaterialsCache();
            var default_hex_color = "#bb3333";
            var defaultMaterial   = materialCache.GetMaterialBuilderByColor(default_hex_color);

            var mesh = new MeshBuilder <VertexPositionNormal, VertexWithBatchId, VertexEmpty>("mesh");

            foreach (var triangle in triangles)
            {
                MaterialBuilder material;
                if (!string.IsNullOrEmpty(triangle.Color))
                {
                    material = materialCache.GetMaterialBuilderByColor(triangle.Color);
                }
                else
                {
                    material = defaultMaterial;
                }

                DrawTriangle(triangle, material, mesh);
            }
            var scene = new SceneBuilder();

            scene.AddRigidMesh(mesh, Matrix4x4.Identity);
            var model = scene.ToSchema2();
            var bytes = model.WriteGLB().Array;

            return(bytes);
        }
コード例 #2
0
ファイル: GlbCreator.cs プロジェクト: zhangwenjin/pg2b3dm
        public static byte[] GetGlb(List <Triangle> triangles)
        {
            var materialCache     = new MaterialsCache();
            var default_hex_color = "#D94F33"; // "#bb3333";
            var defaultMaterial   = MaterialCreator.GetDefaultMaterial(default_hex_color);

            var mesh = new MeshBuilder <VertexPositionNormal, VertexWithBatchId, VertexEmpty>("mesh");

            foreach (var triangle in triangles)
            {
                MaterialBuilder material;
                if (triangle.Shader != null)
                {
                    material = materialCache.GetMaterialBuilderByShader(triangle.Shader);
                }
                else
                {
                    material = defaultMaterial;
                }

                DrawTriangle(triangle, material, mesh);
            }
            var scene = new SceneBuilder();

            scene.AddRigidMesh(mesh, Matrix4x4.Identity);
            var model = scene.ToGltf2();
            var bytes = model.WriteGLB().Array;

            return(bytes);
        }