/// <summary> /// Color coded picking. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void winGLCanvas1_MouseMove(object sender, MouseEventArgs e) { LegacyTriangleRenderer triangleTip = this.triangleTip; if (triangleTip == null) { return; } int x = e.X; int y = this.winGLCanvas1.Height - e.Y - 1; PickedGeometry pickedGeometry = this.scene.Pick(x, y, PickingGeometryType.Triangle); if (pickedGeometry != null) { triangleTip.Vertex0 = pickedGeometry.Positions[0]; triangleTip.Vertex1 = pickedGeometry.Positions[1]; triangleTip.Vertex2 = pickedGeometry.Positions[2]; triangleTip.Parent = pickedGeometry.FromRenderer as RendererBase; } else { triangleTip.Parent = null; } }
private void FormMain_Load(object sender, EventArgs e) { var position = new vec3(5, 3, 4); var center = new vec3(0, 0, 0); var up = new vec3(0, 1, 0); var camera = new Camera(position, center, up, CameraType.Perspecitive, this.winGLCanvas1.Width, this.winGLCanvas1.Height); this.teapot = TeapotRenderer.Create(); teapot.Children.Add(new LegacyBoundingBoxRenderer(teapot.ModelSize)); this.scene = new Scene(camera, this.winGLCanvas1) { RootElement = teapot, }; this.triangleTip = new LegacyTriangleRenderer(); this.chkRenderWireframe_CheckedChanged(this.chkRenderWireframe, EventArgs.Empty); this.chkRenderBody_CheckedChanged(this.chkRenderBody, EventArgs.Empty); }