NyARToolkitCS/4.0.0をリリースします。
更新内容
更新内容は以下の通りです。
- NyARToolkit/4.0.0に搭載したMarkerSystemが利用できるようになりました。
- Processingライクな簡易スケッチシステム追加しました。
- ユーティリティクラスのAPIを更新しました。C#のBitmapクラスとの互換性が向上しています。影響により、一部のユーティリティAPIの互換性がなくなっています。アプリケーションの修正して、代替APIを利用してください。
- WindowsMobileをサポートしなくなりました。(要望があれば復活します。)
ダウンロード
こちらからダウンロードしてください。
http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=7672
Unityバージョンについては、NyARToolkitUnityパッケージを別途作ります。しばらくお待ちください。
サンプル
新しいMarkerSystemとスケッチシステムを使ったSimpleLiteは、従来と比較してシンプルに実装できます。
using System; using System.Drawing; using System.Collections.Generic; using System.Text; using jp.nyatla.nyartoolkit.cs.core; using jp.nyatla.nyartoolkit.cs.markersystem; using NyARToolkitCSUtils; using NyARToolkitCSUtils.Direct3d; using NyARToolkitCSUtils.Capture; using Microsoft.DirectX; using Microsoft.DirectX.Direct3D; namespace SimpleLite { class Sketch : D3dSketch { private const int SCREEN_WIDTH = 640; private const int SCREEN_HEIGHT = 480; private const String AR_CODE_FILE = "../../../../../data/patt.hiro"; private NyARD3dMarkerSystem _ms; private NyARDirectShowCamera _ss; private NyARD3dRender _rs; private int mid; public override void setup(CaptureDevice i_cap) { Device d3d=this.size(SCREEN_WIDTH, SCREEN_HEIGHT); i_cap.PrepareCapture(SCREEN_WIDTH, SCREEN_HEIGHT, 30.0f); INyARMarkerSystemConfig cf = new NyARMarkerSystemConfig(SCREEN_WIDTH, SCREEN_HEIGHT); d3d.RenderState.ZBufferEnable = true; d3d.RenderState.Lighting = false; d3d.RenderState.CullMode = Cull.CounterClockwise; this._ms = new NyARD3dMarkerSystem(cf); this._ss = new NyARDirectShowCamera(i_cap); this._rs = new NyARD3dRender(d3d, this._ms); this.mid = this._ms.addARMarker(AR_CODE_FILE, 16, 25, 80); //set View mmatrix this._rs.loadARViewMatrix(d3d); //set Viewport matrix this._rs.loadARViewPort(d3d); //setD3dProjectionMatrix this._rs.loadARProjectionMatrix(d3d); this._ss.start(); } public override void loop(Device i_d3d) { lock (this._ss) { this._ms.update(this._ss); this._rs.drawBackground(i_d3d, this._ss.getSourceImage()); i_d3d.BeginScene(); i_d3d.Clear(ClearFlags.ZBuffer, Color.DarkBlue, 1.0f, 0); if (this._ms.isExistMarker(this.mid)) { //立方体を20mm上(マーカーの上)にずらしておく Matrix transform_mat2 = Matrix.Translation(0, 0, 20.0f); //変換行列を掛ける transform_mat2 *= this._ms.getD3dMarkerMatrix(this.mid); // 計算したマトリックスで座標変換 i_d3d.SetTransform(TransformType.World, transform_mat2); // レンダリング(描画) this._rs.colorCube(i_d3d,40); } i_d3d.EndScene(); } i_d3d.Present(); } public override void cleanup() { this._rs.Dispose(); } static void Main(string[] args) { new Sketch(); } } }