void glLightedView_DrawGlContent(object sender, EventArgs e)
 {
     if (rootUnion != null)
     {
         RenderCsgToGl.Render(rootUnion);
     }
     if (meshToRender != null)
     {
         RenderMeshToGl.Render(meshToRender, RGBA_Bytes.Gray);
     }
 }
        private void trackballTumbleWidget_DrawGlContent(object sender, EventArgs e)
        {
            for (int groupIndex = 0; groupIndex < MeshGroups.Count; groupIndex++)
            {
                MeshGroup meshGroupToRender = MeshGroups[groupIndex];

                int part = 0;
                foreach (Mesh meshToRender in meshGroupToRender.Meshes)
                {
                    MeshMaterialData meshData  = MeshMaterialData.Get(meshToRender);
                    RGBA_Bytes       drawColor = GetMaterialColor(meshData.MaterialIndex);
                    if (meshGroupToRender == SelectedMeshGroup)
                    {
                        drawColor = GetSelectedMaterialColor(meshData.MaterialIndex);
                    }

                    RenderMeshToGl.Render(meshToRender, drawColor, MeshGroupTransforms[groupIndex].TotalTransform, RenderType);
                    part++;
                }
            }

            foreach (InteractionVolume interactionVolume in interactionVolumes)
            {
                interactionVolume.DrawGlContent(e);
            }

            // we don't want to render the bed or bulid volume before we load a model.
            if (MeshGroups.Count > 0 || AllowBedRenderingWhenEmpty)
            {
                if (RenderBed)
                {
                    RenderMeshToGl.Render(printerBed, this.BedColor);
                }

                if (buildVolume != null && RenderBuildVolume)
                {
                    RenderMeshToGl.Render(buildVolume, this.BuildVolumeColor);
                }

                if (false)                 // this is code to draw a small axis indicator
                {
                    double big   = 10;
                    double small = 1;
                    Mesh   xAxis = PlatonicSolids.CreateCube(big, small, small);
                    RenderMeshToGl.Render(xAxis, RGBA_Bytes.Red);
                    Mesh yAxis = PlatonicSolids.CreateCube(small, big, small);
                    RenderMeshToGl.Render(yAxis, RGBA_Bytes.Green);
                    Mesh zAxis = PlatonicSolids.CreateCube(small, small, big);
                    RenderMeshToGl.Render(zAxis, RGBA_Bytes.Blue);
                }
            }
        }
        public override void DrawGlContent(EventArgs e)
        {
            if (MeshViewerToDrawWith.SelectedMeshGroup != null)
            {
                // draw the bounds on the bed
                AxisAlignedBoundingBox selectedBounds = MeshViewerToDrawWith.GetBoundsForSelection();

                Mesh bottomBounds = PlatonicSolids.CreateCube(selectedBounds.XSize, selectedBounds.YSize, .1);
                RenderMeshToGl.Render(bottomBounds, new RGBA_Bytes(22, 80, 220, 30), TotalTransform, RenderTypes.Shaded);
            }

            base.DrawGlContent(e);
        }
Exemple #4
0
        public static void Render()
        {
            MatterHackers.PolygonMesh.Mesh mesh = new MatterHackers.PolygonMesh.Mesh();
            var v0 = mesh.CreateVertex(new Vector3(1, 0, 1));   // V0
            var v1 = mesh.CreateVertex(new Vector3(1, 0, -1));  // V1
            var v2 = mesh.CreateVertex(new Vector3(-1, 0, -1)); // V2
            var v3 = mesh.CreateVertex(new Vector3(-1, 0, 1));  // V3
            var v4 = mesh.CreateVertex(new Vector3(0, 1, 0));   // V4

            mesh.CreateFace(new Vertex[] { v0, v1, v2, v3 });
            mesh.CreateFace(new Vertex[] { v3, v0, v4 });
            mesh.CreateFace(new Vertex[] { v0, v1, v4 });
            mesh.CreateFace(new Vertex[] { v1, v2, v4 });
            mesh.CreateFace(new Vertex[] { v2, v3, v4 });

            RenderMeshToGl.Render(mesh, new RGBA_Floats(.3, .8, 7));
        }
Exemple #5
0
        void trackballTumbleWidget_DrawGlContent(object sender, EventArgs e)
        {
            foreach (Mesh meshToRender in meshsToRender)
            {
                if (ShowWireFrame)
                {
                    RenderMeshToGl.Render(meshToRender, PartColor, true);
                }
                else
                {
                    RenderMeshToGl.Render(meshToRender, PartColor);
                }
            }

            if (RenderBed && meshsToRender.Count > 0)
            {
                RGBA_Floats bedColor = new RGBA_Floats(.8, .8, .8, .5);
                RenderMeshToGl.Render(printerBed, bedColor);
            }
        }
