1 package jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl;
\r
3 import javax.media.opengl.GL;
\r
5 import jp.nyatla.nyartoolkit.NyARException;
\r
6 import jp.nyatla.nyartoolkit.core.param.NyARParam;
\r
7 import jp.nyatla.nyartoolkit.core.param.NyARPerspectiveProjectionMatrix;
\r
8 import jp.nyatla.nyartoolkit.core.types.NyARIntSize;
\r
9 import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;
\r
10 import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARReality;
\r
11 import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource;
\r
12 import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;
\r
13 import jp.nyatla.nyartoolkit.jogl.utils.NyARGLUtil;
\r
16 * このクラスは、OpenGLに特化した{@link NyARReality}クラスです。
\r
17 * OpenGL形式の値をそのまま扱う関数を定義しています。
\r
19 public class NyARRealityGl extends NyARReality
\r
21 private double[] _gl_frustum_rh=new double[16];
\r
23 * この関数は、 ARToolKitスタイルのModelView行列を、OpenGLスタイルのモデルビュー行列に変換します。
\r
24 * @param i_ny_style_mat
\r
25 * NyARToolkitスタイルの行列を指定します。
\r
26 * @param o_gl_style_mat
\r
27 * OpenGL形式の行列を受け取る配列を指定します。16要素である必要があります。
\r
29 public static void toGLViewMat(NyARDoubleMatrix44 i_ny_style_mat,double[] o_gl_style_mat)
\r
31 NyARGLUtil.toCameraViewRH(i_ny_style_mat, 1, o_gl_style_mat);
\r
35 * カメラパラメータ、視錐体パラメータを元に、インスタンスを作成します。
\r
39 * 視錐体のnear-pointをmm単位で指定します。
\r
40 * 標準値は{@link #FRASTRAM_ARTK_NEAR}です。
\r
42 * 視錐体のfar-pointをmm単位で指定します。
\r
43 * 標準値は{@link #FRASTRAM_ARTK_FAR}です。
\r
44 * @param i_max_known_target
\r
45 * KnownステータスのRTターゲットの最大数を指定します。
\r
46 * @param i_max_unknown_target
\r
47 * UnKnownステータスのRTターゲットの最大数を指定します。
\r
49 public NyARRealityGl(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target) throws NyARException
\r
51 super(i_param,i_near,i_far,i_max_known_target,i_max_unknown_target);
\r
53 this._frustum.refMatrix().getValueT(this._gl_frustum_rh);
\r
56 * この関数は、透視投影行列と視錐体パラメータを元に、インスタンスを作成します。
\r
57 * 初期状態のインスタンスを生成します。
\r
58 * この関数は、樽型歪み矯正を行わないインスタンスを生成できます。
\r
60 * ARToolKit形式の射影変換パラメータを指定します。
\r
61 * @param i_screen_size
\r
62 * スクリーン(入力画像)のサイズを指定します。
\r
64 * {@link NyARReality#NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
\r
66 * {@link NyARReality#NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
\r
67 * @param i_max_known_target
\r
68 * {@link NyARReality#NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
\r
69 * @param i_max_unknown_target
\r
70 * {@link NyARReality#NyARReality(NyARParam i_param,double i_near,double i_far,int i_max_known_target,int i_max_unknown_target)}を参照
\r
71 * @throws NyARException
\r
73 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
75 super(i_screen_size,i_near,i_far,i_prjmat,null,i_max_known_target,i_max_unknown_target);
\r
77 this._frustum.refMatrix().getValueT(this._gl_frustum_rh);
\r
80 private double[] _temp=new double[16];
\r
82 * この関数は、NyARToolKitの姿勢変換行列をOpenGL行列スタックへロードします。
\r
86 * NyARToolkit形式の姿勢変換行列
\r
87 * @throws NyARException
\r
89 public void glLoadModelViewMatrix(GL i_gl,NyARDoubleMatrix44 i_mat) throws NyARException
\r
91 NyARGLUtil.toCameraViewRH(i_mat,1,this._temp);
\r
92 i_gl.glLoadMatrixd(this._temp,0);
\r
97 * この関数は、NyARToolKitの射影変換行列をOpenGL行列スタックへロードします。
\r
101 public void glLoadCameraFrustum(GL i_gl)
\r
103 i_gl.glLoadMatrixd(this._gl_frustum_rh,0);
\r
107 * この関数は、現在のViewPortに、i_rtsourceの元画像の内容を描画します。
\r
110 * OpenGLインスタンスを指定します。
\r
111 * @param i_rtsource
\r
112 * 描画するRealitySource
\r
113 * @throws NyARException
\r
115 public void glDrawRealitySource(GL i_gl,NyARRealitySource i_rtsource) throws NyARException
\r
117 NyARGLDrawUtil.drawBackGround(i_gl,i_rtsource.refRgbSource(),1.0);
\r