From f01f1604b95b277472f2850c91d08e61cb933931 Mon Sep 17 00:00:00 2001 From: LarsBrubaker Date: Sat, 20 Nov 2021 20:38:26 -0800 Subject: [PATCH] Refactoring IBvhItem --- .../BooleanProcessing.cs | 24 +++++++++++++++---- .../SceneViewer/ItemTraceDataDrawable.cs | 1 + .../SceneViewer/SceneTraceDataDrawable.cs | 1 + .../View3D/Object3DControlsLayer.cs | 1 + .../PartPreviewWindow/View3D/View3DWidget.cs | 1 + Submodules/agg-sharp | 2 +- 6 files changed, 24 insertions(+), 6 deletions(-) diff --git a/MatterControl.MeshOperations/BooleanProcessing.cs b/MatterControl.MeshOperations/BooleanProcessing.cs index af8dac407..fe8b4006d 100644 --- a/MatterControl.MeshOperations/BooleanProcessing.cs +++ b/MatterControl.MeshOperations/BooleanProcessing.cs @@ -42,6 +42,7 @@ using MatterHackers.Agg; using MatterHackers.DataConverters3D; using MatterHackers.MatterControl.DesignTools; using MatterHackers.PolygonMesh.Csg; +using MatterHackers.RayTracer; using MatterHackers.VectorMath; namespace MatterHackers.PolygonMesh @@ -121,7 +122,11 @@ namespace MatterHackers.PolygonMesh } } - private static Mesh AsImplicitMeshes(IEnumerable<(Mesh mesh, Matrix4X4 matrix)> items, CsgModes operation, ProcessingModes processingMode, ProcessingResolution inputResolution, ProcessingResolution outputResolution) + private static Mesh AsImplicitMeshes(IEnumerable<(Mesh mesh, Matrix4X4 matrix)> items, + CsgModes operation, + ProcessingModes processingMode, + ProcessingResolution inputResolution, + ProcessingResolution outputResolution) { Mesh implicitResult = null; @@ -255,11 +260,14 @@ namespace MatterHackers.PolygonMesh var progressStatus = new ProgressStatus(); var totalOperations = 0; var transformedMeshes = new List(); + var bvhAccelerators = new List(); foreach (var (mesh, matrix) in meshAndMatrix) { totalOperations += mesh.Faces.Count; - transformedMeshes.Add(mesh.Copy(CancellationToken.None)); - transformedMeshes.Last().Transform(matrix); + var meshCopy = mesh.Copy(CancellationToken.None); + transformedMeshes.Add(meshCopy); + meshCopy.Transform(matrix); + bvhAccelerators.Add(MeshToBVH.Convert(meshCopy)); } var plansByMesh = new List>(); @@ -316,7 +324,7 @@ namespace MatterHackers.PolygonMesh var mesh2 = transformedMeshes[sliceMeshIndex]; // calculate and add the PWN face from the loops - var slice = SliceLayer.CreateSlice(mesh2, cutPlane, transformTo0Plane); + var slice = SliceLayer.CreateSlice(mesh2, cutPlane, transformTo0Plane, bvhAccelerators[sliceMeshIndex]); if (firstSlice) { totalSlice = slice; @@ -465,7 +473,13 @@ namespace MatterHackers.PolygonMesh return resultsMesh; } - private static Mesh ExactLegacy(IEnumerable<(Mesh mesh, Matrix4X4 matrix)> items, CsgModes operation, ProcessingModes processingMode, ProcessingResolution inputResolution, ProcessingResolution outputResolution, IProgress reporter, CancellationToken cancellationToken) + private static Mesh ExactLegacy(IEnumerable<(Mesh mesh, Matrix4X4 matrix)> items, + CsgModes operation, + ProcessingModes processingMode, + ProcessingResolution inputResolution, + ProcessingResolution outputResolution, + IProgress reporter, + CancellationToken cancellationToken) { var progressStatus = new ProgressStatus(); var totalOperations = items.Count() - 1; diff --git a/MatterControlLib/PartPreviewWindow/SceneViewer/ItemTraceDataDrawable.cs b/MatterControlLib/PartPreviewWindow/SceneViewer/ItemTraceDataDrawable.cs index ad448cfb3..84ba4c867 100644 --- a/MatterControlLib/PartPreviewWindow/SceneViewer/ItemTraceDataDrawable.cs +++ b/MatterControlLib/PartPreviewWindow/SceneViewer/ItemTraceDataDrawable.cs @@ -32,6 +32,7 @@ using System.Collections.Generic; using System.Linq; using MatterHackers.Agg.UI; using MatterHackers.DataConverters3D; +using MatterHackers.PolygonMesh.Processors; using MatterHackers.RayTracer; using MatterHackers.RayTracer.Traceable; using MatterHackers.VectorMath; diff --git a/MatterControlLib/PartPreviewWindow/SceneViewer/SceneTraceDataDrawable.cs b/MatterControlLib/PartPreviewWindow/SceneViewer/SceneTraceDataDrawable.cs index e09d5eaee..b0de9b62c 100644 --- a/MatterControlLib/PartPreviewWindow/SceneViewer/SceneTraceDataDrawable.cs +++ b/MatterControlLib/PartPreviewWindow/SceneViewer/SceneTraceDataDrawable.cs @@ -29,6 +29,7 @@ either expressed or implied, of the FreeBSD Project. using MatterHackers.Agg.UI; using MatterHackers.DataConverters3D; +using MatterHackers.PolygonMesh.Processors; using MatterHackers.RayTracer; using MatterHackers.VectorMath; diff --git a/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs b/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs index 0f757f35f..143494b25 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/Object3DControlsLayer.cs @@ -44,6 +44,7 @@ using MatterHackers.MatterControl.SlicerConfiguration; using MatterHackers.MeshVisualizer; using MatterHackers.Plugins.EditorTools; using MatterHackers.PolygonMesh; +using MatterHackers.PolygonMesh.Processors; using MatterHackers.RayTracer; using MatterHackers.RenderOpenGl; using MatterHackers.RenderOpenGl.OpenGl; diff --git a/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs b/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs index 4fae56064..d7e3a1b63 100644 --- a/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs +++ b/MatterControlLib/PartPreviewWindow/View3D/View3DWidget.cs @@ -52,6 +52,7 @@ using MatterHackers.MatterControl.Library; using MatterHackers.MatterControl.PrinterCommunication; using MatterHackers.MatterControl.PrinterControls.PrinterConnections; using MatterHackers.MatterControl.SlicerConfiguration; +using MatterHackers.PolygonMesh.Processors; using MatterHackers.RayTracer; using MatterHackers.RenderOpenGl; using MatterHackers.RenderOpenGl.OpenGl; diff --git a/Submodules/agg-sharp b/Submodules/agg-sharp index beea93ece..5ede7a0c6 160000 --- a/Submodules/agg-sharp +++ b/Submodules/agg-sharp @@ -1 +1 @@ -Subproject commit beea93ece48c0ec46fbf0b037106aa3a9e3baf5a +Subproject commit 5ede7a0c6ae538b73eddf77195805d239c497064