public void SetRenderMeshes(params Mesh[] meshes) { Models.Children.Clear(); foreach (var mesh in meshes) { Models.Children.Add(ResourceCache.GetModel(mesh)); } Models.Children.Add(new AmbientLight(Colors.White)); RaisePropertyChanged("Models"); }
public void SetRenderMeshes(params Mesh[] meshes) { Models.Children.Clear(); bool firstMesh = true; BoundingBox bb = new BoundingBox(); _centerOfMass = new Point3D(); _centerOfGeometry = new Point3D(); foreach (var mesh in meshes) { var bakedMesh = ResourceCache.GetModel(mesh); Models.Children.Add(bakedMesh.Mesh); _centerOfMass = Point3D.Add(_centerOfMass, bakedMesh.CenterOfMass.ToVector3D()); if (firstMesh) { bb = bakedMesh.BoundingBox; firstMesh = false; } else { bb = BoundingBox.Merge(bb, bakedMesh.BoundingBox); } //bb = BoundingBox.Merge(bb, mesh.BoundingBox.ToSharpDxBoundingBox()); } if (meshes.Length > 0) { _centerOfMass.X /= meshes.Length; _centerOfMass.Y /= meshes.Length; _centerOfMass.Z /= meshes.Length; } ClampBoundingBox(ref bb); _modelBoundingBox = bb; _centerOfGeometry = _modelBoundingBox.Center.ToPoint3D(); ReferenceScale = CalculateReferenceScale(_modelBoundingBox); //UpdateGridLines(bb); RaisePropertyChanged("Models"); RefocusCenter(); RaisePropertyChanged("ReferenceScale"); }
public void SetRenderMeshes(params Mesh[] meshes) { Models.Children.Clear(); foreach (var mesh in meshes) { Models.Children.Add(ResourceCache.GetModel(mesh).Mesh); } if (Models.Children.First() != null) { var target = Models.Children.First().Bounds.Location; //Creates a fake ambient light that does not burn corners. Models.Children.Add(new PointLight(Colors.White, new Point3D(50, 50, 0))); Models.Children.Add(new PointLight(Colors.White, new Point3D(-50, -50, 0))); } else { Models.Children.Add(new AmbientLight(Colors.White)); } RaisePropertyChanged("Models"); }