예제 #1
0
 public void PostDraw(Hisui.Graphics.ISceneContext sc)
 {
     if (this.Direction == ClipDirections.None)
     {
         return;
     }
     _clip.PostDraw(sc);
 }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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();
        }