OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@678 7cac0...
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Tue, 30 Nov 2010 09:32:57 +0000 (09:32 +0000)
committerAtsuo Igarashi <atsuoigarashi@ubuntu.(none)>
Tue, 5 Apr 2011 06:34:58 +0000 (15:34 +0900)
utils/jogl/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/gl/NyARRealityGl.java [new file with mode: 0644]

diff --git a/utils/jogl/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/gl/NyARRealityGl.java b/utils/jogl/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/gl/NyARRealityGl.java
new file mode 100644 (file)
index 0000000..3ac74aa
--- /dev/null
@@ -0,0 +1,96 @@
+package jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl;\r
+\r
+import javax.media.opengl.GL;\r
+\r
+import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.param.NyARFrustum;\r
+import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
+import jp.nyatla.nyartoolkit.core.param.NyARPerspectiveProjectionMatrix;\r
+import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
+import jp.nyatla.nyartoolkit.core.raster.rgb.INyARRgbRaster;\r
+import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
+import jp.nyatla.nyartoolkit.core.types.NyARIntSize;\r
+import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;\r
+import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARReality;\r
+import jp.nyatla.nyartoolkit.dev.rpf.realitysource.nyartk.NyARRealitySource;\r
+import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
+import jp.nyatla.nyartoolkit.jogl.utils.NyARGLUtil;\r
+\r
+/**\r
+ * OpenGLに特化したNyARRealityクラスです。\r
+ * @author nyatla\r
+ */\r
+public class NyARRealityGl extends NyARReality\r
+{\r
+       private double[] _gl_frustum_rh=new double[16];\r
+       /**\r
+        * ARToolKitスタイルのModelView行列を、OpenGLスタイルのモデルビュー行列に変換します。\r
+        * @param i_ny_style_mat\r
+        * @param o_gl_style_mat\r
+        */\r
+       public static void toGLViewMat(NyARDoubleMatrix44 i_ny_style_mat,double[] o_gl_style_mat)\r
+       {\r
+               NyARGLUtil.toCameraViewRH(i_ny_style_mat, 1, o_gl_style_mat);\r
+       }\r
+       \r
+       public NyARRealityGl(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target) throws NyARException\r
+       {\r
+               super(i_param,i_near,i_far,i_max_known_target,i_max_unknown_target);\r
+       }\r
+       /**\r
+        * 透視投影行列と視錐体パラメータを元に、インスタンスを作成します。\r
+        * この関数は、樽型歪み矯正を外部で行うときに使います。\r
+        * @param i_prjmat\r
+        * ARToolKitスタイルのカメラパラメータです。通常は{@link NyARParam#getPerspectiveProjectionMatrix()}から得られた値を使います。\r
+        * @param i_screen_size\r
+        * スクリーン(入力画像)のサイズです。通常は{@link NyARParam#getScreenSize()}から得られた値を使います。\r
+        * @param i_near\r
+        * 視錐体のnear-pointをmm単位で指定します。\r
+        * default値は{@link #FRASTRAM_ARTK_NEAR}です。\r
+        * @param i_far\r
+        * 視錐体のfar-pointをmm単位で指定します。\r
+        * default値は{@link #FRASTRAM_ARTK_FAR}です。\r
+        * @param i_max_known_target\r
+        * @param i_max_unknown_target\r
+        * @throws NyARException\r
+        */\r
+       public NyARRealityGl(NyARPerspectiveProjectionMatrix i_prjmat,NyARIntSize i_screen_size,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target) throws NyARException\r
+       {\r
+               super(i_screen_size,i_near,i_far,i_prjmat,null,i_max_known_target,i_max_unknown_target);\r
+               //カメラパラメータを取得しておく。\r
+               this._frustum.refMatrix().getValueT(this._gl_frustum_rh);\r
+       }\r
+       \r
+       private double[] _temp=new double[16];\r
+       /**\r
+        * NyARToolKitの姿勢変換行列をOpenGLスタックへロードします。\r
+        * @throws NyARException \r
+        */\r
+       public void glLoadModelViewMatrix(GL i_gl,NyARDoubleMatrix44 i_mat) throws NyARException\r
+       {\r
+               NyARGLUtil.toCameraViewRH(i_mat,1,this._temp);\r
+               i_gl.glLoadMatrixd(this._temp,0);\r
+               return;\r
+       }\r
+       \r
+       /**\r
+        * projection行列をOpenGLの行列スタックへロードします。\r
+        */\r
+       public void glLoadCameraFrustum(GL i_gl)\r
+       {\r
+               i_gl.glLoadMatrixd(this._gl_frustum_rh,0);\r
+               return;\r
+       }\r
+       /**\r
+        * 現在のViewPortに、i_rtsourceの内容を描画します。\r
+        * @param i_gl\r
+        * OpenGLインスタンスを指定します。\r
+        * @param i_raster\r
+        * @throws NyARException\r
+        */\r
+       public void glDrawRealitySource(GL i_gl,NyARRealitySource i_rtsource) throws NyARException\r
+       {\r
+               NyARGLDrawUtil.drawBackGround(i_gl,i_rtsource.refRgbSource(),1.0);\r
+               return;\r
+       }\r
+}
\ No newline at end of file