Exemple #6
0
        private void RenderLine(Matrix4X4 transform, Vector3 start, Vector3 end, RGBA_Bytes color, bool zBuffered = true)
        {
            Vector3 lineCenter = (start + end) / 2;

            Vector3   delta           = start - end;
            Matrix4X4 rotateTransform = Matrix4X4.CreateRotation(new Quaternion(Vector3.UnitX + new Vector3(.0001, -.00001, .00002), delta.GetNormal()));
            Matrix4X4 scaleTransform  = Matrix4X4.CreateScale((end - start).Length, 1, 1);
            Matrix4X4 lineTransform   = scaleTransform * rotateTransform * Matrix4X4.CreateTranslation(lineCenter) * transform;

            if (zBuffered)
            {
                RenderMeshToGl.Render(lineMesh, RGBA_Bytes.Black, lineTransform, RenderTypes.Shaded);
                //drawEvent.graphics2D.Line(cornerPositionScreen, cornerPositionCcwScreen, RGBA_Bytes.Gray);
            }
            else
            {
                // render on top of everything very lightly
                RenderMeshToGl.Render(lineMesh, new RGBA_Bytes(RGBA_Bytes.Black, 5), lineTransform, RenderTypes.Shaded);
            }
        }
        void trackballTumbleWidget_DrawGlContent(object sender, EventArgs e)
        {
            for (int groupIndex = 0; groupIndex < MeshGroups.Count; groupIndex++)
            {
                MeshGroup meshGroupToRender = MeshGroups[groupIndex];

                int part = 0;
                foreach (Mesh meshToRender in meshGroupToRender.Meshes)
                {
                    MeshMaterialData meshData  = MeshMaterialData.Get(meshToRender);
                    RGBA_Bytes       drawColor = GetMaterialColor(meshData.MaterialIndex);
                    if (meshGroupToRender == SelectedMeshGroup)
                    {
                        drawColor = GetSelectedMaterialColor(meshData.MaterialIndex);
                    }

                    RenderMeshToGl.Render(meshToRender, drawColor, MeshGroupTransforms[groupIndex].TotalTransform, RenderType);
                    part++;
                }
            }

            foreach (InteractionVolume interactionVolume in interactionVolumes)
            {
                interactionVolume.DrawGlContent(e);
            }

            // we don't want to render the bed or bulid volume before we load a model.
            if (MeshGroups.Count > 0 || AllowBedRenderingWhenEmpty)
            {
                if (RenderBed)
                {
                    RenderMeshToGl.Render(printerBed, this.BedColor);
                }

                if (buildVolume != null && RenderBuildVolume)
                {
                    RenderMeshToGl.Render(buildVolume, this.BuildVolumeColor);
                }
            }
        }
Exemple #8
0
        public override void DrawGlContent(EventArgs e)
        {
            if (MeshViewerToDrawWith.SelectedMeshGroup != null)
            {
                if (MouseOver)
                {
                    RenderMeshToGl.Render(upArrow, RGBA_Bytes.Red, TotalTransform, RenderTypes.Shaded);

                    // draw the hight from the bottom to the bed
                    AxisAlignedBoundingBox selectedBounds = MeshViewerToDrawWith.GetBoundsForSelection();

                    Vector3 bottomRight = new Vector3(selectedBounds.maxXYZ.x, selectedBounds.maxXYZ.y, selectedBounds.minXYZ.z);
                    Vector2 bottomRightScreenPosition = MeshViewerToDrawWith.TrackballTumbleWidget.GetScreenPosition(bottomRight);
                }
                else
                {
                    RenderMeshToGl.Render(upArrow, RGBA_Bytes.Black, TotalTransform, RenderTypes.Shaded);
                }
            }

            base.DrawGlContent(e);
        }
Exemple #9
0
        public override void DrawGlContent(EventArgs e)
        {
            bool shouldDrawScaleControls = true;

            if (MeshViewerToDrawWith.SelectedInteractionVolume != null &&
                MeshViewerToDrawWith.SelectedInteractionVolume as UpArrow3D == null)
            {
                shouldDrawScaleControls = false;
            }
            if (MeshViewerToDrawWith.SelectedMeshGroup != null &&
                shouldDrawScaleControls)
            {
                if (MouseOver)
                {
                    RenderMeshToGl.Render(upArrow, RGBA_Bytes.Red, TotalTransform, RenderTypes.Shaded);
                }
                else
                {
                    RenderMeshToGl.Render(upArrow, RGBA_Bytes.Black, TotalTransform, RenderTypes.Shaded);
                }
            }

            base.DrawGlContent(e);
        }