From 92cfd387abbe5f20b2fd2bfcf7436492f1b8dd72 Mon Sep 17 00:00:00 2001 From: nyatla Date: Sat, 7 Jun 2008 02:02:45 +0000 Subject: [PATCH] =?utf8?q?[=E3=83=AA=E3=83=AA=E3=83=BC=E3=82=B9]NyARToolki?= =?utf8?q?t=200.8?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- readme.ja.txt | 71 +++++++---- .../nyartoolkit/jmf/sample}/JmfCaptureTest.java | 8 +- .../jmf/sample}/NyarToolkitLinkTest.java | 10 +- .../jmf/{ => utils}/JmfCameraCapture.java | 4 +- .../jmf/{ => utils}/JmfCaptureListener.java | 4 +- .../{jmfutil => jmf/utils}/JmfNyARRaster_RGB.java | 37 +++--- .../nyartoolkit/jmf/{ => utils}/MonitorCDS.java | 2 +- .../nyartoolkit/jmf/{ => utils}/MonitorStream.java | 2 +- .../nyatla/nyartoolkit/gutil/GLNyARRaster_RGB.java | 138 --------------------- .../nyartoolkit/jogl/sample}/JavaSimpleLite.java | 35 +++--- .../{gutil => jogl/utils}/GLNyARParam.java | 4 +- .../nyartoolkit/jogl/utils/GLNyARRaster_RGB.java | 76 ++++++++++++ .../utils}/GLNyARSingleDetectMarker.java | 4 +- .../nyatla/nyartoolkit/jogl/utils/NyARGLUtil.java | 99 +++++++++++++++ src/jp/nyatla/nyartoolkit/core/NyARCode.java | 20 ++- src/jp/nyatla/nyartoolkit/core/NyARParam.java | 29 +++-- .../nyartoolkit/core/match/NyARMatchPatt.java | 2 +- .../core/match/NyARMatchPatt_BlackWhite.java | 5 +- .../match/NyARMatchPatt_Color_WITHOUT_PCA.java | 7 +- .../core/match/NyARMatchPatt_Color_WITH_PCA.java | 7 +- .../detector/NyARSingleDetectMarker.java | 5 +- 21 files changed, 337 insertions(+), 232 deletions(-) rename sample/jmf/{ => jp/nyatla/nyartoolkit/jmf/sample}/JmfCaptureTest.java (91%) rename sample/jmf/{ => jp/nyatla/nyartoolkit/jmf/sample}/NyarToolkitLinkTest.java (95%) rename sample/jmf/jp/nyatla/nyartoolkit/jmf/{ => utils}/JmfCameraCapture.java (94%) rename sample/jmf/jp/nyatla/nyartoolkit/jmf/{ => utils}/JmfCaptureListener.java (72%) rename sample/jmf/jp/nyatla/nyartoolkit/{jmfutil => jmf/utils}/JmfNyARRaster_RGB.java (79%) rename sample/jmf/jp/nyatla/nyartoolkit/jmf/{ => utils}/MonitorCDS.java (98%) rename sample/jmf/jp/nyatla/nyartoolkit/jmf/{ => utils}/MonitorStream.java (99%) delete mode 100644 sample/jogl/jp/nyatla/nyartoolkit/gutil/GLNyARRaster_RGB.java rename sample/jogl/{ => jp/nyatla/nyartoolkit/jogl/sample}/JavaSimpleLite.java (85%) rename sample/jogl/jp/nyatla/nyartoolkit/{gutil => jogl/utils}/GLNyARParam.java (95%) create mode 100644 sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/GLNyARRaster_RGB.java rename sample/jogl/jp/nyatla/nyartoolkit/{gutil => jogl/utils}/GLNyARSingleDetectMarker.java (93%) create mode 100644 sample/jogl/jp/nyatla/nyartoolkit/jogl/utils/NyARGLUtil.java diff --git a/readme.ja.txt b/readme.ja.txt index d2ed0f1..601f2eb 100644 --- a/readme.ja.txt +++ b/readme.ja.txt @@ -1,7 +1,7 @@ ARToolkit Java class library NyARToolkit. Copyright (C)2008 R.Iizuka -version Alpha 0.7.20080406.0 +version Alpha 0.8.20080412.0 http://nyatla.jp/ airmail(at)ebony.plala.or.jp @@ -28,21 +28,21 @@ http://www.hitl.washington.edu/artoolkit/ -・基本構成 +・構成 -+-----------------------------+ -| Application | -+-------+-------+-------------+ -|NyARJMF| NyARJogl| | -+-------+---------+ | -| JMF | JOGL |NyARToolkit| -+-------+---------+ | -|Camera | 3D | | -------------------------------+ ++-------------------------------------------+ +| Application | ++-------+---------+-------+-----------------+ +|NyARJMF| NyARJogl|NyARJ3d| | ++-------+---------+-------+ | +| JMF | JOGL |Java3D |Java3DNyARToolkit| ++-------+---------+-------+ | +|Camera | 3D | | +--------------------------------------------+ -映像キャプチャにはJMFを使用し、3D描画にはJoglを使用しています。 -NyARJMFとNyJoglは、これらのエクステンションをApplicationやNyARToolKit -から使いやすくするためのラッパーです。 +映像キャプチャにはJMFを使用し、3D描画にはJOGL又はJava3Dを使用しています。 +NyARJMFとNyJogl,NyJ3dは、これらのエクステンションをApplicationや +NyARToolKitから使いやすくするためのラッパーです。 これらとNyARToolkitは完全に分離していますので、入力・出力ともに容易に 差し替えが出来ると思います。 @@ -52,34 +52,57 @@ NyARJMFとNyJoglは、これらのエクステンションをApplicationやNyART ・サンプルなど -動作させる前に、JMFとJOGLをインストールしてください。 +動作させる前に、JMFとJOGLかJava3Dをインストールしてください。 動作確認したバージョンと入手先はこちらです。 JMF JavaTM Media Framework 2.1.1e http://java.sun.com/products/java-media/jmf/index.jsp -jogl-1.1.1-pre-20080328-windows-i586.zip +jogl-1.1.1-pre-20080328-xxxx-i586.zip https://jogl.dev.java.net/ +java3d-1_5_1-xxxx-i586.exe +https://java3d.dev.java.net/binary-builds.html + + サンプルは以下のディレクトリにあります。 ./src -NyARToolkitのEclipseプロジェクトがあります。 -jp.nyatla.nyartoolkit.sampleパッケージに、Rawイメージから -変換行列を求めるサンプルがあります。 + NyARToolkitのEclipseプロジェクトがあります。 + jp.nyatla.nyartoolkit.sampleパッケージに、Rawイメージから + 変換行列を求めるサンプルがあります。 ./sample NyARToolkitのアプリケーションサンプルEclipseプロジェクトがあります。 -NyARJMFにはビデオキャプチャの試験プログラムと、マーカー検出プログラムがあります。 -NyARJOGLにはARToolkitのsimpleLite相当のサンプルがあります。 -NyARJMFのプロジェクトはNyARToolKitに依存し、NyARJOGLのプロジェクトはNyARToolKit -とNyARJMFに依存しています。 + jmf + jp.nyatla.nyartoolkit.jmf.sample + ビデオキャプチャの試験プログラム と、マーカー検出プログラムがあります。 + + jogl + jp.nyatla.nyartoolkit.jogl.sample + ARToolkitのsimpleLite相当のサンプルがあります。 + + java3d + jp.nyatla.nyartoolkit.java3d.sample + simpleLiteのようなものをJava3Dで動かすサンプルがあります。 + + +NyARJMFのプロジェクトはNyARToolKitに依存し、NyARJOGLとJava3Dのプロジェクトは +NyARToolKitとNyARJMFに依存しています。 zipを展開すると多分参照関係が壊れてますので、再設定してください。 +・サンプル内のパッケージ注意点 +sampleディレクトリ以下にあるソースはAPIは仕様が固まっていないので、 +時々APIそのものを変更しています。 + +自前のプロジェクトの部品として使われる場合は、パッケージをコピーして +使用することをお勧めします。 + + ・NyARToolkitとオリジナルの差分 @@ -117,4 +140,4 @@ NyARToolkitを使って面白いものが出来たら、是非教えてくださ ではでは、楽しく遊んでくださいネ。 -2008.03.29 R.Iizuka nyatla.jp +2008.03.29 R.Iizuka A虎@nyatla.jp diff --git a/sample/jmf/JmfCaptureTest.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/JmfCaptureTest.java similarity index 91% rename from sample/jmf/JmfCaptureTest.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/JmfCaptureTest.java index c353e4b..2cb6206 100644 --- a/sample/jmf/JmfCaptureTest.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/JmfCaptureTest.java @@ -1,16 +1,18 @@ /** * VFMキャプチャテストプログラム - * (c)2008 R.iizuka + * (c)2008 A虎@nyatla.jp * airmail@ebony.plala.or.jp * http://nyatla.jp/ */ +package jp.nyatla.nyartoolkit.jmf.sample; + import javax.media.*; import javax.media.util.BufferToImage; import javax.media.format.*; - import jp.nyatla.nyartoolkit.NyARException; -import jp.nyatla.nyartoolkit.jmf.*; +import jp.nyatla.nyartoolkit.jmf.utils.*; + import java.awt.*; diff --git a/sample/jmf/NyarToolkitLinkTest.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java similarity index 95% rename from sample/jmf/NyarToolkitLinkTest.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java index ae7fc1c..e87b993 100644 --- a/sample/jmf/NyarToolkitLinkTest.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/sample/NyarToolkitLinkTest.java @@ -1,23 +1,25 @@ /** * VFM+ARToolkitテストプログラム * カメラから取り込んだデータからマーカーを検出して、一致度と変換行列を表示します。 - * (c)2008 R.iizuka + * (c)2008 A虎@nyatla.jp * airmail(at)ebony.plala.or.jp * http://nyatla.jp/ */ +package jp.nyatla.nyartoolkit.jmf.sample; + import javax.media.*; import javax.media.util.BufferToImage; import javax.media.format.*; import jp.nyatla.nyartoolkit.NyARException; -import jp.nyatla.nyartoolkit.jmf.*; -import jp.nyatla.nyartoolkit.jmfutil.*; +import jp.nyatla.nyartoolkit.jmf.utils.*; + import java.awt.*; import jp.nyatla.nyartoolkit.core.*; import jp.nyatla.nyartoolkit.detector.*; -import jp.nyatla.nyartoolkit.core.raster.*; + diff --git a/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCameraCapture.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java similarity index 94% rename from sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCameraCapture.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java index d3c8418..f53213b 100644 --- a/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCameraCapture.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCameraCapture.java @@ -1,10 +1,10 @@ /** * JMFお手軽キャプチャクラス - * (c)2008 R.Iizuka + * (c)2008 A虎@nyatla.jp * airmail@ebony.plala.or.jp * http://nyatla.jp/ */ -package jp.nyatla.nyartoolkit.jmf; +package jp.nyatla.nyartoolkit.jmf.utils; diff --git a/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCaptureListener.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCaptureListener.java similarity index 72% rename from sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCaptureListener.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCaptureListener.java index 1998f6b..64f1392 100644 --- a/sample/jmf/jp/nyatla/nyartoolkit/jmf/JmfCaptureListener.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfCaptureListener.java @@ -1,10 +1,10 @@ /** * JMFお手軽キャプチャ用リスナ - * (c)2008 R.Iizuka + * (c)2008 A虎@nyatla.jp * airmail@ebony.plala.or.jp * http://nyatla.jp/ */ -package jp.nyatla.nyartoolkit.jmf; +package jp.nyatla.nyartoolkit.jmf.utils; import javax.media.Buffer; diff --git a/sample/jmf/jp/nyatla/nyartoolkit/jmfutil/JmfNyARRaster_RGB.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java similarity index 79% rename from sample/jmf/jp/nyatla/nyartoolkit/jmfutil/JmfNyARRaster_RGB.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java index 0a5b134..d36ebfa 100644 --- a/sample/jmf/jp/nyatla/nyartoolkit/jmfutil/JmfNyARRaster_RGB.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/JmfNyARRaster_RGB.java @@ -1,11 +1,11 @@ /** * RGB形式のJMFバッファをラップするNyARRasterです。 - * 複数のピクセルの並び順に対応してます。 - * (c)2008 R.iizuka + * JMFから得たラスタデータのピクセル並び順を考慮します。 + * (c)2008 A虎@nyatla.jp * airmail(at)ebony.plala.or.jp * http://nyatla.jp/ */ -package jp.nyatla.nyartoolkit.jmfutil; +package jp.nyatla.nyartoolkit.jmf.utils; import javax.media.format.RGBFormat; @@ -38,26 +38,22 @@ public class JmfNyARRaster_RGB implements NyARRaster height=i_height; } /** - * javax.media.Bufferを分析して、その分析結果をNyARRasterに適合する形で保持します。 - * 関数実行後に外部でi_bufferの内容変更した場合には、再度setBuffer関数を呼び出してください。 + * フォーマットを解析して、インスタンスのフォーマットプロパティを初期化します。 + * * @param i_buffer - * RGB形式のデータを格納したjavax.media.Bufferオブジェクトを指定してください。 - * @return - * i_bufferをラップしたオブジェクトを返します。 * @throws NyARException */ - public void setBuffer(javax.media.Buffer i_buffer) throws NyARException + protected void initFormatProperty(RGBFormat i_fmt) throws NyARException { - RGBFormat fmt=(RGBFormat)i_buffer.getFormat(); //データサイズの確認 - Dimension s=fmt.getSize(); + Dimension s=i_fmt.getSize(); if(width!=s.width || height !=s.height){ throw new NyARException(); } //データ配列の確認 - red_idx =fmt.getRedMask()-1; - green_idx=fmt.getGreenMask()-1; - blue_idx =fmt.getBlueMask()-1; + red_idx =i_fmt.getRedMask()-1; + green_idx=i_fmt.getGreenMask()-1; + blue_idx =i_fmt.getBlueMask()-1; //色配列の特定 if(red_idx==0 && blue_idx==2){ @@ -67,6 +63,19 @@ public class JmfNyARRaster_RGB implements NyARRaster }else{ throw new NyARException("Unknown pixel order."); } + } + /** + * javax.media.Bufferを分析して、その分析結果をNyARRasterに適合する形で保持します。 + * 関数実行後に外部でi_bufferの内容変更した場合には、再度setBuffer関数を呼び出してください。 + * @param i_buffer + * RGB形式のデータを格納したjavax.media.Bufferオブジェクトを指定してください。 + * @return + * i_bufferをラップしたオブジェクトを返します。 + * @throws NyARException + */ + public void setBuffer(javax.media.Buffer i_buffer) throws NyARException + { + initFormatProperty((RGBFormat)i_buffer.getFormat()); ref_buf=(byte[])i_buffer.getData(); } public int getPixelTotal(int i_x,int i_y) diff --git a/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorCDS.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorCDS.java similarity index 98% rename from sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorCDS.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorCDS.java index 9e86106..8a05e37 100644 --- a/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorCDS.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorCDS.java @@ -25,7 +25,7 @@ * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */ -package jp.nyatla.nyartoolkit.jmf; +package jp.nyatla.nyartoolkit.jmf.utils; import javax.media.*; diff --git a/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorStream.java b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorStream.java similarity index 99% rename from sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorStream.java rename to sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorStream.java index bfbd2b3..28d6b86 100644 --- a/sample/jmf/jp/nyatla/nyartoolkit/jmf/MonitorStream.java +++ b/sample/jmf/jp/nyatla/nyartoolkit/jmf/utils/MonitorStream.java @@ -25,7 +25,7 @@ * facility. Licensee represents and warrants that it will not use or * redistribute the Software for such purposes. */ -package jp.nyatla.nyartoolkit.jmf; +package jp.nyatla.nyartoolkit.jmf.utils; diff --git a/sample/jogl/jp/nyatla/nyartoolkit/gutil/GLNyARRaster_RGB.java b/sample/jogl/jp/nyatla/nyartoolkit/gutil/GLNyARRaster_RGB.java deleted file mode 100644 index 2763214..0000000 --- a/sample/jogl/jp/nyatla/nyartoolkit/gutil/GLNyARRaster_RGB.java +++ /dev/null @@ -1,138 +0,0 @@ -/** - * NyARRaster_RGBにOpenGL向け関数を追加したものです。 - * - * (c)2008 R.iizuka - * airmail(at)ebony.plala.or.jp - * http://nyatla.jp/ - */ -package jp.nyatla.nyartoolkit.gutil; - -import java.nio.ByteBuffer; -import java.nio.IntBuffer; - -import javax.media.opengl.GL; -import javax.media.opengl.glu.GLU; - -import jp.nyatla.nyartoolkit.NyARException; -import jp.nyatla.nyartoolkit.core.NyARParam; -import jp.nyatla.nyartoolkit.jmfutil.*; - -public class GLNyARRaster_RGB extends JmfNyARRaster_RGB -{ - private NyARParam cparam; - private GL ref_gl; - private GLU glu; - private byte[] gl_buf; - private int gl_flag; - - public GLNyARRaster_RGB(GL i_ref_gl,NyARParam i_cparam) - { - super(i_cparam.getX(),i_cparam.getY()); - gl_flag=GL.GL_RGB; - cparam=i_cparam; - ref_gl=i_ref_gl; - glu=new GLU(); - this.gl_buf=new byte[width*height*3]; - } - public void setBuffer(javax.media.Buffer i_buffer,boolean i_is_reverse) throws NyARException - { - super.setBuffer(i_buffer); - //メモ:この時点では、ref_dataにはi_bufferの参照値が入ってる。 - - //GL用のデータを準備 - if(i_is_reverse){ - int length=width*3; - int src_idx=0; - int dest_idx=(height-1)*length; - for(int i=0;i