Ejemplo n.º 1
0
        private IProcedural GenerateMesh()
        {
            //GenerateMaterialProperties();

            //GenerateCubeFaces();

            //while (Material == null) { Debug.WriteLine($"Waiting for material - {Id}"); }

            //Debug.WriteLine($"Got material - {Id}");

            HelixToolkit.Wpf.SharpDX.MeshBuilder b = new HelixToolkit.Wpf.SharpDX.MeshBuilder();

            foreach (var f in Faces)
            {
                var face = f.Value;
                b.AddCubeFace(face.CubeCenter, face.Normal, face.Up, face.Distance, face.Width, face.Height);
            }

            var m = new MeshGeometryModel3D
            {
                Geometry = b.ToMesh(),
                CullMode = SharpDX.Direct3D11.CullMode.Back
            };

            var scale     = new ScaleTransform3D(1, 1, 1);
            var translate = new TranslateTransform3D(0, 0, 0);
            var group     = new Transform3DGroup();

            group.Children.Add(scale);
            group.Children.Add(translate);
            m.Transform = group;

            m.Material = PhysicalMaterial;
            if (PhysicalMaterial.DiffuseColor.Alpha < 1)
            {
                m.IsTransparent = true;
            }

            Mesh = m;

            return(this);
        }