/// <summary> /// Applies the cutting planes. /// </summary> /// <param name="forceUpdate"> /// if set to <c>true</c> [force update]. /// </param> private void ApplyCuttingPlanes(bool forceUpdate = false) { lock (this) { this.NewCutGeometries = new Dictionary <Model3D, Geometry3D>(); this.NewOriginalGeometries = new Dictionary <Model3D, Geometry3D>(); this.forceUpdate = forceUpdate; Visual3DHelper.Traverse <GeometryModel3D>(this.Children, this.ApplyCuttingPlanesToModel); this.CutGeometries = this.NewCutGeometries; this.OriginalGeometries = this.NewOriginalGeometries; } }
/// <summary> /// Exports the specified viewport. /// Exports model, camera and lights. /// </summary> /// <param name="viewport"> /// The viewport. /// </param> public virtual void Export(Viewport3D viewport) { this.ExportHeader(); this.ExportViewport(viewport); // Export objects Visual3DHelper.Traverse <GeometryModel3D>(viewport.Children, this.ExportModel); // Export camera this.ExportCamera(viewport.Camera); // Export lights Visual3DHelper.Traverse <Light>(viewport.Children, this.ExportLight); }
/// <summary> /// Exports the specified viewport. /// Exports model, camera and lights. /// </summary> /// <param name="viewport"> /// The viewport. /// </param> public override void Export(Viewport3D viewport) { this.ExportViewport(viewport); // Export camera // Export lights Visual3DHelper.Traverse <Light>(viewport.Children, this.ExportLight); this.writer.WriteStartElement("library_materials"); Visual3DHelper.Traverse <GeometryModel3D>(viewport.Children, this.ExportMaterial); this.writer.WriteEndElement(); this.writer.WriteStartElement("library_effects"); Visual3DHelper.Traverse <GeometryModel3D>(viewport.Children, this.ExportEffect); this.writer.WriteEndElement(); // writer.WriteStartElement("library_cameras"); // this.ExportCamera(viewport.Camera); // writer.WriteEndElement(); // writer.WriteStartElement("library_lights"); // Visual3DHelper.Traverse<Light>(viewport.Children, this.ExportLight); // writer.WriteEndElement(); this.writer.WriteStartElement("library_geometries"); Visual3DHelper.Traverse <GeometryModel3D>(viewport.Children, this.ExportGeometry); this.writer.WriteEndElement(); this.writer.WriteStartElement("library_nodes"); Visual3DHelper.Traverse <GeometryModel3D>(viewport.Children, this.ExportNode); this.writer.WriteEndElement(); this.writer.WriteStartElement("library_visual_scenes"); this.writer.WriteStartElement("visual_scene"); this.writer.WriteAttributeString("id", "RootNode"); this.writer.WriteAttributeString("name", "RootNode"); // this.ExportCameraNode(viewport.Camera); Visual3DHelper.Traverse <GeometryModel3D>(viewport.Children, this.ExportSceneNode); this.writer.WriteEndElement(); this.writer.WriteEndElement(); this.writer.WriteStartElement("scene"); this.writer.WriteStartElement("instance_visual_scene"); this.writer.WriteAttributeString("url", "#RootNode"); this.writer.WriteEndElement(); this.writer.WriteEndElement(); }
/// <summary> /// Gets the total number of triangles in the viewport. /// </summary> /// <param name="viewport">The viewport.</param> /// <returns>The total number of triangles</returns> public static int GetTotalNumberOfTriangles(Viewport3D viewport) { int count = 0; Visual3DHelper.Traverse <GeometryModel3D>( viewport.Children, (m, t) => { var geometry = m.Geometry as MeshGeometry3D; if (geometry != null && geometry.TriangleIndices != null) { count += geometry.TriangleIndices.Count / 3; } }); return(count); }
/// <summary> /// Exports the specified visual. /// </summary> /// <param name="visual"> /// The visual. /// </param> public void Export(Visual3D visual) { this.ExportHeader(); Visual3DHelper.Traverse <GeometryModel3D>(visual, this.ExportModel); }