OSDN Git Service

git-svn-id: http://svn.sourceforge.jp/svnroot/nyartoolkit/NyARToolkit/trunk@697 7cac0...
authornyatla <nyatla@7cac0a50-4618-4814-88d0-24b83990f816>
Tue, 30 Nov 2010 13:53:55 +0000 (13:53 +0000)
committerAtsuo Igarashi <atsuoigarashi@ubuntu.(none)>
Tue, 5 Apr 2011 07:20:44 +0000 (16:20 +0900)
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/INyARDisposable.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/NyARRealityTarget.java
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/realitysource/nyartk/NyARRealitySource_Jmf.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_ARMarker.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_AsyncIdMarker.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_CreditCardDetect.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_IdMarker.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_ScreenPos.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_RealityTarget.java [deleted file]
lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_TrackTerget.java [deleted file]

diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/INyARDisposable.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/reality/nyartk/INyARDisposable.java
deleted file mode 100644 (file)
index 8be3cd0..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-package jp.nyatla.nyartoolkit.rpf.reality.nyartk;\r
-\r
-/**\r
- * オブジェクトの破棄タイミングを受け取るインタフェイスです。\r
- *\r
- */\r
-public interface INyARDisposable\r
-{\r
-       /**\r
-        * オブジェクトの終期化のタイミングを与えます。オブジェクトの終期化に必要な処理を実装します。\r
-        */\r
-       public void dispose();\r
-}\r
index 299ffdb..1921951 100644 (file)
@@ -1,6 +1,7 @@
 package jp.nyatla.nyartoolkit.rpf.reality.nyartk;\r
 \r
 import jp.nyatla.nyartoolkit.NyARException;\r
+import jp.nyatla.nyartoolkit.core.INyARDisposable;\r
 import jp.nyatla.nyartoolkit.core.raster.rgb.INyARRgbRaster;\r
 import jp.nyatla.nyartoolkit.core.squaredetect.NyARSquare;\r
 import jp.nyatla.nyartoolkit.core.transmat.NyARRectOffset;\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/realitysource/nyartk/NyARRealitySource_Jmf.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/realitysource/nyartk/NyARRealitySource_Jmf.java
