OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@655 7cac0...
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Tue, 30 Nov 2010 02:08:52 +0000 (02:08 +0000)
committerAtsuo Igarashi <atsuoigarashi@ubuntu.(none)>
Tue, 5 Apr 2011 04:26:07 +0000 (13:26 +0900)
sample/jmf/.classpath [deleted file]
sample/jmf/.project [deleted file]
sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite.java
sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/JavaSimpleLite2.java
sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/SingleARMarker.java
sample/jogl/jp/nyatla/nyartoolkit/jogl/sample/SingleNyIdMarker.java

diff --git a/sample/jmf/.classpath b/sample/jmf/.classpath
deleted file mode 100644 (file)
index d869052..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<classpath>\r
-       <classpathentry kind="src" path=""/>\r
-       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>\r
-       <classpathentry combineaccessrules="false" kind="src" path="/NyARToolKit"/>\r
-       <classpathentry combineaccessrules="false" kind="src" path="/NyARToolkit.utils.jmf"/>\r
-       <classpathentry kind="lib" path="C:/Program Files (x86)/JMF2.1.1e/lib/jmf.jar"/>\r
-       <classpathentry kind="output" path=""/>\r
-</classpath>\r
diff --git a/sample/jmf/.project b/sample/jmf/.project
deleted file mode 100644 (file)
index bdf574b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<projectDescription>\r
-       <name>NyARToolkit.sample.jmf</name>\r
-       <comment></comment>\r
-       <projects>\r
-               <project>NyARToolKit</project>\r
-       </projects>\r
-       <buildSpec>\r
-               <buildCommand>\r
-                       <name>org.eclipse.jdt.core.javabuilder</name>\r
-                       <arguments>\r
-                       </arguments>\r
-               </buildCommand>\r
-       </buildSpec>\r
-       <natures>\r
-               <nature>org.eclipse.jdt.core.javanature</nature>\r
-       </natures>\r
-</projectDescription>\r
index 85f5323..84474ad 100644 (file)
@@ -30,6 +30,7 @@ import java.awt.event.*;
 import java.awt.*;\r
 import javax.media.Buffer;\r
 import javax.media.opengl.*;\r
+\r
 import com.sun.opengl.util.*;\r
 import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.*;\r
@@ -40,7 +41,8 @@ import jp.nyatla.nyartoolkit.jmf.utils.*;
 import jp.nyatla.nyartoolkit.jogl.utils.*;\r
 \r
 /**\r
- * simpleLiteと同じようなテストプログラム 出来る限りARToolKitのサンプルと似せて作ってあります。 最も一致する"Hiro"マーカーを一つ選択して、その上に立方体を表示します。\r
+ * simpleLiteと同じようなテストプログラム 出来る限りARToolKitのサンプルと似せて作ってあります。 \r
+ * 最も一致する"Hiro"マーカーを一つ選択して、その上に立方体を表示します。\r
  * \r
  */\r
 public class JavaSimpleLite implements GLEventListener, JmfCaptureListener\r
@@ -57,8 +59,6 @@ public class JavaSimpleLite implements GLEventListener, JmfCaptureListener
 \r
        private GL _gl;\r
 \r
-       private NyARGLUtil _glnya;\r
-\r
        // NyARToolkit関係\r
        private NyARSingleDetectMarker _nya;\r
 \r
@@ -67,55 +67,11 @@ public class JavaSimpleLite implements GLEventListener, JmfCaptureListener
        private Object _sync_object=new Object();\r
        private double[] _camera_projection = new double[16];\r
 \r
