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

NyARToolkit4.0.0a for Unity3D

Unity 3.5から、Webカメラが手軽に使えるようになりましたね。せっかくなので、NyARToolkitCSをUnityに対応させました。正式なバージョンアップまでにはもう少し時間がかかるので、とりあえずα版をリリースします。

NyARToolkitCS for Unity3Dを使うことで、マーカベースARアプリケーションをシンプルなスクリプトで実装することができます。

特徴

  • NyARToolkit/4.0のMarkerSystemAPIを使うことができます。複数マーカ/Idマーカの同時複数使用ができます。
  • 他マーカベースライブラリと異なり、全てC#で実装してあります。WebcamTextureが実装されている全てのUnityプラットフォームで(多分)動作します。
  • ARToolKitV4Proとの統合が可能です。(予定)

ダウンロード

NyARToolkit for Unity3Dのαリリースパッケージをダウンロードしてください。
http://sourceforge.jp/projects/nyartoolkit/releases/?package_id=12917

Getting started

サンプルプログラムSimpleLiteを動かすまでの手順です。

  1. パッケージのダウンロード
    NyARToolkitCS for Unity/4.0.0aのパッケージをダウンロードして、適当なフォルダに展開してください。
  2. パッケージのインポート
    新しいプロジェクトを作って、パッケージをインポートします。
  3. simpleLiteのシーンを復元します。simpleLiteをダブルクリックしてください。現在のシーンをセーブするか聞いてくるので、無視します。
  4. シーンがロードされたら、Webカメラが接続されていることを確認して、Playボタンを押してください。
  5. Hiroマーカを撮影すると、赤い立方体が表示されます。

プログラムの解説

Unity3DでのNyARToolkitを使ったアプリケーションは、MarkerSystemクラスで実装します。

MarkerSystem クラスを使ったアプリケーションに最低限必要なオブジェクトは、1つのMainCamera、1つの背景Panel、マーカの姿勢を保持する Gameobjectです。実際には、Lightや、表示物(サンプルの場合にはCube)もあると良いので、それらのオブジェクトを配置します。

MainCameraと背景Panelのパラメータは、Start関数内でMarkerSystemが自動で設定します。初期値は適当で構いません。

マーカの姿勢行列と背景の更新は、MainCameraに割り当てたスクリプトをから行います。一定周期でWeCamTextureから状態を更新できれば、他の構成をとっても構いません。

using UnityEngine;
using System;
using System.Collections;
using jp.nyatla.nyartoolkit.cs.markersystem;
using jp.nyatla.nyartoolkit.cs.core;
using NyARUnityUtils;
using System.IO;

public class ARCameraBehaviour : MonoBehaviour
{
  private NyARUnityMarkerSystem _ms;
  private NyARUnityWebCam _ss;
  private int mid;//marker id
  private GameObject _bg_panel;
  void Awake()
  {
    NyARMarkerSystemConfig config = new NyARMarkerSystemConfig(320,240);
    this._ms=new NyARUnityMarkerSystem(config);
    mid=this._ms.addARMarker("./Assets/Data/patt.hiro",16,25,80);

    //setup unity webcam
    WebCamDevice[] devices= WebCamTexture.devices;
    WebCamTexture w;
    if (devices.Length > 0){
      w=new WebCamTexture(320, 240, 15);
      this._ss=new NyARUnityWebCam(w);
      //setup background
      this._bg_panel=GameObject.Find("Plane");
      this._bg_panel.renderer.material.mainTexture=w;
      this._ms.setARBackgroundTransform(this._bg_panel.transform);

      //setup camera projection
      this._ms.setARCameraProjection(this.camera);

    }else{
      Debug.LogError("No Webcam.");
    }
  }
  // Use this for initialization
  void Start ()
  {
    //start sensor
    this._ss.start();
  }
  // Update is called once per frame
  void Update ()
  {
    //Update SensourSystem
    this._ss.update();
    //Update marker system by ss
    this._ms.update(this._ss);
    //update Gameobject transform
    if(this._ms.isExistMarker(mid)){
      this._ms.setUnityMarkerTransform(mid,GameObject.Find("MarkerObject").transform);
    }else{
      // hide Game object
      GameObject.Find("MarkerObject").transform.localPosition=new Vector3(0,0,-100);
    }
  }

表示物はGameobject(サンプルではMarkerObject)の子として配置します。MarkerObjectはマーカ表面を(0,0,0)とする座標系ですので、表示物は表面から上方(Z軸)にずらします。

単位系については、mmになます。例えば4Cmの立方体の場合、サイズ40の立方体を定義します。

ライセンス

NyARToolkitCS/4.0.0a for Unity3DはGPLv3です。アプリケーションを公開する場合には、GPLv3であることの表示をお願いします。商用ライセンスについては検討中ですが、NyARToolkitCSのライセンスを購入することで、使用できるようにする予定です。

既知の不具合

  • PCプラットフォーム以外で動作チェックしていない。
  • Frustumパラメータが1箇適当
  • 320×240以外で起動したらUnityが落ちた。WebcamTextureの問題?
  • UnityTextureと互換性のある画像取得系APIがない。
  • Unityと互換性のある座標系取得関数が貧弱。