public MeshViewerWidget(double bedXSize, double bedYSize, double scale) { ShowWireFrame = false; RenderBed = true; PartColor = RGBA_Bytes.White; this.partScale = scale; trackballTumbleWidget = new TrackballTumbleWidget(); trackballTumbleWidget.DrawRotationHelperCircle = false; trackballTumbleWidget.DrawGlContent += trackballTumbleWidget_DrawGlContent; AddChild(trackballTumbleWidget); CreateBedGridImage((int)(bedXSize / 10), (int)(bedYSize / 10)); printerBed = PlatonicSolids.CreateCube(bedXSize, bedYSize, 2); Face face = printerBed.Faces[0]; { FaceData faceData = new FaceData(); faceData.Textures.Add(bedCentimeterGridImage); face.Data = faceData; foreach (FaceEdge faceEdge in face.FaceEdgeIterator()) { FaceEdgeData edgeUV = new FaceEdgeData(); edgeUV.TextureUV.Add(new Vector2((bedXSize / 2 + faceEdge.vertex.Position.x) / bedXSize, (bedYSize / 2 + faceEdge.vertex.Position.y) / bedYSize)); faceEdge.Data = edgeUV; } } foreach (Vertex vertex in printerBed.Vertices) { vertex.Position = vertex.Position - new Vector3(0, 0, 1); } trackballTumbleWidget.AnchorAll(); }