NyARToolkit 5.0.0をリリースします。
https://github.com/nyatla/NyARToolkit
NyARToolkit 5.0.0では、ARToolKit5に搭載されている自然特徴点トラッキング(NFT)の機能が利用できるようになりました。
NyARToolKit5の開発には、DAQRI LLCから開発資金、及び技術提供をいただいています。DAQRI LLCと、ARToolKit開発チームに感謝いたします。
NFTトラッキングの起動方法
手っ取り早くNFTを体験する方法です。
- GitHubからNyARToolKitをチェックアウトしてください。
- EclipseにNyARToolkitのソースツリーをImportします。←で示したプロジェクトにエラーが出ないことを確認します。
- NFTのターゲットとなる画像を印刷します。印刷できない方は画像を画面に表示してください。
infinitycat.pdf - コンピュータにカメラを接続してください。
- NyARToolkit.sample.joglパッケージのNftSimpleLite.javaを実行してください。
- 起動には数秒間かかります。撮影画像が現れた後にカメラで画像を撮影すると、カラーキューブが現れます。
NFTプログラミング
NyARToollitのNFTプログラミングはシンプルです。
数十行の実装でアプリケーションを実装できます。
NftSimpleLite.javaがNFTアプリケーションの雛形です。このコードを改変することで、直ぐにオリジナルのアプリケーションを実装できます。
public class NftSimpleLite extends GlSketch { String nftdataset="d:\\infinitycat"; String cparam="../../Data/testcase/camera_para5.dat"; private Webcam camera; private NyARGlNftSystem nyar; private NyARGlRender render; private NyARSensor sensor; public void setup(GL gl)throws Exception { this.size(640,480); NyARNftSystemConfig config = new NyARNftSystemConfig(new FileInputStream(cparam),640,480); this.camera=Webcam.getDefault(); this.camera.setViewSize(new Dimension(640,480)); this.nyar=new NyARGlNftSystem(config); //create MarkerSystem this.render=new NyARGlRender(this.nyar); this.sensor=new NyARSensor(config.getScreenSize()); // this.id=this.nyar.addNftTarget(nftdataset,160); gl.glEnable(GL.GL_DEPTH_TEST); this.camera.open(); } private int id; public void draw(GL gl)throws Exception { synchronized(this.camera){ try { this.sensor.update(new NyARBufferedImageRaster(this.camera.getImage())); this.render.drawBackground(gl,this.sensor.getSourceImage()); this.render.loadARProjectionMatrix(gl); this.nyar.update(this.sensor); if(this.nyar.isExistTarget(this.id)){ this.nyar.loadTransformMatrix(gl,this.id); this.render.colorCube(gl,40,80,60,20); } Thread.sleep(1); } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { new NftSimpleLite().run(); return; } }
- トラッキングする画像を変えるには?
→nftdatasetのファイルパス名を変えます。NFTではiset ,fset, fset3の3種のファイルが同じ場所に置かれている必要があります。
たとえば”d:\\example”を指定すると、c:\\example.iset, c:\\example.fset, c:\\example.fset3のファイルセットがトラッキング画像として使われます。 - トラッキング画像のサイズを変えるには?
→addNftTarget関数の第二引数に、印刷した画像の横幅をmm単位で指定してください。 - トラッキング画像を作るには?
→NyARToolkit.utility.zipの中にあるNftFileGenerator.jarで画像ファイルからトラッキング画像を作ることができます。
https://github.com/nyatla/NyARToolkit/releasesからダウンロードしてください。
ARToolKit5との互換性について
NyARToolKitは、ARToolKit5のアルゴリズムを忠実に移植したものです。計算結果はARToolKitのそれとほぼ同一ですが、若干の差があります。
差の原因は、浮動小数点計算の精度差、一部の算術関数を展開したことによるものです。
NFTのターゲッ トファイル(iset,fset,fset3)やカメラパラメータファイルについては、ARToolKitと互換性があります。相互に使うことができます。