NyARToolkitCS and for Unity 4.0.2 released

NyARToolkitCS と、for Unity のバージョン4.0.2をリリースします。

NyARToolkitCS については、機能に影響しない修正(virtual付け忘れ)の修正のみです。機能面では、4.0.1と変わりません。
http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=7672

NyARToolkitUnityについては、NyARToolkitCS/4.0.2の修正と、1個の関数(mat2UnityVecRot)追加があります。この関数は、4×4の位置姿勢行列と、UnityのRotation/Vectorの変換を行うものです。

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=12917

NyARToolkit version 4.0.1 Java/C#/Unity Released

NyARToolkit/4.0.1をリリースしました。Java/C#/Unityの同時リリースです。

NyARToolkit for Java

  • MarkerSystemのバグ修正(IdマーカのトラッキングがOFFになっていた問題)
  • 画像タイプにBYTE1D_X8B8G8R8_32を追加
  • NyARGlRender#drawImageをdrawImage2dに変更
  • NyARGlmarkerSystem#getGlMarkerMatrixをgetMarkerMatrixへ変更
  • NyARGlmarkerSystem#getGlMarkerMatrix(int i_id,double[] i_buf)のパラメタを変更
  • NyARGlmarkerSystem#getMarkerPlaneImageの戻り値を変更
  • NyARBufferedImageRasterがB8G8R8X8フォーマットの画像を正しく処理しない不具合を修正。

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=7512

NyARToolkit for C#

  • Javaに適応した問題の修正

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=7672

NyARToolkit for Unity

  • NyARToolkit/4.0.1のAPIに対応。
  • サンプルシーン4種を追加。
  • Texture2Dとの画像の相互変換に対応。
  • UnityMarkerSystemクラスを強化。
  • 座標系をX軸で180度回転しました。

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=12917

English

NyARToolkit/4.0.1 for Java/C#/Unity were released.

NyARToolkit for Java

Fixed some bugs.

  • Updated tracking parametor
  • Fixed a bug of MarkerSystemClass (NyIdMarker did not effect tracking.)
  • Added a new image format BYTE1D_X8B8G8R8_32.
  • Rename NyARGlRender#drawImage to drawImage2d.
  • Rename NyARGlmarkerSystem#getGlMarkerMatrix to getMarkerMatrix
  • Changed parametor of NyARGlmarkerSystem#getGlMarkerMatrix(int i_id,double[] i_buf).
  • Changed the return type of NyARGlmarkerSystem#getMarkerPlaneImage.
  • Fixed a bug of NyARBufferedImageRaster on B8G8R8X8 format.

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=7512

NyARToolkit for C#

  • Update for NyARToolkit/4.0.1 APIs.

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=7672

NyARToolkit for Unity

  • Update NyARToolkit/4.0.1 API
  • Added 4 sample seane.
  • Increased Texture2D compatibility.
  • Updated UnityMarkerSystm class.
  • Rotated Z axis around X axis 180 degrees.

http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=12917

NyARToolkitCS/4.0.0 released

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();
        }
    }
}

NyARToolKitのWindows7対応について

NyARToolkit/2.4系の、Windows7上での動作チェックが完了しました。
64bit版、32bit版ともに、問題なく動作します。

NyARToolkit for Java/2.4

NyARToolkit本体については問題なく動作しますが、JMFでのカメラ登録方法に問題があります。下記記事を参考に、カメラをJMFに登録してください。
http://sourceforge.jp/forum/message.php?msg_id=47372

NyARToolkitCS/2.4

カメラ制御部も含め、問題なく動作します。

NyARToolkitCPP/2.4

問題なく動作します。

ClickOnceでワンクリックAR

MicrosoftさんのWPFを弄り回して遊んでるときに、ClickOnceという技術があることを知りました。
http://msdn.microsoft.com/ja-jp/library/ms996413.aspx

この技術は、要するにブラウザ経由で簡単インストールが出来るという代物なのですが、どうやら完全なマネージドコードでないと完全に対応でき無いらしい。

NyARToolKitCSは100%マネージドコードなので、いけるんじゃないかなーといじっていたところ、あっさり出来ました。

使い方

Hiroマーカを印刷してから、PCにWebカメラを接続して、下記のURLをクリックしてください。ClickOnce経由でデモアプリケーションが起動します。

http://nyatla.jp/nyartoolkit/clickonce/singlemarker/SingleMarkerDirect3d.application

アプリケーションが起動したら、カメラを選択してOKボタンを押してください。キャプチャ画像が出てきます。

カメラでマーカを撮影すると、簡単な3Dモデルがくるくると回ります。

うまく動かないときは、.NetFramework3.5とDirectXをインストールして、もう一度チャレンジしてみてください。

これの凄いところは、ManagedDirect3Dがそのまま開発に使えてしまうこと。もう一つは、URLパラメータを受けられること。Webブラウザから安全にARアプリを起動して、webサイト毎にネットワークからコンテンツをダウンロードするような使い方が出来るわけ。

欠点は、WindowsXP、Vista、7以外では動かない…ことかな。それと、開発環境がちょいとお高い。(StandardEdition以上のVisualStadioが要るらしい。)

Flashよりも重たいアプリケーションが組めるので、何か面白い企画を思いついたら教えてくださいね。

ちなみに、ソースコードはNyARToolkitのサンプルほぼそのままで、プロジェクトファイルを少々いじった程度です。一応GPLv3なので、リクエストをいただければ公開します。