-       /**\r
-        * 立方体を書く\r
-        * \r
-        */\r
-       void drawCube()\r
-       {\r
-               // Colour cube data.\r
-               int polyList = 0;\r
-               float fSize = 0.5f;// マーカーサイズに対して0.5倍なので、4cmの立方体\r
-               int f, i;\r
-               float[][] cube_vertices = new float[][] { { 1.0f, 1.0f, 1.0f }, { 1.0f, -1.0f, 1.0f }, { -1.0f, -1.0f, 1.0f }, { -1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, -1.0f }, { 1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, { -1.0f, 1.0f, -1.0f } };\r
-               float[][] cube_vertex_colors = new float[][] { { 1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 1.0f }, { 1.0f, 0.0f, 1.0f }, { 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f } };\r
-               int cube_num_faces = 6;\r
-               short[][] cube_faces = new short[][] { { 3, 2, 1, 0 }, { 2, 3, 7, 6 }, { 0, 1, 5, 4 }, { 3, 0, 4, 7 }, { 1, 2, 6, 5 }, { 4, 5, 6, 7 } };\r
-\r
-               if (polyList == 0) {\r
-                       polyList = _gl.glGenLists(1);\r
-                       _gl.glNewList(polyList, GL.GL_COMPILE);\r
-                       _gl.glBegin(GL.GL_QUADS);\r
-                       for (f = 0; f < cube_num_faces; f++)\r
-                               for (i = 0; i < 4; i++) {\r
-                                       _gl.glColor3f(cube_vertex_colors[cube_faces[f][i]][0], cube_vertex_colors[cube_faces[f][i]][1], cube_vertex_colors[cube_faces[f][i]][2]);\r
-                                       _gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-                               }\r
-                       _gl.glEnd();\r
-                       _gl.glColor3f(0.0f, 0.0f, 0.0f);\r
-                       for (f = 0; f < cube_num_faces; f++) {\r
-                               _gl.glBegin(GL.GL_LINE_LOOP);\r
-                               for (i = 0; i < 4; i++)\r
-                                       _gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-                               _gl.glEnd();\r
-                       }\r
-                       _gl.glEndList();\r
-               }\r
-\r
-               _gl.glPushMatrix(); // Save world coordinate system.\r
-               _gl.glTranslatef(0.0f, 0.0f, 0.5f); // Place base of cube on marker surface.\r
-               _gl.glRotatef(0.0f, 0.0f, 0.0f, 1.0f); // Rotate about z axis.\r
-               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-               _gl.glCallList(polyList); // Draw the cube.\r
-               _gl.glPopMatrix(); // Restore world coordinate system.\r
-\r
-       }\r
-\r
        public JavaSimpleLite(NyARParam i_param, NyARCode i_ar_code) throws NyARException\r
        {\r
                this._ar_param = i_param;\r
 \r
-               Frame frame = new Frame("Java simpleLite with NyARToolkit");\r
+               Frame frame = new Frame("NyARToolkit["+this.getClass().getName()+"]");\r
 \r
                \r
                // キャプチャの準備\r
@@ -126,11 +82,11 @@ public class JavaSimpleLite implements GLEventListener, JmfCaptureListener
                }\r
                this._capture.setOnCapture(this);\r
                //JMFラスタオブジェクト\r
-               this._cap_image = new JmfNyARRaster_RGB(this._ar_param, this._capture.getCaptureFormat());\r
+               this._cap_image = new JmfNyARRaster_RGB(this._capture.getCaptureFormat());\r
                \r
                // NyARToolkitの準備\r
                this._nya = new NyARSingleDetectMarker(this._ar_param, i_ar_code, 80.0,this._cap_image.getBufferType());\r
-               this._nya.setContinueMode(false);// ここをtrueにすると、transMatContinueモード(History計算)になります。\r
+               this._nya.setContinueMode(true);// ここをtrueにすると、transMatContinueモード(History計算)になります。\r
                \r
                // 3Dを描画するコンポーネント\r
                GLCanvas canvas = new GLCanvas();\r
@@ -156,15 +112,13 @@ public class JavaSimpleLite implements GLEventListener, JmfCaptureListener
                this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
                // NyARToolkitの準備\r
                try {\r
-                       // NyARToolkit用の支援クラス\r
-                       _glnya = new NyARGLUtil(_gl);\r
                        // キャプチャ開始\r
                        _capture.start();\r
                } catch (Exception e) {\r
                        e.printStackTrace();\r
                }\r
-               // カメラパラメータの計算\r
-               this._glnya.toCameraFrustumRH(this._ar_param,this._camera_projection);\r
+               // カメラパラメータの計算(1mm=1.0)\r
+               NyARGLUtil.toCameraFrustumRH(this._ar_param,1,10,10000,this._camera_projection);\r
                this._animator = new Animator(drawable);\r
                this._animator.start();\r
                return;\r
@@ -198,24 +152,27 @@ public class JavaSimpleLite implements GLEventListener, JmfCaptureListener
                this._gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame.\r
                try{\r
                        synchronized(this._sync_object){\r
-                               this._glnya.drawBackGround(this._cap_image, 1.0);                       \r
+                               NyARGLDrawUtil.drawBackGround(this._gl,this._cap_image, 1.0);                   \r
                                // マーカーがあれば、立方体を描画\r
                                if (this._is_marker_exist){\r
                                        // マーカーの一致度を調査するならば、ここでnya.getConfidence()で一致度を調べて下さい。\r
                                        // Projection transformation.\r
-                                       _gl.glMatrixMode(GL.GL_PROJECTION);\r
-                                       _gl.glLoadMatrixd(_camera_projection, 0);\r
-                                       _gl.glMatrixMode(GL.GL_MODELVIEW);\r
+                                       this._gl.glMatrixMode(GL.GL_PROJECTION);\r
+                                       this._gl.glLoadMatrixd(_camera_projection, 0);\r
+                                       this._gl.glMatrixMode(GL.GL_MODELVIEW);\r
                                        // Viewing transformation.\r
-                                       _gl.glLoadIdentity();\r
+                                       this._gl.glLoadIdentity();\r
                                        // 変換行列を取得\r
-                                       _nya.getTransmationMatrix(transmat_result);\r
+                                       this._nya.getTransmationMatrix(transmat_result);\r
                                        // 変換行列をOpenGL形式に変換\r
-                                       _glnya.toCameraViewRH(transmat_result, __display_wk);\r
-                                       _gl.glLoadMatrixd(__display_wk, 0);\r
-               \r
-                                       // All other lighting and geometry goes here.\r
-                                       drawCube();\r
+                                       NyARGLUtil.toCameraViewRH(transmat_result,1, this.__display_wk);\r
+                                       this._gl.glLoadMatrixd(this.__display_wk, 0);           \r
+                                       //立方体を描画\r
+                                       this._gl.glPushMatrix(); // Save world coordinate system.\r
+                                       this._gl.glTranslatef(0.0f, 0.1f,20); // Place base of cube on marker surface.\r
+                                       this._gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
+                                       NyARGLDrawUtil.drawColorCube(this._gl,40);\r
+                                       this._gl.glPopMatrix(); // Restore world coordinate system.\r
                                }\r
                        }\r
                        Thread.sleep(1);// タスク実行権限を一旦渡す\r
index 732b9ca..4f80260 100644 (file)
@@ -29,8 +29,10 @@ package jp.nyatla.nyartoolkit.jogl.sample;
 \r
 import java.awt.event.*;\r
 import java.awt.*;\r
+\r
 import javax.media.*;\r
 import javax.media.opengl.*;\r
+\r
 import com.sun.opengl.util.Animator;\r
 import jp.nyatla.nyartoolkit.core.param.*;\r
 import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
@@ -63,60 +65,16 @@ public class JavaSimpleLite2 implements GLEventListener, JmfCaptureListener
 \r
        private GL _gl;\r
 \r
-       private NyARGLUtil _glnya;\r
-\r
        //NyARToolkit関係\r
        private NyARDetectMarker _nya;\r
 \r
        private NyARParam _ar_param;\r
        private double[] _camera_projection=new double[16];\r
-       /**\r
-        * 立方体を書く\r
-        *\r
-        */\r
-       void drawCube()\r
-       {\r
-               // Colour cube data.\r
-               int polyList = 0;\r
-               float fSize = 0.5f;//マーカーサイズに対して0.5倍なので、4cmの立方体\r
-               int f, i;\r
-               float[][] cube_vertices = new float[][] { { 1.0f, 1.0f, 1.0f }, { 1.0f, -1.0f, 1.0f }, { -1.0f, -1.0f, 1.0f }, { -1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, -1.0f }, { 1.0f, -1.0f, -1.0f }, { -1.0f, -1.0f, -1.0f }, { -1.0f, 1.0f, -1.0f } };\r
-               float[][] cube_vertex_colors = new float[][] { { 1.0f, 1.0f, 1.0f }, { 1.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 0.0f }, { 0.0f, 1.0f, 1.0f }, { 1.0f, 0.0f, 1.0f }, { 1.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 1.0f } };\r
-               int cube_num_faces = 6;\r
-               short[][] cube_faces = new short[][] { { 3, 2, 1, 0 }, { 2, 3, 7, 6 }, { 0, 1, 5, 4 }, { 3, 0, 4, 7 }, { 1, 2, 6, 5 }, { 4, 5, 6, 7 } };\r
-\r
-               if (polyList == 0) {\r
-                       polyList = _gl.glGenLists(1);\r
-                       _gl.glNewList(polyList, GL.GL_COMPILE);\r
-                       _gl.glBegin(GL.GL_QUADS);\r
-                       for (f = 0; f < cube_num_faces; f++)\r
-                               for (i = 0; i < 4; i++) {\r
-                                       _gl.glColor3f(cube_vertex_colors[cube_faces[f][i]][0], cube_vertex_colors[cube_faces[f][i]][1], cube_vertex_colors[cube_faces[f][i]][2]);\r
-                                       _gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-                               }\r
-                       _gl.glEnd();\r
-                       _gl.glColor3f(0.0f, 0.0f, 0.0f);\r
-                       for (f = 0; f < cube_num_faces; f++) {\r
-                               _gl.glBegin(GL.GL_LINE_LOOP);\r
-                               for (i = 0; i < 4; i++)\r
-                                       _gl.glVertex3f(cube_vertices[cube_faces[f][i]][0] * fSize, cube_vertices[cube_faces[f][i]][1] * fSize, cube_vertices[cube_faces[f][i]][2] * fSize);\r
-                               _gl.glEnd();\r
-                       }\r
-                       _gl.glEndList();\r
-               }\r
 \r
-               _gl.glPushMatrix(); // Save world coordinate system.\r
-               _gl.glTranslatef(0.0f, 0.0f, 0.5f); // Place base of cube on marker surface.\r
-               _gl.glRotatef(0.0f, 0.0f, 0.0f, 1.0f); // Rotate about z axis.\r
-               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-               _gl.glCallList(polyList); // Draw the cube.\r
-               _gl.glPopMatrix(); // Restore world coordinate system.\r
-\r
-       }\r
 \r
        public JavaSimpleLite2()\r
        {\r
-               Frame frame = new Frame("Java simpleLite with NyARToolkit");\r
+               Frame frame = new Frame("NyARToolkit["+this.getClass().getName()+"]");\r
 \r
                // 3Dを描画するコンポーネント\r
                GLCanvas canvas = new GLCanvas();\r
@@ -138,6 +96,7 @@ public class JavaSimpleLite2 implements GLEventListener, JmfCaptureListener
        public void init(GLAutoDrawable drawable)\r
        {\r
                _gl = drawable.getGL();\r
+               this._gl.glEnable(GL.GL_DEPTH_TEST);\r
                _gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
                //NyARToolkitの準備\r
                try {\r
@@ -159,19 +118,17 @@ public class JavaSimpleLite2 implements GLEventListener, JmfCaptureListener
                        ar_codes[1] = new NyARCode(16, 16);\r
                        ar_codes[1].loadARPattFromFile(CARCODE_FILE2);\r
                        //JMFラスタオブジェクト\r
-                       this._cap_image = new JmfNyARRaster_RGB(this._ar_param,_capture.getCaptureFormat());\r
+                       this._cap_image = new JmfNyARRaster_RGB(this._capture.getCaptureFormat());\r
 \r
                        this._nya = new NyARDetectMarker(this._ar_param, ar_codes, width, 2,this._cap_image.getBufferType());\r
                        this._nya.setContinueMode(false);//ここをtrueにすると、transMatContinueモード(History計算)になります。\r
-                       //NyARToolkit用の支援クラス\r
-                       this._glnya = new NyARGLUtil(_gl);\r
                        //キャプチャ開始\r
                        this._capture.start();\r
                } catch (Exception e) {\r
                        e.printStackTrace();\r
                }\r
                //カメラパラメータの計算\r
-               this._glnya.toCameraFrustumRH(_ar_param,_camera_projection);\r
+               NyARGLUtil.toCameraFrustumRH(_ar_param,1,10,10000,_camera_projection);\r
                \r
                this._animator = new Animator(drawable);\r
                this._animator.start();\r
@@ -207,7 +164,7 @@ public class JavaSimpleLite2 implements GLEventListener, JmfCaptureListener
                        synchronized (_cap_image) {\r
                                found_markers = _nya.detectMarkerLite(_cap_image, 110);\r
                                //背景を書く\r
-                               _glnya.drawBackGround(_cap_image, 1.0);\r
+                               NyARGLDrawUtil.drawBackGround(this._gl,_cap_image, 1.0);\r
                        }\r
                        //あったら立方体を書く\r
                        for (int i = 0; i < found_markers; i++) {\r
@@ -225,11 +182,15 @@ public class JavaSimpleLite2 implements GLEventListener, JmfCaptureListener
                                //変換行列を取得\r
                                _nya.getTransmationMatrix(i,transmat_result);\r
                                //変換行列をOpenGL形式に変換\r
-                               _glnya.toCameraViewRH(transmat_result, __display_wk);\r
+                               NyARGLUtil.toCameraViewRH(transmat_result,1,__display_wk);\r
                                _gl.glLoadMatrixd(__display_wk, 0);\r
 \r
-                               // All other lighting and geometry goes here.\r
-                               drawCube();\r
+                               //立方体を描画\r
+                               this._gl.glPushMatrix(); // Save world coordinate system.\r
+                               this._gl.glTranslatef(0.0f, 0.0f,20f); // Place base of cube on marker surface.\r
+                               this._gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
+                               NyARGLDrawUtil.drawColorCube(this._gl,40f);\r
+                               this._gl.glPopMatrix(); // Restore world coordinate system.\r
                        }\r
                        Thread.sleep(1);//タスク実行権限を一旦渡す            \r
                } catch (Exception e) {\r
index 4899571..e73e70a 100644 (file)
@@ -35,7 +35,6 @@ import javax.media.Buffer;
 import javax.media.opengl.*;\r
 \r
 import com.sun.opengl.util.*;\r
-import com.sun.opengl.util.j2d.*;\r
 import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.*;\r
 import jp.nyatla.nyartoolkit.core.param.*;\r
@@ -45,31 +44,15 @@ import jp.nyatla.nyartoolkit.jmf.utils.*;
 import jp.nyatla.nyartoolkit.jogl.utils.*;\r
 import jp.nyatla.nyartoolkit.processor.*;\r
 \r
-/*\r
-\r
-\r
-*/\r
-\r
 \r
+/**\r
+ * SingleARMarkerProcesserを使ったサンプルです。\r
+ * 登録した複数種類マーカのうちから、同時に1個を認識するサンプルプログラムです。\r
+ * @author nyatla\r
+ *\r
+ */\r
 public class SingleARMarker implements GLEventListener, JmfCaptureListener\r
-{\r
-       class TextPanel\r
-       {\r
-               private TextRenderer _tr;\r
-               public TextPanel(int i_size)\r
-               {\r
-                       this._tr=new TextRenderer(new Font("SansSerif", Font.BOLD, 36));\r
-\r
-               }\r
-               public void draw(String i_str,float i_scale)\r
-               {\r
-                       this._tr.begin3DRendering();\r
-                   this._tr.setColor(1.0f, 0.2f, 0.2f, 0.8f);\r
-                   this._tr.draw3D(i_str, 0f,0f,0f,i_scale);\r
-                       this._tr.end3DRendering();\r
-                       return;\r
-               }\r
-       }       \r
+{      \r
        /**\r
         * 1個のRawBit-Idマーカを認識するロジッククラス。\r
         * detectMarker関数の呼び出しに同期して、transmatとcurrent_idパラメタを更新します。\r
@@ -78,7 +61,6 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
         */\r
        class MarkerProcessor extends SingleARMarkerProcesser\r
        {\r
-               private NyARGLUtil _glnya;\r
                public double[] gltransmat=new double[16];\r
                \r
                public int current_code=-1;\r
@@ -88,7 +70,6 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
                        //アプリケーションフレームワークの初期化\r
                        super();\r
                        initInstance(i_cparam,i_raster_format);\r
-                       this._glnya=i_glutil;\r
                        return;\r
                }\r
                protected void onEnterHandler(int i_code)\r
@@ -106,7 +87,7 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
                protected void onUpdateHandler(NyARSquare i_square, NyARTransMatResult result)\r
                {\r
                        try{\r
-                               this._glnya.toCameraViewRH(result, this.gltransmat);\r
+                               NyARGLUtil.toCameraViewRH(result,1.0, this.gltransmat);\r
                        }catch(Exception e){\r
                                e.printStackTrace();\r
                        }\r
@@ -123,7 +104,6 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
 \r
        private GL _gl;\r
        private NyARGLUtil _glnya;\r
-       private TextPanel _panel;\r
 \r
 \r
        //NyARToolkit関係\r
@@ -146,7 +126,7 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
                        throw new NyARException();\r
                }\r
                this._capture.setOnCapture(this);\r
-               this._cap_image = new JmfNyARRaster_RGB(i_cparam,this._capture.getCaptureFormat());     \r
+               this._cap_image = new JmfNyARRaster_RGB(this._capture.getCaptureFormat());      \r
 \r
                this._code_table[0]=new NyARCode(16,16);\r
                this._code_table[0].loadARPattFromFile(CARCODE_FILE1);\r
@@ -154,7 +134,7 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
                this._code_table[1].loadARPattFromFile(CARCODE_FILE2);\r
                \r
                //OpenGLフレームの準備(OpenGLリソースの初期化、カメラの撮影開始は、initコールバック関数内で実行)\r
-               Frame frame = new Frame("Java simpleLite with NyARToolkit");\r
+               Frame frame = new Frame("NyARToolkit["+this.getClass().getName()+"]");\r
                GLCanvas canvas = new GLCanvas();\r
                frame.add(canvas);\r
                canvas.addGLEventListener(this);\r
@@ -174,22 +154,19 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
        }\r
        public void init(GLAutoDrawable drawable)\r
        {\r
-               this._panel = new TextPanel(100);\r
-\r
-\r
                this._gl = drawable.getGL();\r
                this._gl.glEnable(GL.GL_DEPTH_TEST);\r
-\r
+               NyARGLDrawUtil.setFontStyle("SansSerif",Font.BOLD,36);\r
+               NyARGLDrawUtil.setFontColor(Color.RED);\r
                this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
                //NyARToolkitの準備\r
                try {\r
-                       this._glnya = new NyARGLUtil(this._gl);\r
                        //プロセッサの準備\r
                        this._processor=new MarkerProcessor(this._ar_param,this._cap_image.getBufferType(),this._glnya);\r
                        this._processor.setARCodeTable(_code_table,16,80.0);\r
 \r
                        //カメラパラメータの計算\r
-                       this._glnya.toCameraFrustumRH(this._ar_param,this._camera_projection);\r
+                       NyARGLUtil.toCameraFrustumRH(this._ar_param,1.0,10,10000,this._camera_projection);\r
                        //キャプチャ開始\r
                        this._capture.start();\r
                } catch (Exception e) {\r
@@ -224,7 +201,7 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
                this._gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame.\r
                //OnEnter,OnUpdateの間に、transmatに初回行列がストアされる実行されることを防ぎます。\r
                try{\r
-                       this._glnya.drawBackGround(this._cap_image, 1.0);\r
+                       NyARGLDrawUtil.drawBackGround(this._gl,this._cap_image, 1.0);\r
                        synchronized(this._sync_object)\r
                        {\r
                                if(this._processor.current_code<0){\r
@@ -247,9 +224,9 @@ public class SingleARMarker implements GLEventListener, JmfCaptureListener
                                        Date d = new Date();\r
                                        float r=(d.getTime()/50)%360;\r
                                        this._gl.glRotatef(r,0f,0f,1.0f);\r
-                                       this._gl.glTranslatef(-1.0f,0f,1.0f);\r
+                                       this._gl.glTranslatef(-70f,0f,1.0f);\r
                                        this._gl.glRotatef(90,1.0f,0f,0f);\r
-                                       this._panel.draw("MarkerId:"+this._processor.current_code,0.01f);\r
+                                       NyARGLDrawUtil.drawText("MarkerId:"+this._processor.current_code,1f);\r
                                        this._gl.glPopMatrix();\r
                                        Thread.sleep(1);// タスク実行権限を一旦渡す\r
                                }\r
index c66a79b..bf4d6d6 100644 (file)
@@ -36,7 +36,6 @@ import javax.media.Buffer;
 import javax.media.opengl.*;\r
 \r
 import com.sun.opengl.util.*;\r
-import com.sun.opengl.util.j2d.*;\r
 import jp.nyatla.nyartoolkit.*;\r
 import jp.nyatla.nyartoolkit.core.param.*;\r
 import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquare;\r
@@ -46,42 +45,23 @@ import jp.nyatla.nyartoolkit.jogl.utils.*;
 import jp.nyatla.nyartoolkit.processor.*;\r
 \r
 \r
-class TextPanel\r
-{\r
-       private TextRenderer _tr;\r
-       public TextPanel(int i_size)\r
-       {\r
-               this._tr=new TextRenderer(new Font("SansSerif", Font.BOLD, 36));\r
-\r
-       }\r
-       public void draw(String i_str,float i_scale)\r
-       {\r
-               this._tr.begin3DRendering();\r
-           this._tr.setColor(1.0f, 0.2f, 0.2f, 0.8f);\r
-           this._tr.draw3D(i_str, 0f,0f,0f,i_scale);\r
-               this._tr.end3DRendering();\r
-               return;\r
-       }\r
-}\r
 \r
 /**\r
- * 1個のRawBit-Idマーカを認識するロジッククラス\r
+ * SingleNyIdMarkerProcesserを使ったサンプルです\r
  * detectMarker関数の呼び出しに同期して、transmatとcurrent_idパラメタを更新します。\r
  * \r
  *\r
  */\r
 class MarkerProcessor extends SingleNyIdMarkerProcesser\r
 {      \r
-       private NyARGLUtil _glnya;      \r
        public double[] gltransmat=new double[16];\r
        public int current_id=-1;\r
 \r
-       public MarkerProcessor(NyARParam i_cparam,int i_width,int i_raster_format,NyARGLUtil i_glutil) throws NyARException\r
+       public MarkerProcessor(NyARParam i_cparam,int i_width,int i_raster_format) throws NyARException\r
        {\r
                //アプリケーションフレームワークの初期化\r
                super();\r
                initInstance(i_cparam,new NyIdMarkerDataEncoder_RawBit(),100.0,i_raster_format);\r
-               this._glnya=i_glutil;\r
                return;\r
        }\r
        /**\r
@@ -116,7 +96,7 @@ class MarkerProcessor extends SingleNyIdMarkerProcesser
        protected void onUpdateHandler(NyARSquare i_square, NyARTransMatResult result)\r
        {\r
                try{\r
-                       this._glnya.toCameraViewRH(result, this.gltransmat);\r
+                       NyARGLUtil.toCameraViewRH(result,1.0, this.gltransmat);\r
                }catch(Exception e){\r
                        e.printStackTrace();\r
                }               \r
@@ -131,10 +111,6 @@ public class SingleNyIdMarker implements GLEventListener, JmfCaptureListener
        private JmfCaptureDevice _capture;\r
 \r
        private GL _gl;\r
-       private NyARGLUtil _glnya;\r
-       private TextPanel _panel;\r
-\r
-\r
        //NyARToolkit関係\r
        private NyARParam _ar_param;\r
 \r
@@ -154,10 +130,10 @@ public class SingleNyIdMarker implements GLEventListener, JmfCaptureListener
                        throw new NyARException();\r
                }\r
                this._capture.setOnCapture(this);\r
-               this._cap_image = new JmfNyARRaster_RGB(i_cparam,this._capture.getCaptureFormat());     \r
+               this._cap_image = new JmfNyARRaster_RGB(this._capture.getCaptureFormat());      \r
                \r
                //OpenGLフレームの準備(OpenGLリソースの初期化、カメラの撮影開始は、initコールバック関数内で実行)\r
-               Frame frame = new Frame("Java simpleLite with NyARToolkit");\r
+               Frame frame = new Frame("NyARToolkit["+this.getClass().getName()+"]");\r
                GLCanvas canvas = new GLCanvas();\r
                frame.add(canvas);\r
                canvas.addGLEventListener(this);\r
@@ -177,20 +153,17 @@ public class SingleNyIdMarker implements GLEventListener, JmfCaptureListener
        }\r
        public void init(GLAutoDrawable drawable)\r
        {\r
-               this._panel = new TextPanel(100);\r
-\r
-\r
                this._gl = drawable.getGL();\r
                this._gl.glEnable(GL.GL_DEPTH_TEST);\r
+               NyARGLDrawUtil.setFontStyle("SansSerif",Font.BOLD,36);\r
 \r
                this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
                //NyARToolkitの準備\r
                try {\r
-                       this._glnya = new NyARGLUtil(this._gl);\r
                        //カメラパラメータの計算\r
-                       this._glnya.toCameraFrustumRH(this._ar_param,this._camera_projection);\r
+                       NyARGLUtil.toCameraFrustumRH(this._ar_param,1.0,10,10000,this._camera_projection);\r
                        //プロセッサの準備\r
-                       this._processor=new MarkerProcessor(this._ar_param,100,this._cap_image.getBufferType(),this._glnya);\r
+                       this._processor=new MarkerProcessor(this._ar_param,100,this._cap_image.getBufferType());\r
                        \r
                        //キャプチャ開始\r
                        this._capture.start();\r
@@ -225,7 +198,7 @@ public class SingleNyIdMarker implements GLEventListener, JmfCaptureListener
                // 背景を書く\r
                this._gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // Clear the buffers for new frame.\r
                try{\r
-                       this._glnya.drawBackGround(this._cap_image, 1.0);                       \r
+                       NyARGLDrawUtil.drawBackGround(this._gl,this._cap_image, 1.0);                   \r
                        synchronized(this._sync_object)\r
                        {\r
                                if(this._processor.current_id<0){\r
@@ -249,9 +222,9 @@ public class SingleNyIdMarker implements GLEventListener, JmfCaptureListener
                                        Date d = new Date();\r
                                        float r=(d.getTime()/50)%360;\r
                                        this._gl.glRotatef(r,0f,0f,1.0f);\r
-                                       this._gl.glTranslatef(-1.0f,0f,1.0f);\r
+                                       this._gl.glTranslatef(-70f,0f,1.0f);\r
                                        this._gl.glRotatef(90,1.0f,0f,0f);\r
-                                       this._panel.draw("MarkerId:"+this._processor.current_id,0.01f);\r
+                                       NyARGLDrawUtil.drawText("MarkerId:"+this._processor.current_id, 1.0f);\r
                                        this._gl.glPopMatrix();\r
                                        Thread.sleep(1);// タスク実行権限を一旦渡す\r
                                }\r