Merge pull request #5372 from larsbrubaker/main

Fixing error with support not visible when looking up from under the …
This commit is contained in:
Lars Brubaker 2022-09-06 17:34:49 -07:00 committed by GitHub
commit 0fa7dc8cd7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 50 additions and 34 deletions

3
.gitmodules vendored
View file

@ -4,3 +4,6 @@
[submodule "Submodules/agg-sharp"] [submodule "Submodules/agg-sharp"]
path = Submodules/agg-sharp path = Submodules/agg-sharp
url = https://github.com/MatterHackers/agg-sharp.git url = https://github.com/MatterHackers/agg-sharp.git
[submodule "Submodules/agg-sharp/glfw-net"]
path = Submodules/agg-sharp/glfw-net
url = https://github.com/MatterHackers/glfw-net.git

View file

@ -73,6 +73,8 @@
<ProjectReference Include="..\Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj" /> <ProjectReference Include="..\Submodules\agg-sharp\DataConverters2D\DataConverters2D.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj" /> <ProjectReference Include="..\Submodules\agg-sharp\DataConverters3D\DataConverters3D.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\geometry3Sharp\geometry3Sharp.csproj" /> <ProjectReference Include="..\Submodules\agg-sharp\geometry3Sharp\geometry3Sharp.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\glfw-net\GLFW.NET\GLFW.NETStandard.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\Glfw\GlfwProvider.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\GuiAutomation\GuiAutomation.csproj" /> <ProjectReference Include="..\Submodules\agg-sharp\GuiAutomation\GuiAutomation.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\Gui\Gui.csproj" /> <ProjectReference Include="..\Submodules\agg-sharp\Gui\Gui.csproj" />
<ProjectReference Include="..\Submodules\agg-sharp\ImageProcessing\ImageProcessing.csproj" /> <ProjectReference Include="..\Submodules\agg-sharp\ImageProcessing\ImageProcessing.csproj" />

View file

@ -1141,13 +1141,6 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
} }
} }
var renderBedTransparent = !floorDrawable.LookingDownOnBed || floorDrawable.SelectedObjectUnderBed;
if (renderBedTransparent)
{
floorDrawable.Draw(this, e, Matrix4X4.Identity, this.World);
}
var wireColor = Color.Transparent; var wireColor = Color.Transparent;
switch (modelRenderStyle) switch (modelRenderStyle)
{ {
@ -1170,30 +1163,47 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
} }
} }
// Draw transparent objects void DrawTransparentMeshes(bool aboveBed)
foreach (var item in transparentMeshes)
{ {
GL.Enable(EnableCap.Lighting); foreach (var item in transparentMeshes)
{
if (aboveBed && item.Object3D.GetAxisAlignedBoundingBox().Center.Z <= 0
|| (!aboveBed && item.Object3D.GetAxisAlignedBoundingBox().Center.Z > 0))
{
continue;
}
var object3D = item.Object3D; GL.Enable(EnableCap.Lighting);
GLHelper.Render(
object3D.Mesh, var object3D = item.Object3D;
item.Color, GLHelper.Render(
object3D.WorldMatrix(), object3D.Mesh,
RenderTypes.Outlines, item.Color,
object3D.WorldMatrix() * World.ModelviewMatrix, object3D.WorldMatrix(),
wireColor, RenderTypes.Outlines,
allowBspRendering: transparentMeshes.Count < 1000, object3D.WorldMatrix() * World.ModelviewMatrix,
forceCullBackFaces: false); wireColor,
allowBspRendering: transparentMeshes.Count < 1000,
forceCullBackFaces: false);
}
} }
if (!renderBedTransparent) // Draw transparent objects
if (floorDrawable.LookingDownOnBed)
{ {
floorDrawable.Draw(this, e, Matrix4X4.Identity, this.World); DrawTransparentMeshes(false);
} floorDrawable.Draw(this, e, Matrix4X4.Identity, this.World);
DrawTransparentMeshes(true);
}
else
{
DrawTransparentMeshes(true);
floorDrawable.Draw(this, e, Matrix4X4.Identity, this.World);
DrawTransparentMeshes(false);
}
// Draw the editor items in the same scope as the 3D Controls // Draw the editor items in the same scope as the 3D Controls
foreach (var item in editorDrawItems) foreach (var item in editorDrawItems)
{ {
// Invoke existing IEditorDraw when iterating items // Invoke existing IEditorDraw when iterating items
if (item is IEditorDraw editorDraw) if (item is IEditorDraw editorDraw)
@ -1203,16 +1213,17 @@ namespace MatterHackers.MatterControl.PartPreviewWindow
} }
DrawObject3DControlVolumes(e); DrawObject3DControlVolumes(e);
// draw everything
foreach (var drawable in drawables.Where(d => d.DrawStage == DrawStage.TransparentContent))
{
if (drawable.Enabled)
{
drawable.Draw(this, e, Matrix4X4.Identity, this.World);
}
}
foreach (var drawable in drawables.Where(d => d.DrawStage == DrawStage.TransparentContent)) GLHelper.UnsetGlContext();
{
if (drawable.Enabled)
{
drawable.Draw(this, e, Matrix4X4.Identity, this.World);
}
}
GLHelper.UnsetGlContext();
// Invoke DrawStage.Last item drawables // Invoke DrawStage.Last item drawables
foreach (var item in scene.Children) foreach (var item in scene.Children)