Beispiel #1
0
        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);
        }
Beispiel #2
0
        public MaterialBuilder GetMaterialBuilderByShader(Shader shader)
        {
            var res = (from m in materials where m.Shader.Equals(shader) select m).FirstOrDefault();

            if (res == null)
            {
                var materialBuilder = MaterialCreator.CreateMaterial(shader);

                res = new MaterialAndShader {
                    Shader = shader, MaterialBuilder = materialBuilder
                };
                materials.Add(res);
            }
            return(res.MaterialBuilder);
        }
Beispiel #3
0
        public MaterialBuilder GetMaterialBuilderByColor(string color)
        {
            var res = (from m in materials where m.Color == color select m).FirstOrDefault();

            if (res == null)
            {
                // create and add it to List
                var rgb             = ColorTranslator.FromHtml(color);
                var materialBuilder = MaterialCreator.CreateMaterial(rgb.R, rgb.G, rgb.B);

                res = new MaterialAndColor {
                    Color = color, MaterialBuilder = materialBuilder
                };
                materials.Add(res);
            }
            return(res.MaterialBuilder);
        }