deleted file mode 100644 (file)
index fa1fff5..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-package jp.nyatla.nyartoolkit.dev.rpf.realitysource.nyartk;\r
-\r
-import javax.media.format.VideoFormat;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARCameraDistortionFactor;\r
-import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2gs.NyARRasterFilter_Rgb2Gs_RgbAve;\r
-import jp.nyatla.nyartoolkit.core.rasterreader.NyARPerspectiveRasterReader;\r
-import jp.nyatla.nyartoolkit.dev.rpf.sampler.lrlabel.LowResolutionLabelingSampler;\r
-import jp.nyatla.nyartoolkit.dev.rpf.sampler.lrlabel.LowResolutionLabelingSamplerOut;\r
-import jp.nyatla.nyartoolkit.dev.rpf.tracker.nyartk.NyARTracker;\r
-import jp.nyatla.nyartoolkit.dev.rpf.tracker.nyartk.NyARTrackerSource;\r
-import jp.nyatla.nyartoolkit.dev.rpf.tracker.nyartk.NyARTrackerSource_Reference;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfNyARRaster_RGB;\r
-\r
-/**\r
- * このクラスは、JMFと互換性のあるNyARRealitySourceです。\r
- * @author nyatla\r
- *\r
- */\r
-public class NyARRealitySource_Jmf extends NyARRealitySource\r
-{\r
-       protected NyARRasterFilter_Rgb2Gs_RgbAve _filter;\r
-       /**\r
-        * コンストラクタです。\r
-        * @param i_fmt\r
-        * JMFの入力フォーマットを指定します。\r
-        * @param i_ref_raster_distortion\r
-        * 歪み矯正の為のオブジェクトを指定します。歪み矯正が必要ない時は、NULLを指定します。\r
-        * @param i_depth\r
-        * エッジ画像のサイズを1/(2^n)で指定します。(例:QVGA画像で1を指定すると、エッジ検出画像は160x120になります。)\r
-        * 数値が大きいほど高速になり、検出精度は低下します。実用的なのは、1<=n<=3の範囲です。標準値は2です。\r
-        * @param i_number_of_sample\r
-        * サンプリングするターゲット数を指定します。大体100以上をしておけばOKです。具体的な計算式は、{@link NyARTrackerSource_Reference#NyARTrackerSource_Reference}を参考にして下さい。\r
-        * @throws NyARException\r
-        */\r
-       public NyARRealitySource_Jmf(VideoFormat i_fmt,NyARCameraDistortionFactor i_ref_raster_distortion,int i_depth,int i_number_of_sample) throws NyARException\r
-       {\r
-               this._rgb_source=new JmfNyARRaster_RGB(i_fmt);\r
-               this._filter=new NyARRasterFilter_Rgb2Gs_RgbAve(this._rgb_source.getBufferType());\r
-               this._source_perspective_reader=new NyARPerspectiveRasterReader(_rgb_source.getBufferType());\r
-               this._tracksource=new NyARTrackerSource_Reference(i_number_of_sample,i_ref_raster_distortion,i_fmt.getSize().width,i_fmt.getSize().height,i_depth,true);\r
-               return;\r
-       }\r
-       \r
-       /**\r
-        * Jmfのバッファをセットします。\r
-        * @param i_buffer\r
-        * @throws NyARException\r
-        */\r
-       public void setImage(javax.media.Buffer i_buffer) throws NyARException\r
-       {\r
-               ((JmfNyARRaster_RGB)(this._rgb_source)).setBuffer(i_buffer);\r
-               return;\r
-       }\r
-       public final boolean isReady()\r
-       {\r
-               return ((JmfNyARRaster_RGB)this._rgb_source).hasBuffer();\r
-       }\r
-       public final void syncResource() throws NyARException\r
-       {\r
-               this._filter.doFilter(this._rgb_source,this._tracksource.refBaseRaster());\r
-               super.syncResource();\r
-       }\r
-       public final NyARTrackerSource makeTrackSource() throws NyARException\r
-       {\r
-               this._filter.doFilter(this._rgb_source,this._tracksource.refBaseRaster());              \r
-               return this._tracksource;\r
-       }\r
-}
\ No newline at end of file
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_ARMarker.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_ARMarker.java
deleted file mode 100644 (file)
index db1cdb3..0000000
+++ /dev/null
@@ -1,258 +0,0 @@
-package jp.nyatla.nyartoolkit.dev.rpf.sample;\r
-\r
-import java.awt.Color;\r
-import java.awt.Font;\r
-import java.awt.Frame;\r
-import java.awt.Insets;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-\r
-import javax.media.Buffer;\r
-import javax.media.opengl.*;\r
-\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-\r
-import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint2d;\r
-import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.ARTKMarkerTable;\r
-import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARRealityTargetList;\r
-import jp.nyatla.nyartoolkit.dev.rpf.realitysource.nyartk.NyARRealitySource_Jmf;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDevice;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl.NyARRealityGl;\r
-\r
-import com.sun.opengl.util.Animator;\r
-\r
-/**\r
- * NyARRealityシステムのサンプル。\r
- * ARToolkitスタイルのマーカの上に、立方体を表示します。\r
- * 取り扱うマーカの種類は2種類(Hiro,Kanji)です。\r
- * パターンの種類によっては、内側のパターンを誤認識する場合があります。\r
- * @author nyatla\r
- *\r
- */\r
-public class Test_NyARRealityGl_ARMarker implements GLEventListener, JmfCaptureListener\r
-{\r
-\r
-       private final static int SCREEN_X = 640;\r
-       private final static int SCREEN_Y = 480;\r
-\r
-       private Animator _animator;\r
-       private JmfCaptureDevice _capture;\r
-\r
-       private GL _gl;\r
-\r
-       private Object _sync_object=new Object();\r
-\r
-       NyARRealityGl _reality;\r
-       NyARRealitySource_Jmf _src;\r
-       ARTKMarkerTable _mklib;\r
-\r
-       public Test_NyARRealityGl_ARMarker(NyARParam i_param) throws NyARException\r
-       {\r
-               Frame frame = new Frame("NyARReality on OpenGL");\r
-               \r
-               // キャプチャの準備\r
-               JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();\r
-               this._capture = devlist.getDevice(0);\r
-               if (!this._capture.setCaptureFormat(SCREEN_X, SCREEN_Y, 30.0f)) {\r
-                       throw new NyARException();\r
-               }\r
-               this._capture.setOnCapture(this);\r
-               //Realityの構築\r
-               i_param.changeScreenSize(SCREEN_X, SCREEN_Y);   \r
-               //キャプチャ画像と互換性のあるRealitySourceを構築\r
-               this._src=new NyARRealitySource_Jmf(this._capture.getCaptureFormat(),i_param.getDistortionFactor(),2,100);\r
-               //OpenGL互換のRealityを構築               \r
-               this._reality=new NyARRealityGl(i_param.getPerspectiveProjectionMatrix(),i_param.getScreenSize(),10,10000,3,10);\r
-               //マーカライブラリ(ARTKId)の構築\r
-               this._mklib= new ARTKMarkerTable(10,16,16,25,25,4);\r
-               //マーカテーブルの作成(2種類)\r
-               this._mklib.addMarkerFromARPattFile(PATT_HIRO,0,"HIRO",80,80);\r
-               this._mklib.addMarkerFromARPattFile(PATT_KANJI,1,"KANJI",80,80);\r
-                               \r
-               // 3Dを描画するコンポーネント\r
-               GLCanvas canvas = new GLCanvas();\r
-               frame.add(canvas);\r
-               canvas.addGLEventListener(this);\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e)\r
-                       {\r
-                               System.exit(0);\r
-                       }\r
-               });\r
-\r
-               frame.setVisible(true);\r
-               Insets ins = frame.getInsets();\r
-               frame.setSize(SCREEN_X + ins.left + ins.right, SCREEN_Y + ins.top + ins.bottom);\r
-               canvas.setBounds(ins.left, ins.top, SCREEN_X, SCREEN_Y);\r
-       }\r
-\r
-       public void init(GLAutoDrawable drawable)\r
-       {\r
-               this._gl = drawable.getGL();\r
-               this._gl.glEnable(GL.GL_DEPTH_TEST);\r
-               this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-               NyARGLDrawUtil.setFontStyle("SansSerif",Font.BOLD,24);\r
-               // NyARToolkitの準備\r
-               try {\r
-                       // キャプチャ開始\r
-                       _capture.start();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               this._animator = new Animator(drawable);\r
-               this._animator.start();\r
-               return;\r
-       }\r
-\r
-       public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)\r
-       {\r
-               _gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-               _gl.glViewport(0, 0, width, height);\r
-\r
-               // 視体積の設定\r
-               _gl.glMatrixMode(GL.GL_PROJECTION);\r
-               _gl.glLoadIdentity();\r
-               // 見る位置\r
-               _gl.glMatrixMode(GL.GL_MODELVIEW);\r
-               _gl.glLoadIdentity();\r
-       }\r
-\r
-       public void display(GLAutoDrawable drawable)\r
-       {\r
-               //RealitySourceにデータが処理する。\r
-               if(!this._src.isReady())\r
-               {\r
-                       return;\r
-               }\r
-               \r
-               // 背景を書く\r
-               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
-                               \r
-                               this._reality.glDrawRealitySource(this._gl,this._src);\r
-                               // Projection transformation.\r
-                               this._gl.glMatrixMode(GL.GL_PROJECTION);\r
-                               this._reality.glLoadCameraFrustum(this._gl);\r
-                               //ターゲットリストを走査して、画面に内容を反映\r
-                               NyARRealityTargetList tl=this._reality.refTargetList();\r
-                               for(int i=tl.getLength()-1;i>=0;i--){\r
-                                       NyARRealityTarget t=tl.getItem(i);\r
-                                       switch(t.getTargetType())\r
-                                       {\r
-                                       case NyARRealityTarget.RT_KNOWN:\r
-                                               //立方体の描画\r
-                                               this._gl.glMatrixMode(GL.GL_MODELVIEW);\r
-                                               this._gl.glLoadIdentity();\r
-                                               NyARDoubleMatrix44 m=t.refTransformMatrix();\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               _gl.glTranslatef(0f,0,20f); // Place base of cube on marker surface.\r
-                                               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-                                               NyARGLDrawUtil.drawColorCube(this._gl,40f);\r
-                                               _gl.glPopMatrix(); // Restore world coordinate system.\r
-                                               //マーカ情報の描画\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               _gl.glTranslatef(0,0,90f); // Place base of cube on marker surface.\r
-                                               _gl.glRotatef(90,1.0f,0.0f,0.0f); // Place base of cube on marker surface.\r
-                                               NyARGLDrawUtil.setFontColor(t.getGrabbRate()<50?Color.RED:Color.BLUE);\r
-                                               ARTKMarkerTable.GetBestMatchTargetResult d=((ARTKMarkerTable.GetBestMatchTargetResult)(t.tag));\r
-                                               NyARGLDrawUtil.drawText("Name:"+d.name+" GRUB:"+t.grab_rate+"%",0.5f);\r
-                                               _gl.glPopMatrix();\r
-                                               \r
-                                               break;\r
-                                       case NyARRealityTarget.RT_UNKNOWN:\r
-                                               NyARDoublePoint2d[] p=t.refTargetVertex();                                              \r
-                                               NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,true);\r
-                                               _gl.glLineWidth(2);\r
-                                               _gl.glColor3f(1.0f,0.0f,0.0f);\r
-                                               _gl.glBegin(GL.GL_LINE_LOOP);\r
-                                               _gl.glVertex2d(p[0].x,p[0].y);\r
-                                               _gl.glVertex2d(p[1].x,p[1].y);\r
-                                               _gl.glVertex2d(p[2].x,p[2].y);\r
-                                               _gl.glVertex2d(p[3].x,p[3].y);\r
-                                               _gl.glEnd();\r
-                                               NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);\r
-                                               \r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       Thread.sleep(1);// タスク実行権限を一旦渡す\r
-               }catch(Exception e){\r
-                       e.printStackTrace();\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * カメラのキャプチャした画像を非同期に受け取る関数。\r
-        * 画像を受け取ると、同期を取ってRealityを1サイクル進めます。\r
-        */\r
-       public void onUpdateBuffer(Buffer i_buffer)\r
-       {\r
-               try {\r
-                       synchronized (this._sync_object)\r
-                       {\r
-                               this._src.setImage(i_buffer);\r
-                               this._reality.progress(this._src);\r
-                               //UnknownTargetを1個取得して、遷移を試す。\r
-                               NyARRealityTarget t=this._reality.selectSingleUnknownTarget();\r
-                               if(t==null){\r
-                                       return;\r
-                               }\r
-                               //ターゲットに一致するデータを検索\r
-                               ARTKMarkerTable.GetBestMatchTargetResult r=new ARTKMarkerTable.GetBestMatchTargetResult();\r
-                               if(this._mklib.getBestMatchTarget(t,this._src,r)){\r
-                                       if(r.confidence<0.6)\r
-                                       {       //一致率が低すぎる。\r
-                                               return;\r
-                                       }\r
-                                       //既に認識しているターゲットの内側のものでないか確認する?(この処理をすれば、二重認識は無くなる。)\r
-                                       \r
-                                       //一致度を確認して、80%以上ならKnownターゲットへ遷移\r
-                                       if(!this._reality.changeTargetToKnown(t,r.artk_direction,r.marker_width)){\r
-                                       //遷移の成功チェック\r
-                                               return;//失敗\r
-                                       }\r
-                                       //遷移に成功したので、tagにResult情報をコピーしておく。(後で表示に使う)\r
-                                       t.tag=r;\r
-                               }else{\r
-                                       //一致しないので、このターゲットは捨てる。\r
-                                       this._reality.changeTargetToDead(t,15);\r
-                               }\r
-                       }\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-\r
-       public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged)\r
-       {\r
-       }\r
-       \r
-       private final static String PARAM_FILE = "../Data/camera_para.dat";\r
-       private final static String PATT_HIRO = "../Data/patt.hiro";\r
-       private final static String PATT_KANJI = "../Data/patt.kanji";\r
-\r
-       public static void main(String[] args)\r
-       {\r
-               try {\r
-                       NyARParam param = new NyARParam();\r
-                       param.loadARParamFromFile(PARAM_FILE);\r
-                       new Test_NyARRealityGl_ARMarker(param);\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               return;\r
-       }\r
-\r
-}\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_AsyncIdMarker.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_AsyncIdMarker.java
deleted file mode 100644 (file)
index b9061e6..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-package jp.nyatla.nyartoolkit.dev.rpf.sample;\r
-\r
-import java.awt.Color;\r
-import java.awt.Font;\r
-import java.awt.Frame;\r
-import java.awt.Insets;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-\r
-import javax.media.Buffer;\r
-import javax.media.opengl.*;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d;\r
-import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.ASyncIdMarkerTable;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.RawbitSerialIdTable;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.ASyncIdMarkerTable.IResultListener;\r
-import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARRealityTargetList;\r
-import jp.nyatla.nyartoolkit.dev.rpf.realitysource.nyartk.NyARRealitySource_Jmf;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDevice;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl.NyARRealityGl;\r
-\r
-import com.sun.opengl.util.Animator;\r
-\r
-/**\r
- * NyARRealityシステムのサンプル。\r
- * このプログラムは、非同期マーカー認識の実験プログラムです。\r
- * リアルタイムにマーカ一致を行わずに、外部プログラムやサーバなどで非同期にマーカ認識処理を行うテンプレートになります。\r
- * \r
- * このプログラムでは、IDマーカの非同期認識(別スレッドで認識)を行い、認識が成功したらその上に立方体を表示します。\r
- * \r
- * マーカには、IDマーカを使ってください。\r
- * @author nyatla\r
- *\r
- */\r
-public class Test_NyARRealityGl_AsyncIdMarker implements GLEventListener, JmfCaptureListener,IResultListener\r
-{\r
-\r
-       private final static int SCREEN_X = 320;\r
-       private final static int SCREEN_Y = 240;\r
-\r
-       private Animator _animator;\r
-       private JmfCaptureDevice _capture;\r
-\r
-       private GL _gl;\r
-\r
-       private Object _sync_object=new Object();\r
-\r
-       NyARRealityGl _reality;\r
-       NyARRealitySource_Jmf _src;\r
-       ASyncIdMarkerTable _mklib;\r
-\r
-       public Test_NyARRealityGl_AsyncIdMarker(NyARParam i_param) throws NyARException\r
-       {\r
-               Frame frame = new Frame("NyARReality on OpenGL");\r
-               \r
-               // キャプチャの準備\r
-               JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();\r
-               this._capture = devlist.getDevice(0);\r
-               if (!this._capture.setCaptureFormat(SCREEN_X, SCREEN_Y, 30.0f)) {\r
-                       throw new NyARException();\r
-               }\r
-               this._capture.setOnCapture(this);\r
-               //Realityの構築\r
-               i_param.changeScreenSize(SCREEN_X, SCREEN_Y);   \r
-               //キャプチャ画像と互換性のあるRealitySourceを構築\r
-               this._src=new NyARRealitySource_Jmf(this._capture.getCaptureFormat(),i_param.getDistortionFactor(),1,100);\r
-               //OpenGL互換のRealityを構築               \r
-               this._reality=new NyARRealityGl(i_param.getPerspectiveProjectionMatrix(),i_param.getScreenSize(),10,10000,3,3);\r
-               //非同期マーカライブラリ(NyId)の構築\r
-               this._mklib= new ASyncIdMarkerTable(this);\r
-                               \r
-               // 3Dを描画するコンポーネント\r
-               GLCanvas canvas = new GLCanvas();\r
-               frame.add(canvas);\r
-               canvas.addGLEventListener(this);\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e)\r
-                       {\r
-                               System.exit(0);\r
-                       }\r
-               });\r
-\r
-               frame.setVisible(true);\r
-               Insets ins = frame.getInsets();\r
-               frame.setSize(SCREEN_X + ins.left + ins.right, SCREEN_Y + ins.top + ins.bottom);\r
-               canvas.setBounds(ins.left, ins.top, SCREEN_X, SCREEN_Y);\r
-       }\r
-\r
-       public void init(GLAutoDrawable drawable)\r
-       {\r
-               this._gl = drawable.getGL();\r
-               this._gl.glEnable(GL.GL_DEPTH_TEST);\r
-               this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-               NyARGLDrawUtil.setFontStyle("SansSerif",Font.BOLD,24);\r
-               // NyARToolkitの準備\r
-               try {\r
-                       // キャプチャ開始\r
-                       _capture.start();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               this._animator = new Animator(drawable);\r
-               this._animator.start();\r
-               return;\r
-       }\r
-\r
-       public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)\r
-       {\r
-               _gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-               _gl.glViewport(0, 0, width, height);\r
-\r
-               // 視体積の設定\r
-               _gl.glMatrixMode(GL.GL_PROJECTION);\r
-               _gl.glLoadIdentity();\r
-               // 見る位置\r
-               _gl.glMatrixMode(GL.GL_MODELVIEW);\r
-               _gl.glLoadIdentity();\r
-       }\r
-\r
-       public void display(GLAutoDrawable drawable)\r
-       {\r
-               //RealitySourceにデータが処理する。\r
-               if(!this._src.isReady())\r
-               {\r
-                       return;\r
-               }\r
-               \r
-               // 背景を書く\r
-               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
-                               \r
-                               this._reality.glDrawRealitySource(this._gl,this._src);\r
-                               // Projection transformation.\r
-                               this._gl.glMatrixMode(GL.GL_PROJECTION);\r
-                               this._reality.glLoadCameraFrustum(this._gl);\r
-                               //ターゲットリストを走査して、画面に内容を反映\r
-                               NyARRealityTargetList tl=this._reality.refTargetList();\r
-                               for(int i=tl.getLength()-1;i>=0;i--){\r
-                                       NyARRealityTarget t=tl.getItem(i);\r
-                                       switch(t.getTargetType())\r
-                                       {\r
-                                       case NyARRealityTarget.RT_KNOWN:\r
-                                               //立方体の描画\r
-                                               this._gl.glMatrixMode(GL.GL_MODELVIEW);\r
-                                               this._gl.glLoadIdentity();\r
-                                               NyARDoubleMatrix44 m=t.refTransformMatrix();\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               //_gl.glRotatef(90,0.0f,0.0f,1.0f); // Place base of cube on marker surface.\r
-                                               \r
-                                               _gl.glTranslatef(0,0,10f); // Place base of cube on marker surface.\r
-                                               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-                                               NyARGLDrawUtil.drawColorCube(this._gl,20f);\r
-                                               _gl.glPopMatrix(); // Restore world coordinate system.\r
-                                               //マーカ情報の描画\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               _gl.glTranslatef(-30,0,40f); // Place base of cube on marker surface.\r
-                                               _gl.glRotatef(90,1.0f,0.0f,0.0f); // Place base of cube on marker surface.\r
-                                               //マーカ情報の表示\r
-                                               NyARGLDrawUtil.setFontColor(t.getGrabbRate()<50?Color.RED:Color.BLUE);\r
-                                               NyARGLDrawUtil.drawText("ID:"+(Long)(t.tag)+" GRUB:"+t.grab_rate+"%",0.5f);\r
-                                               _gl.glPopMatrix();\r
-                                               \r
-                                               break;\r
-                                       case NyARRealityTarget.RT_UNKNOWN:\r
-                                               NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,false);\r
-                                               NyARGLDrawUtil.setFontColor(t.getGrabbRate()<50?Color.RED:Color.BLUE);\r
-                                               NyARIntPoint2d cp=new NyARIntPoint2d();\r
-                                               t.getTargetCenter(cp);\r
-                                               _gl.glTranslated(cp.x,SCREEN_Y-cp.y,1);\r
-                                               NyARGLDrawUtil.drawText("now matching marker.",1f);\r
-                                               NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);                                             \r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       Thread.sleep(1);// タスク実行権限を一旦渡す\r
-               }catch(Exception e){\r
-                       e.printStackTrace();\r
-               }\r
-\r
-       }\r
-       public void OnDetect(boolean i_result,long i_serial,int i_dir,double i_width,long i_id)\r
-       {\r
-               try{\r
-               //Realityを触るのでロック\r
-               synchronized (this._sync_object)\r
-               {\r
-                       NyARRealityTarget t=this._reality.refTargetList().getItemBySerial(i_serial);\r
-                       if(t==null){\r
-                               return;\r
-                       }\r
-                       if(t.getTargetType()!=NyARRealityTarget.RT_UNKNOWN){\r
-                               return;\r
-                       }\r
-                       if(i_result){\r
-                               this._reality.changeTargetToKnown(t, i_dir, i_width);\r
-                               t.tag=new Long(i_id);\r
-                       }else{\r
-                               this._reality.changeTargetToDead(t);\r
-                       }\r
-               }\r
-               }catch(Exception e){\r
-                       //握りつぶす\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-\r
-       /**\r
-        * カメラのキャプチャした画像を非同期に受け取る関数。\r
-        * 画像を受け取ると、同期を取ってRealityを1サイクル進めます。\r
-        */\r
-       public void onUpdateBuffer(Buffer i_buffer)\r
-       {\r
-               try {\r
-                       synchronized (this._sync_object)\r
-                       {\r
-                               this._src.setImage(i_buffer);\r
-                               this._reality.progress(this._src);\r
-                               //UnknownTargetを1個取得して、遷移を試す。\r
-                               NyARRealityTarget t=this._reality.selectSingleUnknownTarget();\r
-                               if(t==null){\r
-                                       return;\r
-                               }\r
-                               //tagに何か入ってたらなにかやっている。\r
-                               if(t.tag!=null){\r
-                                       return;\r
-                               }\r
-                               this._mklib.requestAsyncMarkerDetect(this._reality,this._src,t);\r
-                               t.tag=new Long(-1);//-1は認識中ということで。\r
-                       }\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-\r
-       public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged)\r
-       {\r
-       }\r
-       \r
-       private final static String PARAM_FILE = "../Data/camera_para.dat";\r
-\r
-       public static void main(String[] args)\r
-       {\r
-               try {\r
-                       NyARParam param = new NyARParam();\r
-                       param.loadARParamFromFile(PARAM_FILE);\r
-                       new Test_NyARRealityGl_AsyncIdMarker(param);\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               return;\r
-       }\r
-\r
-}\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_CreditCardDetect.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_CreditCardDetect.java
deleted file mode 100644 (file)
index de1d046..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-package jp.nyatla.nyartoolkit.dev.rpf.sample;\r
-\r
-import java.awt.Color;\r
-import java.awt.Font;\r
-import java.awt.Frame;\r
-import java.awt.Insets;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-\r
-import javax.media.Buffer;\r
-import javax.media.opengl.*;\r
-import javax.media.opengl.glu.GLU;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.param.NyARPerspectiveProjectionMatrix;\r
-import jp.nyatla.nyartoolkit.core.transmat.NyARTransMatResult;\r
-import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint2d;\r
-import jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d;\r
-import jp.nyatla.nyartoolkit.core.types.NyARIntSize;\r
-import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;\r
-import jp.nyatla.nyartoolkit.detector.NyARSingleDetectMarker;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.ARTKMarkerTable;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.CardDetect;\r
-import jp.nyatla.nyartoolkit.dev.rpf.mklib.RawbitSerialIdTable;\r
-import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.dev.rpf.reality.nyartk.NyARRealityTargetList;\r
-import jp.nyatla.nyartoolkit.dev.rpf.realitysource.nyartk.NyARRealitySource_Jmf;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDevice;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
-import jp.nyatla.nyartoolkit.jogl.utils.NyARGLUtil;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl.NyARRealityGl;\r
-\r
-import com.sun.opengl.util.Animator;\r
-\r
-/**\r
- * NyARRealityシステムのサンプル。\r
- * このサンプルは、定型以外のマーカを認識する実験プログラムです。\r
- *\r
- * 未知の四角形の比率推定をして、立方体を表示します。\r
- * このプログラムでは、未知の四角形を正面から撮影したときに比率を推定して、それがクレジットカードの比率に近ければ、\r
- * クレジットカードと判定して、その上に立方体を表示します。\r
- * \r
- * マーカーには適当なクレジットカードを使ってください。\r
- * \r
- * エッジ検出の性能が十分でないため、カード検出には十分なコントラストが必要です。\r
- * (白色のカードの場合は黒色の背景、黒色のカードなら白色の背景など。)\r
- * \r
- * @author nyatla\r
- */\r
-public class Test_NyARRealityGl_CreditCardDetect implements GLEventListener, JmfCaptureListener\r
-{\r
-       long clock;\r
-       private final static int SCREEN_X = 640;\r
-       private final static int SCREEN_Y = 480;\r
-\r
-       private Animator _animator;\r
-       private JmfCaptureDevice _capture;\r
-\r
-       private GL _gl;\r
-\r
-       private Object _sync_object=new Object();\r
-\r
-       NyARRealityGl _reality;\r
-       NyARRealitySource_Jmf _src;\r
-       CardDetect _mklib;\r
-\r
-       public Test_NyARRealityGl_CreditCardDetect(NyARParam i_param) throws NyARException\r
-       {\r
-               clock=0;\r
-               Frame frame = new Frame("CreditCard sample on OpenGL");\r
-               \r
-               // キャプチャの準備\r
-               JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();\r
-               this._capture = devlist.getDevice(0);\r
-               if (!this._capture.setCaptureFormat(SCREEN_X, SCREEN_Y, 15.0f)) {\r
-                       throw new NyARException();\r
-               }\r
-               this._capture.setOnCapture(this);\r
-               //Realityの構築\r
-               i_param.changeScreenSize(SCREEN_X, SCREEN_Y);   \r
-               //キャプチャ画像と互換性のあるRealitySourceを構築\r
-               this._src=new NyARRealitySource_Jmf(this._capture.getCaptureFormat(),i_param.getDistortionFactor(),2,100);\r
-               //OpenGL互換のRealityを構築               \r
-               this._reality=new NyARRealityGl(i_param.getPerspectiveProjectionMatrix(),i_param.getScreenSize(),10,10000,3,10);\r
-               //マーカライブラリ(比率推定)の構築\r
-               this._mklib= new CardDetect();\r
-\r
-                               \r
-               // 3Dを描画するコンポーネント\r
-               GLCanvas canvas = new GLCanvas();\r
-               frame.add(canvas);\r
-               canvas.addGLEventListener(this);\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e)\r
-                       {\r
-                               System.exit(0);\r
-                       }\r
-               });\r
-\r
-               frame.setVisible(true);\r
-               Insets ins = frame.getInsets();\r
-               frame.setSize(SCREEN_X + ins.left + ins.right, SCREEN_Y + ins.top + ins.bottom);\r
-               canvas.setBounds(ins.left, ins.top, SCREEN_X, SCREEN_Y);\r
-       }\r
-\r
-       public void init(GLAutoDrawable drawable)\r
-       {\r
-               this._gl = drawable.getGL();\r
-               this._gl.glEnable(GL.GL_DEPTH_TEST);\r
-               this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-               NyARGLDrawUtil.setFontStyle("SansSerif",Font.BOLD,24);\r
-               // NyARToolkitの準備\r
-               try {\r
-                       // キャプチャ開始\r
-                       _capture.start();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               this._animator = new Animator(drawable);\r
-               this._animator.start();\r
-               return;\r
-       }\r
-\r
-       public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)\r
-       {\r
-               _gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-               _gl.glViewport(0, 0, width, height);\r
-\r
-               // 視体積の設定\r
-               _gl.glMatrixMode(GL.GL_PROJECTION);\r
-               _gl.glLoadIdentity();\r
-               // 見る位置\r
-               _gl.glMatrixMode(GL.GL_MODELVIEW);\r
-               _gl.glLoadIdentity();\r
-       }\r
-\r
-       \r
-       public void display(GLAutoDrawable drawable)\r
-       {\r
-               //RealitySourceにデータが処理する。\r
-               if(!this._src.isReady())\r
-               {\r
-                       return;\r
-               }\r
-               \r
-               // 背景を書く\r
-               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
-                               //背景を描画\r
-                               this._reality.glDrawRealitySource(this._gl,this._src);\r
-                               // Projection transformation.\r
-                               this._gl.glMatrixMode(GL.GL_PROJECTION);\r
-                               this._reality.glLoadCameraFrustum(this._gl);\r
-                               //ターゲットリストを走査して、画面に内容を反映\r
-                               NyARRealityTargetList tl=this._reality.refTargetList();\r
-                               for(int i=tl.getLength()-1;i>=0;i--){\r
-                                       NyARRealityTarget t=tl.getItem(i);\r
-                                       CardDetect.UnknownRectInfo tag=((CardDetect.UnknownRectInfo)(t.tag));\r
-                                       switch(t.getTargetType())\r
-                                       {\r
-                                       case NyARRealityTarget.RT_KNOWN:\r
-                                               //立方体の描画\r
-                                               this._gl.glMatrixMode(GL.GL_MODELVIEW);\r
-                                               this._gl.glLoadIdentity();\r
-                                               NyARDoubleMatrix44 m=t.refTransformMatrix();\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               //カード番号を消す。\r
-                                               _gl.glColor3d(0.0,0.0, 0.0);\r
-                                               _gl.glBegin(GL.GL_POLYGON);\r
-                                               _gl.glVertex2d(-35,-20);\r
-                                               _gl.glVertex2d(35,-20);\r
-                                               _gl.glVertex2d(35,20);\r
-                                               _gl.glVertex2d(-35,20);\r
-                                               _gl.glEnd();\r
-                                               \r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               _gl.glTranslatef(0,0,20f); // Place base of cube on marker surface.\r
-                                               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-                                               _gl.glLineWidth(1);\r
-                                               NyARGLDrawUtil.drawColorCube(this._gl,40f);\r
-                                               _gl.glPopMatrix(); // Restore world coordinate system.\r
-                                               break;\r
-                                       case NyARRealityTarget.RT_UNKNOWN:\r
-                                               if(tag==null){\r
-                                                       break;\r
-                                               }\r
-                                               if(t.getGrabbRate()<20){\r
-                                                       break;\r
-                                               }\r
-                                               if(tag.last_status==CardDetect.MORE_FRONT_CENTER)\r
-                                               {\r
-                                                       NyARDoublePoint2d[] p=t.refTargetVertex();\r
-                                                       //もっと真ん中から写せメッセージ\r
-                                                       double c=Math.sin((clock%45*4)*Math.PI/180);\r
-                                                       _gl.glColor3d(c,c, 0.0);\r
-                                                       _gl.glLineWidth(2);\r
-                                                       NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,true);\r
-                                                       _gl.glBegin(GL.GL_LINE_LOOP);\r
-                                                       _gl.glVertex2d(p[0].x,p[0].y);\r
-                                                       _gl.glVertex2d(p[1].x,p[1].y);\r
-                                                       _gl.glVertex2d(p[2].x,p[2].y);\r
-                                                       _gl.glVertex2d(p[3].x,p[3].y);\r
-                                                       _gl.glEnd();\r
-                                                       NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);\r
-                                                       NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,false);\r
-                                                       NyARGLDrawUtil.setFontColor(t.getGrabbRate()<50?Color.RED:Color.BLUE);\r
-                                                       NyARIntPoint2d cp=new NyARIntPoint2d();\r
-                                                       t.getTargetCenter(cp);\r
-                                                       _gl.glTranslated(cp.x,SCREEN_Y-cp.y,1);\r
-                                                       NyARGLDrawUtil.drawText("Please view the card from the front. "+t.getGrabbRate(),1f);\r
-                                                       NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);\r
-                                                       \r
-                                               }else if(tag.last_status==CardDetect.ESTIMATE_NOW)\r
-                                               {\r
-                                                       NyARDoublePoint2d[] p=t.refTargetVertex();\r
-                                                       //もっと真ん中から写せメッセージ\r
-                                                       double c=Math.sin((clock%45*8)*Math.PI/180);\r
-                                                       _gl.glColor3d(0,c, 0.0);\r
-                                                       _gl.glLineWidth(2);\r
-                                                       NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,true);\r
-                                                       _gl.glBegin(GL.GL_LINE_LOOP);\r
-                                                       _gl.glVertex2d(p[0].x,p[0].y);\r
-                                                       _gl.glVertex2d(p[1].x,p[1].y);\r
-                                                       _gl.glVertex2d(p[2].x,p[2].y);\r
-                                                       _gl.glVertex2d(p[3].x,p[3].y);\r
-                                                       _gl.glEnd();\r
-                                                       NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);\r
-                                                       NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,false);\r
-                                                       NyARGLDrawUtil.setFontColor(t.getGrabbRate()<50?Color.RED:Color.BLUE);\r
-                                                       NyARIntPoint2d cp=new NyARIntPoint2d();\r
-                                                       t.getTargetCenter(cp);\r
-                                                       _gl.glTranslated(cp.x,SCREEN_Y-cp.y,1);\r
-                                                       NyARGLDrawUtil.drawText("Check card size...",1f);\r
-                                                       NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);\r
-                                                       \r
-                                               }\r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       Thread.sleep(1);// タスク実行権限を一旦渡す\r
-               }catch(Exception e){\r
-                       e.printStackTrace();\r
-               }\r
-\r
-       }\r
-       /**\r
-        * カメラのキャプチャした画像を非同期に受け取る関数。\r
-        * 画像を受け取ると、同期を取ってRealityを1サイクル進めます。\r
-        */\r
-       public void onUpdateBuffer(Buffer i_buffer)\r
-       {\r
-               //クロック進行\r
-               clock++;\r
-               try {\r
-                       synchronized (this._sync_object)\r
-                       {\r
-                               this._src.setImage(i_buffer);\r
-                               this._reality.progress(this._src);\r
-                               for(int i=this._reality.refTargetList().getLength()-1;i>=0;i--)\r
-                               {\r
-                                       NyARRealityTarget t=this._reality.refTargetList().getItem(i);\r
-                                       switch(t.getTargetType())\r
-                                       {\r
-                                       case NyARRealityTarget.RT_UNKNOWN:\r
-                                               //tagに推定用オブジェクトが割り当てられていなければ割り当てる。\r
-                                               if(t.tag==null){\r
-                                                       t.tag=new CardDetect.UnknownRectInfo();\r
-                                               }\r
-                                               CardDetect.UnknownRectInfo r=(CardDetect.UnknownRectInfo)t.tag;\r
-                                               //推定\r
-                                               this._mklib.detectCardDirection(t, r);\r
-                                               switch(r.last_status){\r
-                                               case CardDetect.ESTIMATE_COMPLETE:\r
-                                                       //レートチェック(17/11(1.54)くらいならクレジットカードサイズ。)\r
-                                                       if(1.35<r.rate && r.rate<1.75){\r
-                                                               //クレジットカードサイズをセット\r
-                                                               if(!this._reality.changeTargetToKnown(t,r.artk_direction,85,55)){\r
-                                                                       //遷移の成功チェック\r
-                                                                       break;//失敗\r
-                                                               }\r
-                                                       }else{\r
-                                                               //サイズ違う?\r
-                                                               this._reality.changeTargetToDead(t,50);\r
-                                                       }\r
-                                                       break;\r
-                                               case CardDetect.ESTIMATE_NOW:\r
-                                                       break;\r
-                                               case CardDetect.FAILED_ESTIMATE:\r
-                                                       this._reality.changeTargetToDead(t,15);\r
-                                                       break;\r
-                                               }\r
-                                       default:\r
-                                               //他の種類は特にやることは無い。\r
-                                       }\r
-                               }\r
-                       }\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-\r
-       public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged)\r
-       {\r
-       }\r
-       \r
-       private final static String PARAM_FILE = "../Data/camera_para.dat";\r
-\r
-       public static void main(String[] args)\r
-       {\r
-               try {\r
-                       NyARParam param = new NyARParam();\r
-                       param.loadARParamFromFile(PARAM_FILE);\r
-                       new Test_NyARRealityGl_CreditCardDetect(param);\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               return;\r
-       }\r
-\r
-}\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_IdMarker.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_IdMarker.java
deleted file mode 100644 (file)
index f980382..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-package jp.nyatla.nyartoolkit.rpf.sample;\r
-\r
-import java.awt.Color;\r
-import java.awt.Font;\r
-import java.awt.Frame;\r
-import java.awt.Insets;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-\r
-import javax.media.Buffer;\r
-import javax.media.opengl.*;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint2d;\r
-import jp.nyatla.nyartoolkit.core.types.matrix.NyARDoubleMatrix44;\r
-import jp.nyatla.nyartoolkit.rpf.mklib.RawbitSerialIdTable;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTargetList;\r
-import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource_Jmf;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDevice;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl.NyARRealityGl;\r
-\r
-import com.sun.opengl.util.Animator;\r
-\r
-/**\r
- * NyARRealityシステムのサンプル。\r
- * IDマーカの上に立方体を表示するサンプルプログラムです。\r
- * RealitySourceにはJMFを使用し、RealityにはRealityGLを使います。\r
- * @author nyatla\r
- *\r
- */\r
-public class Test_NyARRealityGl_IdMarker implements GLEventListener, JmfCaptureListener\r
-{\r
-\r
-       private final static int SCREEN_X = 640;\r
-       private final static int SCREEN_Y = 480;\r
-\r
-       private Animator _animator;\r
-       private JmfCaptureDevice _capture;\r
-\r
-       private GL _gl;\r
-\r
-       private Object _sync_object=new Object();\r
-\r
-       NyARRealityGl _reality;\r
-       NyARRealitySource_Jmf _src;\r
-       RawbitSerialIdTable _mklib;\r
-\r
-       public Test_NyARRealityGl_IdMarker(NyARParam i_param) throws NyARException\r
-       {\r
-               Frame frame = new Frame("NyARReality on OpenGL");\r
-               \r
-               // キャプチャの準備\r
-               JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();\r
-               this._capture = devlist.getDevice(0);\r
-               if (!this._capture.setCaptureFormat(SCREEN_X, SCREEN_Y, 30.0f)) {\r
-                       throw new NyARException();\r
-               }\r
-               this._capture.setOnCapture(this);\r
-               //Realityの構築\r
-               i_param.changeScreenSize(SCREEN_X, SCREEN_Y);   \r
-               //キャプチャ画像と互換性のあるRealitySourceを構築\r
-               this._src=new NyARRealitySource_Jmf(this._capture.getCaptureFormat(),i_param.getDistortionFactor(),1,100);\r
-               //OpenGL互換のRealityを構築               \r
-               this._reality=new NyARRealityGl(i_param.getPerspectiveProjectionMatrix(),i_param.getScreenSize(),10,10000,3,10);\r
-               //マーカライブラリ(NyId)の構築\r
-               this._mklib= new RawbitSerialIdTable(10);\r
-               //マーカサイズテーブルの作成(とりあえず全部8cm)\r
-               this._mklib.addAnyItem("any id",80);\r
-                               \r
-               // 3Dを描画するコンポーネント\r
-               GLCanvas canvas = new GLCanvas();\r
-               frame.add(canvas);\r
-               canvas.addGLEventListener(this);\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e)\r
-                       {\r
-                               System.exit(0);\r
-                       }\r
-               });\r
-\r
-               frame.setVisible(true);\r
-               Insets ins = frame.getInsets();\r
-               frame.setSize(SCREEN_X + ins.left + ins.right, SCREEN_Y + ins.top + ins.bottom);\r
-               canvas.setBounds(ins.left, ins.top, SCREEN_X, SCREEN_Y);\r
-       }\r
-\r
-       public void init(GLAutoDrawable drawable)\r
-       {\r
-               this._gl = drawable.getGL();\r
-               this._gl.glEnable(GL.GL_DEPTH_TEST);\r
-               this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-               NyARGLDrawUtil.setFontStyle("SansSerif",Font.BOLD,24);\r
-               // NyARToolkitの準備\r
-               try {\r
-                       // キャプチャ開始\r
-                       _capture.start();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               this._animator = new Animator(drawable);\r
-               this._animator.start();\r
-               return;\r
-       }\r
-\r
-       public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)\r
-       {\r
-               _gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-               _gl.glViewport(0, 0, width, height);\r
-\r
-               // 視体積の設定\r
-               _gl.glMatrixMode(GL.GL_PROJECTION);\r
-               _gl.glLoadIdentity();\r
-               // 見る位置\r
-               _gl.glMatrixMode(GL.GL_MODELVIEW);\r
-               _gl.glLoadIdentity();\r
-       }\r
-\r
-       public void display(GLAutoDrawable drawable)\r
-       {\r
-               //RealitySourceにデータが処理する。\r
-               if(!this._src.isReady())\r
-               {\r
-                       return;\r
-               }\r
-               \r
-               // 背景を書く\r
-               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
-                               \r
-                               this._reality.glDrawRealitySource(this._gl,this._src);\r
-                               // Projection transformation.\r
-                               this._gl.glMatrixMode(GL.GL_PROJECTION);\r
-                               this._reality.glLoadCameraFrustum(this._gl);\r
-                               //ターゲットリストを走査して、画面に内容を反映\r
-                               NyARRealityTargetList tl=this._reality.refTargetList();\r
-                               for(int i=tl.getLength()-1;i>=0;i--){\r
-                                       NyARRealityTarget t=tl.getItem(i);\r
-                                       switch(t.getTargetType())\r
-                                       {\r
-                                       case NyARRealityTarget.RT_KNOWN:\r
-                                               //立方体の描画\r
-                                               this._gl.glMatrixMode(GL.GL_MODELVIEW);\r
-                                               this._gl.glLoadIdentity();\r
-                                               NyARDoubleMatrix44 m=t.refTransformMatrix();\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               _gl.glTranslatef(0,0,40f); // Place base of cube on marker surface.\r
-                                               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-                                               NyARGLDrawUtil.drawColorCube(this._gl,80f);\r
-                                               _gl.glPopMatrix(); // Restore world coordinate system.\r
-                                               //マーカ情報の描画\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,m);\r
-                                               _gl.glTranslatef(-30,0,90f); // Place base of cube on marker surface.\r
-                                               _gl.glRotatef(90,1.0f,0.0f,0.0f); // Place base of cube on marker surface.\r
-                                               //マーカ情報の表示\r
-                                               NyARGLDrawUtil.setFontColor(t.getGrabbRate()<50?Color.RED:Color.BLUE);\r
-                                               NyARGLDrawUtil.drawText("ID:"+(Long)(t.tag)+" GRUB:"+t.grab_rate+"%",0.5f);\r
-                                               _gl.glPopMatrix();\r
-                                               \r
-                                               break;\r
-                                       case NyARRealityTarget.RT_UNKNOWN:\r
-                                               NyARDoublePoint2d[] p=t.refTargetVertex();                                              \r
-                                               NyARGLDrawUtil.beginScreenCoordinateSystem(this._gl,SCREEN_X,SCREEN_Y,true);\r
-                                               _gl.glLineWidth(2);\r
-                                               _gl.glColor3f(1.0f,0.0f,0.0f);\r
-                                               _gl.glBegin(GL.GL_LINE_LOOP);\r
-                                               _gl.glVertex2d(p[0].x,p[0].y);\r
-                                               _gl.glVertex2d(p[1].x,p[1].y);\r
-                                               _gl.glVertex2d(p[2].x,p[2].y);\r
-                                               _gl.glVertex2d(p[3].x,p[3].y);\r
-                                               _gl.glEnd();\r
-                                               NyARGLDrawUtil.endScreenCoordinateSystem(this._gl);\r
-                                               \r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       Thread.sleep(1);// タスク実行権限を一旦渡す\r
-               }catch(Exception e){\r
-                       e.printStackTrace();\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * カメラのキャプチャした画像を非同期に受け取る関数。\r
-        * 画像を受け取ると、同期を取ってRealityを1サイクル進めます。\r
-        */\r
-       public void onUpdateBuffer(Buffer i_buffer)\r
-       {\r
-               try {\r
-                       synchronized (this._sync_object)\r
-                       {\r
-                               this._src.setImage(i_buffer);\r
-                               this._reality.progress(this._src);\r
-                               //UnknownTargetを1個取得して、遷移を試す。\r
-                               NyARRealityTarget t=this._reality.selectSingleUnknownTarget();\r
-                               if(t==null){\r
-                                       return;\r
-                               }\r
-                               //ターゲットに一致するデータを検索\r
-                               RawbitSerialIdTable.IdentifyIdResult r=new RawbitSerialIdTable.IdentifyIdResult();\r
-                               if(this._mklib.identifyId(t,this._src,r)){\r
-                                       //テーブルにターゲットが見つかったので遷移する。\r
-                                       if(!this._reality.changeTargetToKnown(t,r.artk_direction,r.marker_width)){\r
-                                       //遷移の成功チェック\r
-                                               return;//失敗\r
-                                       }\r
-                                       //遷移に成功したので、tagにユーザ定義情報を書きこむ。\r
-                                       t.tag=new Long(r.id);\r
-                               }else{\r
-                                       //一致しないので、このターゲットは捨てる。(15フレーム無視)\r
-                                       this._reality.changeTargetToDead(t,15);\r
-                               }\r
-                       }\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-\r
-       public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged)\r
-       {\r
-       }\r
-       \r
-       private final static String PARAM_FILE = "../Data/camera_para.dat";\r
-\r
-       public static void main(String[] args)\r
-       {\r
-               try {\r
-                       NyARParam param = new NyARParam();\r
-                       param.loadARParamFromFile(PARAM_FILE);\r
-                       new Test_NyARRealityGl_IdMarker(param);\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               return;\r
-       }\r
-\r
-}\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_ScreenPos.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_NyARRealityGl_ScreenPos.java
deleted file mode 100644 (file)
index c2a867e..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-package jp.nyatla.nyartoolkit.rpf.sample;\r
-\r
-import java.awt.Frame;\r
-import java.awt.Insets;\r
-import java.awt.event.MouseEvent;\r
-import java.awt.event.MouseListener;\r
-import java.awt.event.WindowAdapter;\r
-import java.awt.event.WindowEvent;\r
-\r
-import javax.media.Buffer;\r
-import javax.media.opengl.*;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
-import jp.nyatla.nyartoolkit.rpf.mklib.RawbitSerialIdTable;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTargetList;\r
-import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource_Jmf;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDevice;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-import jp.nyatla.nyartoolkit.jogl.utils.NyARGLDrawUtil;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.gl.NyARRealityGl;\r
-\r
-import com.sun.opengl.util.Animator;\r
-\r
-/**\r
- * このプログラムは、NyARRealityシステムのデバックプログラムです。\r
- * ピッキングの実験ができます。\r
- * 画面上のクリックした位置に、立方体を移動することができます。\r
- * マーカは、idマーカを使います。\r
- * @author nyatla\r
- *\r
- */\r
-public class Test_NyARRealityGl_ScreenPos implements GLEventListener, JmfCaptureListener,MouseListener\r
-{\r
-\r
-       private final static int SCREEN_X = 640;\r
-       private final static int SCREEN_Y = 480;\r
-\r
-       private Animator _animator;\r
-       private JmfCaptureDevice _capture;\r
-\r
-       private GL _gl;\r
-\r
-\r
-       private Object _sync_object=new Object();\r
-\r
-       NyARRealityGl _reality;\r
-       NyARRealitySource_Jmf _src;\r
-       RawbitSerialIdTable _mklib;\r
-       public void mouseClicked(MouseEvent e)\r
-       {\r
-               int x=e.getX();\r
-               int y=e.getY();\r
-//             System.out.println(x+":"+y);\r
-               \r
-               synchronized(this._sync_object)\r
-               {\r
-                       for(int i=this._reality.refTargetList().getLength()-1;i>=0;i--)\r
-                       {\r
-                               NyARRealityTarget rt=this._reality.refTargetList().getItem(i);\r
-                               if(rt._target_type!=NyARRealityTarget.RT_KNOWN){\r
-                                       continue;\r
-                               }\r
-                               //ヒットするKnownターゲットを探す\r
-\r
-                                       if(e.getButton()==MouseEvent.BUTTON1){\r
-                                               NyARDoublePoint3d p=new NyARDoublePoint3d();\r
-                                               this._reality.refFrustum().unProjectOnMatrix(x,y,rt._transform_matrix,p);\r
-                                               NyARDoublePoint3d tag=(NyARDoublePoint3d)rt.tag;\r
-                                               tag.setValue(p);                                                \r
-                                               //タグの現在位置を変えてみる。\r
-\r
-                                       }\r
-                       }\r
-               }\r
-       }\r
-       public void mouseEntered(MouseEvent e){}\r
-       public void mouseExited(MouseEvent e){}\r
-       public void mousePressed(MouseEvent e){}\r
-       public void mouseReleased(MouseEvent e){}\r
-       public Test_NyARRealityGl_ScreenPos(NyARParam i_param) throws NyARException\r
-       {\r
-               Frame frame = new Frame("NyARReality on OpenGL");\r
-               \r
-               // キャプチャの準備\r
-               JmfCaptureDeviceList devlist = new JmfCaptureDeviceList();\r
-               this._capture = devlist.getDevice(0);\r
-               if (!this._capture.setCaptureFormat(SCREEN_X, SCREEN_Y, 30.0f)) {\r
-                       throw new NyARException();\r
-               }\r
-               this._capture.setOnCapture(this);\r
-               //Realityの構築\r
-               i_param.changeScreenSize(SCREEN_X, SCREEN_Y);   \r
-               //キャプチャ画像と互換性のあるRealitySourceを構築\r
-               this._src=new NyARRealitySource_Jmf(this._capture.getCaptureFormat(),i_param.getDistortionFactor(),2,100);\r
-               //OpenGL互換のRealityを構築\r
-               this._reality=new NyARRealityGl(i_param.getPerspectiveProjectionMatrix(),i_param.getScreenSize(),10,10000,3,3);\r
-               //マーカライブラリ(NyId)の構築\r
-               this._mklib= new RawbitSerialIdTable(10);\r
-               //マーカサイズテーブルの作成(とりあえず全部4cm)\r
-               this._mklib.addAnyItem("ANY_ITEM",80);\r
-                               \r
-               // 3Dを描画するコンポーネント\r
-               GLCanvas canvas = new GLCanvas();\r
-               frame.add(canvas);\r
-               canvas.addGLEventListener(this);\r
-               frame.addWindowListener(new WindowAdapter() {\r
-                       public void windowClosing(WindowEvent e)\r
-                       {\r
-                               System.exit(0);\r
-                       }\r
-               });\r
-               canvas.addMouseListener(this);\r
-\r
-               frame.setVisible(true);\r
-               Insets ins = frame.getInsets();\r
-               frame.setSize(SCREEN_X + ins.left + ins.right, SCREEN_Y + ins.top + ins.bottom);\r
-               canvas.setBounds(ins.left, ins.top, SCREEN_X, SCREEN_Y);\r
-       }\r
-\r
-       public void init(GLAutoDrawable drawable)\r
-       {\r
-               this._gl = drawable.getGL();\r
-               this._gl.glEnable(GL.GL_DEPTH_TEST);\r
-               this._gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);\r
-               // NyARToolkitの準備\r
-               try {\r
-                       // キャプチャ開始\r
-                       _capture.start();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               this._animator = new Animator(drawable);\r
-               this._animator.start();\r
-               return;\r
-       }\r
-\r
-       public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height)\r
-       {\r
-               _gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);\r
-               _gl.glViewport(0, 0, width, height);\r
-\r
-               // 視体積の設定\r
-               _gl.glMatrixMode(GL.GL_PROJECTION);\r
-               _gl.glLoadIdentity();\r
-               // 見る位置\r
-               _gl.glMatrixMode(GL.GL_MODELVIEW);\r
-               _gl.glLoadIdentity();\r
-       }\r
-       private static float TICK=0;\r
-       public void display(GLAutoDrawable drawable)\r
-       {\r
-               TICK+=0.1;\r
-               //RealitySourceにデータが処理する。\r
-               if(!this._src.isReady())\r
-               {\r
-                       return;\r
-               }\r
-               \r
-               // 背景を書く\r
-               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
-                       {\r
-                               //背景描画\r
-                               this._reality.glDrawRealitySource(this._gl,this._src);                  \r
-                               // Projection transformation.\r
-                               this._gl.glMatrixMode(GL.GL_PROJECTION);\r
-                               this._reality.glLoadCameraFrustum(this._gl);\r
-                               //ターゲットリストを走査して、画面に内容を反映\r
-                               NyARRealityTargetList tl=this._reality.refTargetList();\r
-                               for(int i=tl.getLength()-1;i>=0;i--){\r
-                                       NyARRealityTarget t=tl.getItem(i);\r
-                                       switch(t.getTargetType())\r
-                                       {\r
-                                       case NyARRealityTarget.RT_KNOWN:\r
-                                               this._gl.glMatrixMode(GL.GL_MODELVIEW);\r
-                                               // 変換行列をOpenGL形式に変換(ここ少し変えるかも)\r
-                                               this._reality.glLoadModelViewMatrix(this._gl,t.refTransformMatrix());\r
-\r
-                                               NyARDoublePoint3d tag=(NyARDoublePoint3d)t.tag;                                         \r
-                                               // All other lighting and geometry goes here.\r
-                                               _gl.glPushMatrix(); // Save world coordinate system.\r
-                                               _gl.glTranslatef((float)tag.x,(float)tag.y,(float)tag.z+20f);\r
-                                               _gl.glDisable(GL.GL_LIGHTING); // Just use colours.\r
-                                               NyARGLDrawUtil.drawColorCube(this._gl,40f);\r
-                                               _gl.glPopMatrix(); // Restore world coordinate system.\r
-\r
-                                               \r
-                                               break;\r
-                                       case NyARRealityTarget.RT_UNKNOWN:\r
-                                               \r
-                                               break;\r
-                                       }\r
-                               }\r
-                       }\r
-                       Thread.sleep(1);// タスク実行権限を一旦渡す\r
-               }catch(Exception e){\r
-                       e.printStackTrace();\r
-               }\r
-\r
-       }\r
-\r
-       /**\r
-        * カメラのキャプチャした画像を非同期に受け取る関数。\r
-        * 画像を受け取ると、同期を取ってRealityを1サイクル進めます。\r
-        */\r
-       public void onUpdateBuffer(Buffer i_buffer)\r
-       {\r
-               try {\r
-                       synchronized (this._sync_object)\r
-                       {\r
-                               this._src.setImage(i_buffer);\r
-                               this._reality.progress(this._src);\r
-                               //Deadターゲットの後片付け\r
-                               //省略\r
-                               \r
-                               //Knownターゲットは1個だけね。\r
-                               if(this._reality.getNumberOfKnown()>0){\r
-                                       return;\r
-                               }\r
-                               //UnknownTargetを1個取得して、遷移を試す。\r
-                               NyARRealityTarget t=this._reality.selectSingleUnknownTarget();\r
-                               if(t==null){\r
-                                       return;\r
-                               }\r
-\r
-\r
-                               //ターゲットに一致するデータを検索\r
-                               RawbitSerialIdTable.IdentifyIdResult r=new RawbitSerialIdTable.IdentifyIdResult();\r
-                               if(this._mklib.identifyId(t,this._src,r)){\r
-                                       //テーブルにターゲットが見つかったので遷移する。\r
-                                       if(!this._reality.changeTargetToKnown(t,r.artk_direction,r.marker_width)){\r
-                                       //遷移の成功チェック\r
-                                               return;//失敗\r
-                                       }\r
-                                       //遷移に成功したので、tagにユーザ定義情報を書きこむ。\r
-                                       t.tag=new NyARDoublePoint3d();\r
-                               }else{\r
-                                       //一致しないので、このターゲットは捨てる。\r
-                                       this._reality.changeTargetToDead(t);\r
-                               }\r
-                       }\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-\r
-       public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged)\r
-       {\r
-       }\r
-       \r
-       private final static String PARAM_FILE = "../Data/camera_para.dat";\r
-\r
-       public static void main(String[] args)\r
-       {\r
-               try {\r
-                       NyARParam param = new NyARParam();\r
-                       param.loadARParamFromFile(PARAM_FILE);\r
-                       new Test_NyARRealityGl_ScreenPos(param);\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-               return;\r
-       }\r
-\r
-}\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_RealityTarget.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_RealityTarget.java
deleted file mode 100644 (file)
index 3d0ee5a..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-package jp.nyatla.nyartoolkit.rpf.sample;\r
-\r
-import java.awt.*;\r
-import java.awt.event.MouseEvent;\r
-import java.awt.event.MouseListener;\r
-import java.awt.image.*;\r
-import java.io.File;\r
-import java.io.IOException;\r
-\r
-import javax.imageio.ImageIO;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.raster.NyARGrayscaleRaster;\r
-import jp.nyatla.nyartoolkit.core.raster.rgb.NyARRgbRaster;\r
-import jp.nyatla.nyartoolkit.core.types.NyARBufferType;\r
-import jp.nyatla.nyartoolkit.core.types.NyARDoublePoint3d;\r
-import jp.nyatla.nyartoolkit.core.types.NyARIntPoint2d;\r
-import jp.nyatla.nyartoolkit.core.types.NyARIntRect;\r
-import jp.nyatla.nyartoolkit.rpf.mklib.ARTKMarkerTable;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARReality;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTarget;\r
-import jp.nyatla.nyartoolkit.rpf.reality.nyartk.NyARRealityTargetList;\r
-import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource;\r
-import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource_JavaImage;\r
-import jp.nyatla.nyartoolkit.rpf.realitysource.nyartk.NyARRealitySource_Jmf;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status.NyARRectTargetStatus;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status.NyARTargetStatus;\r
-import jp.nyatla.nyartoolkit.jmf.utils.*;\r
-import jp.nyatla.nyartoolkit.utils.j2se.*;\r
-\r
-\r
-\r
-\r
-\r
-/**\r
- * NyARRealityのテストプログラム。動作保証なし。\r
- *\r
- */\r
-\r
-public class Test_RealityTarget extends Frame implements MouseListener\r
-{\r
-       /**\r
-        * 出力ソース\r
-        * @author nyatla\r
-        */\r
-       class InputSource\r
-       {\r
-               public NyARRealitySource reality_in;\r
-       }\r
-\r
-       class ImageSource extends InputSource\r
-       {\r
-               public ImageSource(String i_filename) throws NyARException, IOException\r
-               {\r
-                       BufferedImage _src_image;\r
-                       _src_image = ImageIO.read(new File(i_filename));\r
-                       NyARRealitySource_JavaImage ri=new NyARRealitySource_JavaImage(_src_image.getWidth(),_src_image.getHeight(),null,2,100);\r
-                       ri.getBufferedImage().getGraphics().drawImage(_src_image,0,0,null);\r
-                       this.reality_in=ri;\r
-               }\r
-       }\r
-\r
-       class LiveSource extends InputSource implements JmfCaptureListener\r
-       {\r
-               private JmfCaptureDevice _capture;\r
-               public LiveSource() throws NyARException\r
-               {\r
-                       //キャプチャの準備\r
-                       JmfCaptureDeviceList devlist=new JmfCaptureDeviceList();\r
-                       this._capture=devlist.getDevice(0);\r
-                       //JmfNyARRaster_RGBはYUVよりもRGBで高速に動作します。\r
-                       if(!this._capture.setCaptureFormat(JmfCaptureDevice.PIXEL_FORMAT_RGB,320, 240,15f)){\r
-                               if(!this._capture.setCaptureFormat(JmfCaptureDevice.PIXEL_FORMAT_YUV,320, 240,15f)){\r
-                                       throw new NyARException("キャプチャフォーマットが見つかりません");\r
-                               }               \r
-                       }\r
-                       this._capture.setOnCapture(this);\r
-                       this._capture.start();\r
-                       this.reality_in=new NyARRealitySource_Jmf(this._capture.getCaptureFormat(),null,2,100);\r
-                       return;\r
-                       \r
-               }\r
-               \r
-               public void onUpdateBuffer(javax.media.Buffer i_buffer)\r
-               {\r
-                       try {\r
-                               //キャプチャしたバッファをラスタにセット\r
-                               synchronized(this.reality_in){\r
-                                       ((NyARRealitySource_Jmf)(this.reality_in)).setImage(i_buffer);\r
-                               }\r
-                               //キャプチャしたイメージを表示用に加工\r
-                       }catch(Exception e)\r
-                       {\r
-                               e.printStackTrace();\r
-                       }\r
-\r
-               }\r
-\r
-               public void startCapture()\r
-               {\r
-                       try {\r
-                               this._capture.start();\r
-                       } catch (Exception e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-       }\r
-       \r
-       public void mouseClicked(MouseEvent e)\r
-       {\r
-               try {\r
-               int x=e.getX()-this.getInsets().left;\r
-               int y=e.getY()-this.getInsets().top;\r
-               System.out.println(x+":"+y);\r
-               synchronized(this._input_source.reality_in)\r
-               {\r
-                       NyARBufferedImageRaster bmp= new NyARBufferedImageRaster(100,100,NyARBufferType.BYTE1D_R8G8B8_24);\r
-                       for(int i=this._reality.refTargetList().getLength()-1;i>=0;i--)\r
-                       {\r
-                               NyARRealityTarget rt=this._reality.refTargetList().getItem(i);\r
-                               if(rt._target_type!=NyARRealityTarget.RT_UNKNOWN && rt._target_type!=NyARRealityTarget.RT_KNOWN){\r
-                                       continue;\r
-                               }\r
-                               if(rt.isInnerVertexPoint2d(x, y))\r
-                               {\r
-                                       if(e.getButton()==MouseEvent.BUTTON1){\r
-                                               //左ボタンはUNKNOWN→KNOWN\r
-                                               if(rt._target_type==NyARRealityTarget.RT_UNKNOWN){\r
-                                                       ARTKMarkerTable.GetBestMatchTargetResult r=new ARTKMarkerTable.GetBestMatchTargetResult();\r
-                                                       if(this._mklib.getBestMatchTarget(rt,this._input_source.reality_in,r)){\r
-                                                               this._reality.changeTargetToKnown(rt,r.artk_direction,80);\r
-                                                       }\r
-                                                               //イメージピックアップの実験\r
-                                                               NyARIntPoint2d[] iv=NyARIntPoint2d.createArray(4);\r
-                                                               for(int i2=0;i2<4;i2++){\r
-                                                                       iv[i2].x=(int)rt.refTargetVertex()[i2].x;\r
-                                                                       iv[i2].y=(int)rt.refTargetVertex()[i2].y;\r
-                                                               }\r
-                                                               System.out.println(">>");\r
-                                                               NyARRgbRaster rgb=new NyARRgbRaster(320,240,NyARBufferType.BYTE1D_R8G8B8_24);\r
-                                                               //2d座標系\r
-                                                               {\r
-                                                                       this._reality.getRgbPatt2d(this._input_source.reality_in,rt.refTargetVertex(),1,bmp);\r
-                                                                       this.getGraphics().drawImage(bmp.getBufferedImage(),this.getInsets().left,this.getInsets().top+240,null);\r
-                                                               }\r
-                                                               //3d(カメラ)\r
-                                                               {\r
-                                                                       NyARDoublePoint3d[] p=NyARDoublePoint3d.createArray(4);\r
-                                                                       p[3].x=-40;p[3].y=-40;p[3].z=0;\r
-                                                                       p[2].x=40; p[2].y=-40;p[2].z=0;\r
-                                                                       p[1].x=40; p[1].y=40 ;p[1].z=0;\r
-                                                                       p[0].x=-40;p[0].y=40 ;p[0].z=0;\r
-                                                                       this._reality.getRgbPatt3d(this._input_source.reality_in,p, rt.refTransformMatrix(), 1, bmp);\r
-                                                                       this.getGraphics().drawImage(bmp.getBufferedImage(),this.getInsets().left+100,this.getInsets().top+240,null);\r
-                                                               }\r
-                                                               //3d(Target)\r
-                                                               {\r
-                                                                       NyARDoublePoint3d[] p=NyARDoublePoint3d.createArray(4);\r
-                                                                       p[3].x=-40;p[3].y=-40;p[3].z=0;\r
-                                                                       p[2].x=40; p[2].y=-40;p[2].z=0;\r
-                                                                       p[1].x=40; p[1].y=40 ;p[1].z=0;\r
-                                                                       p[0].x=-80;p[0].y=40 ;p[0].z=0;\r
-                                                                       rt.getRgbPatt3d(this._input_source.reality_in,p,null, 1, bmp);\r
-                                                                       this.getGraphics().drawImage(bmp.getBufferedImage(),this.getInsets().left+200,this.getInsets().top+240,null);\r
-                                                               }\r
-                                                               //3d(Target)\r
-                                                               {\r
-                                                                       rt.getRgbRectPatt3d(this._input_source.reality_in,-80,-80,80,80,1, bmp);\r
-                                                                       this.getGraphics().drawImage(bmp.getBufferedImage(),this.getInsets().left+300,this.getInsets().top+240,null);\r
-                                                               }\r
-                                                       break;\r
-                                               }\r
-                                       }else if(e.getButton()==MouseEvent.BUTTON3){\r
-                                               //右ボタンはUNKNOWN or KNOWN to dead\r
-                                               try {\r
-                                                       this._reality.changeTargetToDead(rt);\r
-                                                       break;\r
-                                               } catch (NyARException e1) {\r
-                                                       // TODO Auto-generated catch block\r
-                                                       e1.printStackTrace();\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-               } catch (NyARException e1) {\r
-                       // TODO Auto-generated catch block\r
-                       e1.printStackTrace();\r
-               }\r
-       }\r
-       public void mouseEntered(MouseEvent e){}\r
-       public void mouseExited(MouseEvent e){}\r
-       public void mousePressed(MouseEvent e){}\r
-       public void mouseReleased(MouseEvent e){}\r
-       ARTKMarkerTable _mklib; \r
-       \r
-       \r
-       private NyARReality _reality;\r
-\r
-       \r
-       \r
-       NyARParam _param;\r
-       \r
-       private final static String SAMPLE_FILES = "../Data/320x240ABGR.png";\r
-       private final static String PARAM_FILE = "../Data/camera_para.dat";\r
-\r
-       private static final long serialVersionUID = -2110888320986446576L;\r
-\r
-\r
-       private int W = 320;\r
-       private int H = 240;\r
-       InputSource _input_source;\r
-       public Test_RealityTarget() throws NyARException, Exception\r
-       {\r
-               setTitle("NyARReality test");\r
-               Insets ins = this.getInsets();\r
-               this.setSize(1024 + ins.left + ins.right, 768 + ins.top + ins.bottom);\r
-               this._param=new NyARParam();\r
-               this._param.loadARParamFromFile(PARAM_FILE);\r
-               this._param.changeScreenSize(W,H);\r
-               this._reality=new NyARReality(this._param.getScreenSize(),10,1000,this._param.getPerspectiveProjectionMatrix(),null,10,10);\r
-//             this._input_source=new LiveSource();\r
-               this._input_source=new ImageSource(SAMPLE_FILES);\r
-               addMouseListener(this);\r
-               this._mklib= new ARTKMarkerTable(10,16,16,25,25,4);\r
-               this._mklib.addMarkerFromARPattFile(PATT_HIRO,0,"HIRO",80,80);\r
-               return;\r
-       }       \r
-\r
-    public void update()\r
-    {\r
-               try {\r
-                       // マーカーを検出\r
-                       Thread.sleep(30);\r
-                       synchronized(this._input_source.reality_in){\r
-//                             Date d2 = new Date();\r
-//                             for (int i = 0; i < 1000; i++) {\r
-                                       this._reality.progress(this._input_source.reality_in);                  \r
-//                             }\r
-//                             Date d = new Date();\r
-//                             System.out.println(d.getTime() - d2.getTime());\r
-                       }\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-    }\r
-    BufferedImage _tmp_bf=new BufferedImage(320,240,BufferedImage.TYPE_INT_RGB);\r
-    private void draw(Graphics ig) throws NyARException\r
-    {\r
-       //ウインドウの情報\r
-               Insets ins = this.getInsets();\r
-\r
-       //ワーク画面\r
-       BufferedImage bmp=this._tmp_bf;\r
-       Graphics g=bmp.getGraphics();\r
-       NyARRasterImageIO.copy(this._input_source.reality_in.refRgbSource(),bmp);\r
-       \r
-       //Ignore,Coord,New\r
-\r
-       //表示\r
-       g.setColor(Color.black);\r
-       g.drawString("Unknown:"+this._reality.getNumberOfUnknown(),200,200);\r
-       g.drawString("Known:"+this._reality.getNumberOfKnown(),200,210);\r
-       g.drawString("Dead:"+this._reality.getNumberOfDead(),200,220);\r
-               NyARRealityTargetList tl=this._reality.refTargetList();\r
-               for(int i=tl.getLength()-1;i>=0;i--){\r
-                       NyARRealityTarget t=tl.getItem(i);\r
-                       switch(t.getTargetType())\r
-                       {\r
-                       case NyARRealityTarget.RT_KNOWN:\r
-                               drawKnownRT(g,t);\r
-                               break;\r
-                       case NyARRealityTarget.RT_UNKNOWN:                              \r
-                               drawUnKnownRT(g,t);\r
-                               break;\r
-                       default:\r
-                               drawDeadRT(g,t);\r
-                               break;\r
-                       }\r
-               }       \r
-       ig.drawImage(bmp,ins.left,ins.top,null);\r
-       \r
-\r
-       drawImage(ig,ins.left+320,ins.top,this._input_source.reality_in.refLastTrackSource().refEdgeRaster());\r
-       //\r
-\r
-    }\r
-\r
-    \r
-    private void drawImage(Graphics g,int x,int y,NyARGrayscaleRaster r) throws NyARException\r
-    {\r
-        BufferedImage _tmp_bf=new BufferedImage(r.getWidth(),r.getHeight(),BufferedImage.TYPE_INT_RGB);\r
-       NyARRasterImageIO.copy(r, _tmp_bf);\r
-       g.drawImage(_tmp_bf, x,y, null);\r
-       \r
-    }\r
-    //\r
-    //描画関数\r
-    //\r
-    private void drawKnownRT(Graphics g,NyARRealityTarget t)\r
-    {\r
-       g.setColor(Color.GREEN);\r
-       NyARIntPoint2d b=new NyARIntPoint2d();\r
-       t.getTargetCenter(b);\r
-       NyARIntRect r=t._ref_tracktarget._sample_area;\r
-       g.drawString("[K]("+t.grab_rate+")",b.x,b.y);\r
-               g.drawRect(r.x,r.y, r.w,r.h);\r
-       if(t._ref_tracktarget._st_type==NyARTargetStatus.ST_RECT){\r
-               g.drawString(">"+((NyARRectTargetStatus)(t._ref_tracktarget._ref_status)).detect_type,r.x,r.y+10);\r
-       }else{\r
-       }\r
-    }\r
-    private void drawUnKnownRT(Graphics g,NyARRealityTarget t)\r
-    {\r
-       g.setColor(Color.YELLOW);\r
-       NyARIntPoint2d b=new NyARIntPoint2d();\r
-       t.getTargetCenter(b);\r
-       NyARIntRect r=t._ref_tracktarget._sample_area;\r
-       g.drawString("[U]("+t.grab_rate+")",b.x,b.y);\r
-               g.drawRect(r.x,r.y, r.w,r.h);\r
-       }\r
-    private void drawDeadRT(Graphics g,NyARRealityTarget t)\r
-    {\r
-       g.setColor(Color.RED);\r
-       NyARIntRect r=t._ref_tracktarget._sample_area;\r
-       g.drawString("[D]("+t.grab_rate+")",r.x,r.y);\r
-    }\r
-    \r
-       private final static String PATT_HIRO = "../Data/patt.hiro";\r
-    \r
-\r
-\r
-    public void mainloop() throws Exception\r
-    {\r
-       for(;;){\r
-               //処理\r
-               this.update();\r
-               this.draw(this.getGraphics());\r
-       }\r
-    }\r
-\r
-       public static void main(String[] args)\r
-       {\r
-\r
-               try {\r
-                       Test_RealityTarget mainwin = new Test_RealityTarget();\r
-                       mainwin.setVisible(true);\r
-                       mainwin.mainloop();\r
-                       // mainwin.startImage();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-}\r
-\r
diff --git a/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_TrackTerget.java b/lib/src.rpf/jp/nyatla/nyartoolkit/rpf/sample/Test_TrackTerget.java
deleted file mode 100644 (file)
index dd22998..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-package jp.nyatla.nyartoolkit.rpf.sample;\r
-\r
-import java.awt.*;\r
-import java.awt.color.*;\r
-import java.awt.event.*;\r
-import java.awt.image.*;\r
-import java.io.*;\r
-import java.util.ArrayList;\r
-import java.util.Date;\r
-\r
-import javax.imageio.ImageIO;\r
-import javax.media.Buffer;\r
-import javax.media.format.VideoFormat;\r
-import javax.media.util.BufferToImage;\r
-\r
-import jp.nyatla.nyartoolkit.NyARException;\r
-import jp.nyatla.nyartoolkit.core.labeling.rlelabeling.NyARLabeling_Rle;\r
-import jp.nyatla.nyartoolkit.core.labeling.rlelabeling.NyARRleLabelFragmentInfo;\r
-import jp.nyatla.nyartoolkit.core.labeling.rlelabeling.NyARRleLabelFragmentInfoPtrStack;\r
-import jp.nyatla.nyartoolkit.core.param.NyARCameraDistortionFactor;\r
-import jp.nyatla.nyartoolkit.core.param.NyARParam;\r
-import jp.nyatla.nyartoolkit.core.raster.INyARRaster;\r
-import jp.nyatla.nyartoolkit.core.raster.NyARGrayscaleRaster;\r
-import jp.nyatla.nyartoolkit.core.rasterfilter.rgb2gs.NyARRasterFilter_Rgb2Gs_RgbAve;\r
-import jp.nyatla.nyartoolkit.utils.j2se.NyARBufferedImageRaster;\r
-import jp.nyatla.nyartoolkit.utils.j2se.NyARRasterImageIO;\r
-import jp.nyatla.nyartoolkit.core.types.*;\r
-\r
-\r
-import jp.nyatla.nyartoolkit.core.raster.rgb.INyARRgbRaster;\r
-import jp.nyatla.nyartoolkit.core.raster.rgb.NyARRgbRaster_RGB;\r
-//import jp.nyatla.nyartoolkit.dev.hierarchicallabeling.tracking.AreaTargetSrcHolder.AreaSrcItem;\r
-import jp.nyatla.nyartoolkit.rpf.sampler.lrlabel.*;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.NyARTarget;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.NyARTracker;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.NyARTrackerSource_Reference;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status.NyARContourTargetStatus;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status.NyARRectTargetStatus;\r
-import jp.nyatla.nyartoolkit.rpf.tracker.nyartk.status.NyARTargetStatus;\r
-import jp.nyatla.nyartoolkit.rpf.utils.VecLinearCoordinatesOperator;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDevice;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureDeviceList;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfCaptureListener;\r
-import jp.nyatla.nyartoolkit.jmf.utils.JmfNyARRaster_RGB;\r
-\r
-\r
-\r
-\r
-\r
-\r
-/**\r
- * Trackerの実験用プログラム。未保証。\r
- *\r
- */\r
-\r
-public class Test_TrackTerget extends Frame\r
-{\r
-       /**\r
-        * 出力ソース\r
-        * @author nyatla\r
-        */\r
-       interface InputSource\r
-       {\r
-               public void UpdateInput(NyARTrackerSource_Reference o_input) throws NyARException;\r
-       }\r
-\r
-       class ImageSource implements InputSource\r
-       {\r
-               private NyARBufferedImageRaster _src_image;\r
-               NyARGrayscaleRaster gs;\r
-               NyARRasterFilter_Rgb2Gs_RgbAve filter;\r
-\r
-               public ImageSource(String i_filename) throws IOException, NyARException\r
-               {\r
-                       this._src_image=new NyARBufferedImageRaster(ImageIO.read(new File(i_filename)));\r
-                       this.gs=new NyARGrayscaleRaster(this._src_image.getWidth(),this._src_image.getHeight());\r
-                       this.filter=new NyARRasterFilter_Rgb2Gs_RgbAve(this._src_image.getBufferType());\r
-               }\r
-               public void UpdateInput(NyARTrackerSource_Reference o_input) throws NyARException\r
-               {\r
-                       //GS値化\r
-                       this.filter.doFilter(this._src_image,gs);\r
-                       //samplerへ入力\r
-                       o_input.wrapBuffer(gs);\r
-                       \r
-               }\r
-       }\r
-       class MoveSource implements InputSource\r
-       {\r
-               private BufferedImage _src_image=new BufferedImage(320,240,BufferedImage.TYPE_INT_RGB);\r
-               private int sx,sy,x,y;\r
-               private int sx2,sy2,x2,y2;\r
-\r
-               public MoveSource()\r
-               {\r
-                       sx=1;sy=1;x=10;y=10;\r
-                       sx2=-2;sy2=1;x2=100;y2=10;\r
-               }\r
-               public void UpdateInput(NyARTrackerSource_Reference o_input) throws NyARException\r
-               {\r
-               Graphics s=_src_image.getGraphics();\r
-               s.setColor(Color.white);\r
-               s.fillRect(0,0,320,240);\r
-               s.setColor(Color.black);\r
-               //s.fillRect(x, y,50,50);\r
-               s.fillRect(x2, y2,50,50);\r
-               x+=sx;y+=sy;\r
-               if(x<0 || x>200){sx*=-1;}if(y<0 || y>200){sy*=-1;}\r
-               x2+=sx2;y2+=sy2;\r
-               if(x2<0 || x2>200){sx2*=-1;}if(y2<0 || y2>200){sy2*=-1;}\r
-               INyARRgbRaster ra =new NyARRgbRaster_RGB(320,240);\r
-               NyARRasterImageIO.copy(_src_image, ra);\r
-                       //GS値化\r
-                       NyARGrayscaleRaster gs=new NyARGrayscaleRaster(320,240);\r
-                       NyARRasterFilter_Rgb2Gs_RgbAve filter=new NyARRasterFilter_Rgb2Gs_RgbAve(ra.getBufferType());\r
-                       filter.doFilter(ra,gs);\r
-                       //samplerへ入力\r
-                       o_input.wrapBuffer(gs);\r
-                       \r
-               }\r
-       }\r
-\r
-       class LiveSource implements InputSource,JmfCaptureListener\r
-       {\r
-               public LiveSource(int W,int H) throws NyARException\r
-               {\r
-                       //キャプチャの準備\r
-                       JmfCaptureDeviceList devlist=new JmfCaptureDeviceList();\r
-                       this._capture=devlist.getDevice(0);\r
-                       //JmfNyARRaster_RGBはYUVよりもRGBで高速に動作します。\r
-                       if(!this._capture.setCaptureFormat(JmfCaptureDevice.PIXEL_FORMAT_RGB,W, H,30f)){\r
-                               if(!this._capture.setCaptureFormat(JmfCaptureDevice.PIXEL_FORMAT_YUV,W,H,30f)){\r
-                                       throw new NyARException("キャプチャフォーマットが見つかりません");\r
-                               }               \r
-                       }\r
-                       this._capture.setOnCapture(this);\r
-                       this._raster = new JmfNyARRaster_RGB(this._capture.getCaptureFormat());\r
-                       this._filter    = new NyARRasterFilter_Rgb2Gs_RgbAve(_raster.getBufferType());\r
-                       this._capture.start();\r
-                       _bi=new NyARGrayscaleRaster(W, H);\r
-                       return;\r
-                       \r
-               }\r
-               public void UpdateInput(NyARTrackerSource_Reference o_input) throws NyARException\r
-               {\r
-                       synchronized(this._raster){\r
-                               this._filter.doFilter(this._raster,this._bi);\r
-                       }\r
-                       o_input.wrapBuffer(this._bi);\r
-               }\r
-               private JmfCaptureDevice _capture;\r
-               private JmfNyARRaster_RGB _raster;\r
-               private NyARGrayscaleRaster _bi;\r
-               private NyARRasterFilter_Rgb2Gs_RgbAve _filter;\r
-               \r
-               public void onUpdateBuffer(javax.media.Buffer i_buffer)\r
-               {\r
-                       try {\r
-                               //キャプチャしたバッファをラスタにセット\r
-                               synchronized(this._raster){\r
-                                       this._raster.setBuffer(i_buffer);\r
-                               }\r
-                               //キャプチャしたイメージを表示用に加工\r
-                       }catch(Exception e)\r
-                       {\r
-                               e.printStackTrace();\r
-                       }\r
-\r
-               }\r
-\r
-               private void startCapture()\r
-               {\r
-                       try {\r
-                               this._capture.start();\r
-                       } catch (Exception e) {\r
-                               e.printStackTrace();\r
-                       }\r
-               }\r
-       }\r
-       \r
-       NyARTrackerSource_Reference tracksource;\r
-       \r
-       NyARTracker tracker;\r
-       \r
-       private final static String SAMPLE_FILES = "../Data/320x240ABGR.png";\r
-\r
-       private static final long serialVersionUID = -2110888320986446576L;\r
-\r
-\r
-       private int W = 320;\r
-       private int H = 240;\r
-       InputSource _input_source;\r
-       public Test_TrackTerget(NyARCameraDistortionFactor p) throws NyARException, Exception\r
-       {\r
-               setTitle("Reality Platform test");\r
-               Insets ins = this.getInsets();\r
-               this.setSize(1024 + ins.left + ins.right, 768 + ins.top + ins.bottom);\r
-               \r
-//     this._input_source=new ImageSource(SAMPLE_FILES);\r
-//             this._input_source=new MoveSource();\r
-               this._input_source=new LiveSource(W,H);\r
-               //create sampler\r
-               this.tracksource=new NyARTrackerSource_Reference(100,p,W, H, 2,false);\r
-               _tmp_bf=new BufferedImage(W, H,BufferedImage.TYPE_INT_RGB);\r
-               \r
-               //create tracker\r
-               this.tracker=new NyARTracker(10,1,10);\r
-\r
-               return;\r
-       }\r
-\r
-\r
-\r
-       \r
-       \r
-       public void draw(INyARRgbRaster i_raster)\r
-       {\r
-               \r
-       }\r
-       static long tick;\r
-    public void update()\r
-    {\r
-               try {\r
-                       // マーカーを検出\r
-                       long s=System.currentTimeMillis();\r
-                       for (int i = 0; i < 1; i++) {\r
-                               //tracker更新\r
-                               this._input_source.UpdateInput(this.tracksource);\r
-                               this.tracker.progress(this.tracksource);\r
-                       }\r
-                       System.out.println(System.currentTimeMillis() -s);\r
-\r
-                       Thread.sleep(30);\r
-                       \r
-                       //tracker更新\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-    }\r
-    BufferedImage _tmp_bf;\r
-    private void draw(Graphics ig) throws NyARException\r
-    {\r
-       //ウインドウの情報\r
-               Insets ins = this.getInsets();\r
-\r
-       //ワーク画面\r
-       BufferedImage bmp=this._tmp_bf;\r
-       NyARRasterImageIO.copy(this.tracksource.refBaseRaster(),bmp);\r
-       //Ignore,Coord,New\r
-       for(int i=this.tracker._targets.getLength()-1;i>=0;i--){\r
-               switch(this.tracker._targets.getItem(i)._st_type)\r
-               {\r
-               case NyARTargetStatus.ST_CONTURE:\r
-               drawContourTarget(this.tracker._targets.getItem(i),bmp,Color.blue);\r
-                       break;\r
-               case NyARTargetStatus.ST_IGNORE:\r
-               drawIgnoreTarget(this.tracker._targets.getItem(i),bmp,Color.red);\r
-                       break;\r
-               case NyARTargetStatus.ST_NEW:\r
-               drawNewTarget(this.tracker._targets.getItem(i),bmp,Color.green);\r
-                       break;\r
-               case NyARTargetStatus.ST_RECT:\r
-                       drawRectTarget(this.tracker._targets.getItem(i),bmp,Color.cyan);\r
-                       break;\r
-               }\r
-       }\r
-       //表示\r
-       ig.drawImage(bmp,ins.left,ins.top,null);\r
-       drawImage(ig,ins.left+640,ins.top,this.tracksource.refEdgeRaster());\r
-    }\r
-    private void drawImage(Graphics g,int x,int y,NyARGrayscaleRaster r) throws NyARException\r
-    {\r
-        BufferedImage _tmp_bf=new BufferedImage(r.getWidth(),r.getHeight(),BufferedImage.TYPE_INT_RGB);\r
-       NyARRasterImageIO.copy(r, _tmp_bf);\r
-       g.drawImage(_tmp_bf, x,y, null);\r
-    }\r
-    //\r
-    //描画関数\r
-    //\r
-    /**\r
-     * RectTargetを表示します。\r
-     */\r
-    private void drawRectTarget(NyARTarget t,BufferedImage sink,Color c)\r
-    {\r
-       //サンプリング結果の表示\r
-       Graphics g=sink.getGraphics();\r
-               g.setColor(c);\r
-                       NyARRectTargetStatus s=(NyARRectTargetStatus)t._ref_status;\r
-                       g.drawString("RT:"+t._serial+"("+s.detect_type+")"+"-"+t._delay_tick,t._sample_area.x,t._sample_area.y);\r
-                       g.drawRect((int)s.vertex[0].x-1,(int)s.vertex[0].y-1,2,2);\r
-                       for(int i2=0;i2<4;i2++){\r
-//                             g.fillRect((int)st.vecpos[i2].x-1, (int)st.vecpos[i2].y-1,2,2);\r
-                               g.drawLine(\r
-                                       (int)s.vertex[i2].x,\r
-                                       (int)s.vertex[i2].y,\r
-                                       (int)s.vertex[(i2+1)%4].x,\r
-                                       (int)s.vertex[(i2+1)%4].y);\r
-                       }/*\r
-                       g.setColor(Color.pink);\r
-                       for(int i2=0;i2<4;i2++){\r
-                               g.drawLine(\r
-                                               (int)s.estimate_vertex[i2].x,\r
-                                               (int)s.estimate_vertex[i2].y,\r
-                                               (int)s.estimate_vertex[(i2+1)%4].x,\r
-                                               (int)s.estimate_vertex[(i2+1)%4].y);\r
-                               }*/\r
-    }\r
-\r
-    /**\r
-     * ContourTargetを表示します。\r
-     */\r
-    private void drawContourTarget(NyARTarget t,BufferedImage sink,Color c)\r
-    {\r
-       //サンプリング結果の表示\r
-       Graphics g=sink.getGraphics();\r
-       g.setColor(c);\r
-               g.drawString("CT",t._sample_area.x,t._sample_area.y);\r
-//             g.drawRect(t._sample_area.x,t._sample_area.y,t._sample_area.w,t._sample_area.h);\r
-               NyARContourTargetStatus st=(NyARContourTargetStatus)t._ref_status;\r
-               VecLinearCoordinatesOperator vp=new VecLinearCoordinatesOperator();\r
-               vp.margeResembleCoords(st.vecpos);\r
-               for(int i2=0;i2<st.vecpos.length;i2++){\r
-//             for(int i2=43;i2<44;i2++){\r
-//                     g.drawString(i2+":"+"-"+t._delay_tick,(int)st.vecpos.items[i2].x-1, (int)st.vecpos.items[i2].y-1);\r
-                       g.fillRect((int)st.vecpos.items[i2].x, (int)st.vecpos.items[i2].y,1,1);\r
-                       double co,si;\r
-                       co=st.vecpos.items[i2].dx;\r
-                       si=st.vecpos.items[i2].dy;\r
-                       double p=Math.sqrt(co*co+si*si);\r
-                       co/=p;\r
-                       si/=p;\r
-                       double ss=st.vecpos.items[i2].scalar*3;\r
-                       g.drawLine(\r
-                               (int)st.vecpos.items[i2].x,\r
-                               (int)st.vecpos.items[i2].y,\r
-                               (int)(co*ss)+(int)st.vecpos.items[i2].x,(int)(si*ss)+(int)st.vecpos.items[i2].y);\r
-                       int xx=(int)st.vecpos.items[i2].x;\r
-                       int yy=(int)st.vecpos.items[i2].y;\r
-//                     g.drawRect(xx/8*8,yy/8*8,16,16);\r
-                       \r
-               }\r
-    }\r
-    \r
-    /**\r
-     * IgnoreTargetを表示します。\r
-     */\r
-    private void drawIgnoreTarget(NyARTarget t,BufferedImage sink,Color c)\r
-    {\r
-       //サンプリング結果の表示\r
-       Graphics g=sink.getGraphics();\r
-       g.setColor(c);\r
-               g.drawString("IG"+"-"+t._delay_tick,t._sample_area.x,t._sample_area.y);\r
-               g.drawRect(t._sample_area.x,t._sample_area.y,t._sample_area.w,t._sample_area.h);\r
-    }\r
-        \r
-    /**\r
-     * Newtargetを表示します。\r
-     */\r
-    private void drawNewTarget(NyARTarget t,BufferedImage sink,Color c)\r
-    {\r
-       //サンプリング結果の表示\r
-       Graphics g=sink.getGraphics();\r
-       g.setColor(c);\r
-               g.drawString("NW"+"-"+t._delay_tick,t._sample_area.x,t._sample_area.y);\r
-               g.drawRect(t._sample_area.x,t._sample_area.y,t._sample_area.w,t._sample_area.h);\r
-    }\r
-    \r
-\r
-    \r
-    \r
-\r
-\r
-    public void mainloop() throws Exception\r
-    {\r
-       for(;;){\r
-               //処理\r
-               this.update();\r
-                       this.draw(this.getGraphics());\r
-               Thread.sleep(30);\r
-       }\r
-    }\r
-\r
-       public static void main(String[] args)\r
-       {\r
-\r
-               try {\r
-                       Test_TrackTerget mainwin = new Test_TrackTerget(null);\r
-                       mainwin.setVisible(true);\r
-                       mainwin.mainloop();\r
-                       // mainwin.startImage();\r
-               } catch (Exception e) {\r
-                       e.printStackTrace();\r
-               }\r
-       }\r
-}\r