示例#1
0
 /// <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;
     }
 }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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();
        }
示例#4
0
        /// <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);
        }
示例#5
0
 /// <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);
 }