public void PostDraw(Hisui.Graphics.ISceneContext sc) { if (this.Direction == ClipDirections.None) { return; } _clip.PostDraw(sc); }
public void PreDraw(Hisui.Graphics.ISceneContext sc) { if (this.Direction == ClipDirections.None) { return; } var sphere = _docviews.WorldDocumentScene.BoundingSphere; var range = new Hisui.Geom.Range(-sphere.Radius, sphere.Radius); var codsys = Geom.CodSys3d.Unit; switch (this.Direction) { case ClipDirections.View: codsys.r = sc.Camera.ViewingPos.r; codsys.SetRotation(codsys.v, codsys.u); break; case ClipDirections.PlusX: codsys.SetRotation(Geom.Vector3d.Ey, Geom.Vector3d.Ez); break; case ClipDirections.PlusY: codsys.SetRotation(Geom.Vector3d.Ez, Geom.Vector3d.Ex); break; case ClipDirections.PlusZ: codsys.SetRotation(Geom.Vector3d.Ex, Geom.Vector3d.Ey); break; case ClipDirections.MinusX: codsys.SetRotation(Geom.Vector3d.Ez, Geom.Vector3d.Ey); break; case ClipDirections.MinusY: codsys.SetRotation(Geom.Vector3d.Ex, Geom.Vector3d.Ez); break; case ClipDirections.MinusZ: codsys.SetRotation(Geom.Vector3d.Ey, Geom.Vector3d.Ex); break; } codsys.o = sphere.Center + range.ParamToValue(this.Position) * codsys.n; _clip.CodSys = codsys; _clip.PreDraw(sc); }
/// <summary> /// Kinectのデータを描画する /// </summary> /// <param name="sc"></param> public void Draw(Hisui.Graphics.ISceneContext sc) { //Kinect からデータ取得 if (GetPoint()) { //点群を描画 using (var scope = sc.Push()) { scope.Lighting = false; GL.glPointSize(PointSize); GL.glBegin(GL.GL_POINTS); for (int i = 0; i < rgb.Length; i++) { GL.glColor3d(rgb[i].R, rgb[i].G, rgb[i].B); GL.glVertex3d(depth[i].X, depth[i].Y, depth[i].Z); } GL.glEnd(); } } //描画が終わる度に次の描画のリクエストを発行する Hisui.SI.View.Invalidate(); }