NyARToolkit for UnityでUnityちゃんを動かす

[English]

動画で紹介したNyRToolkitでUnityちゃんを動かすデモの作り方です。


以下の順で説明します。

  • 開発環境の準備
  • 機材とデータの準備
  • プログラムの改造
  • テスト
  • NFTデータセットの作り方

開発環境の準備

NyARToolkitでUnityちゃんを表示するためのプロジェクトを準備します。

  1. 新しいプロジェクトを作る
  2. NyARToolkit for Unityをインポートする
  3. SDUnityChanをインポートする

新しいプロジェクトを作る

Unityを起動して、空のプロジェクトを作成してください。(Unityのバージョンは5.3.4以降を使います)

1

 

NyARToolkit for Unityをインポートする

NyARToolkit for Unityのパッケージをダウンロードして、Unityへドラック&ドロップしてインポートします。
https://github.com/nyatla/NyARToolkitUnity/releases

2

SDUnityChanをインポートする

SDUnityChanのパッケージをダウンロードしてインポートします。
http://unity-chan.com/download/releaseNote.php?id=SDUnityChan&lang=jp

3

 

2つのパッケージを導入すると、projectは以下のようになります。

6

 

機材とデータの準備

デモには、PC以外に以下の機材が必要になります。

  1. ウェブカメラ
  2. Unityライセンスロゴを印刷した紙
  3. UnityライセンスロゴのNFTデータセット

ウェブカメラ

1つ以上のカメラがPCに接続されている必要があります。USBカメラなどを接続しておいてください。カメラ内蔵のPCの場合は必要ありません。

Unityちゃんマークを印刷した紙とNFTデータセット

これらはUnityライセンスのロゴイメージから作ることもできますが、必要なデータをセットにしたzipファイルを用意したのでダウンロードしてください。

unitychan-demodata.zip

zipファイルの中にあるUCLlogo180mm.pdfをA4用紙に印刷してください。このpdfは、Unityライセンスロゴを幅18cmで印刷した用紙です。

NFTターゲットデータは、同じくzipファイルの中にある、unitychan.nftdatasetを使います。

元の画像UCLlogo.pngから自作する場合は、解説の最後にあるNFTデータセットの作り方を参照してください。

 

プログラムの改造

ここから本編です。先ほど準備した開発環境にあるsample/SimpleNftシーンを改造して、Unityちゃんを表示するようにします。

 

オブジェクトツリーの編集

SimpleNftシーンを開いてください。シーンのHierarchyタブにあるMarkerObjectを展開すると、Cubeオブジェクトがあるので削除します。

7

UnityChan/SD_unitychan/Prefabにある、SD_unitychan_humanoidのPrefabをMarkerObjectの子にドラック&ドロップします。MarkerObjectはNFT位置に合わせて姿勢変換行列が更新されるオブジェクトです。この下に配置したオブジェクトがマーカの上に表示されます。

9

NFTデータセットのコピー

unitychan-demodata.zipの中にあるunitychan.nftdatasetを使います。unitychan.nftdatasetは、幅180mmのUnityライセンスロゴ用のNFTデータセットファイルです。自作した場合は置き換えて進めてください。

まず初めに、ファイルの拡張子を.nftdatasetから.bytesに変更します。これはUnityでバイナリファイルを埋め込むために必要な手順です。

次に、unitychan.bytesをAssetのResourceディレクトリにドラッグ&ドロップしてコピーします。これでUnityからリソースファイルを読むことができるようになります。

17

Unityちゃんの設定

NyARToolkit for Unityでは、マーカのスケール値1が1mmとして扱われます。また、中心座標は画像の左下を起点にXY方向で表現されています。Unityちゃんの位置とサイズを調整して、ロゴマークの中央にUnityちゃんが立つように設定します。

また、SpringManagerが有効だとうまく動かないので、チェックを外します。

18

 

コードの編集

最後に、C#コードを2か所書き換えて完成です。SimpleNFTのディレクトリにある、NftCameraBehaviour.csをダブルクリックして、開きます。変更箇所は2か所です。

NFTデータセットの変更

NFTデータセットをinfinitycatから先ほど追加したunitychanに書き換えます。また、画像の横幅を160から180(単位はmm)に書き換えます。

10

Cubeを操作する行の削除

削除したCubeに関わる行を削除します。

11

 

テスト

完成したらUnityのプレイボタンを押してみてください。画面にカメラ映像がでたら、印刷しておいたUnityちゃんロゴを撮影してみましょう。ユニティライセンスのロゴはやや認識しにくいので、ロゴ全体が撮影されるようにカメラを構えてください。

19

 

NFTデータセットの作り方

認識対象にするNFTデータセットは、ツールを使って画像ファイルから作ることができます。

ツールはNyARToolkit for UnityのData/toolディレクトリにあるNftFileGenerator.jarです。エクスプローラなどでNyARToolkit for UnityのAssetsディレクトリを開くと以下のファイルが見つかります。12

Windowsでは.batファイルをダブルクリックして下さい。その他のシステムでは、以下のようにターミナルから実行してください。

java -jar NftFileGenerator.jar

ツールが起動したら、元となる画像を読み込みます。メニューからImportを選択して、LoadImageを選択します。ダイアログが開くので画像をロードして、MakeFeatureSetを押してください。

14

データセットの生成には数分間かかります。しばらくお待ちください。出来上がると特徴点が表示されます。

15

出来上がったら、メニューからExport→Save NyARTK NFT dataset fileを選択してデータセットファイルを保存してください。(Save Feature Set Fileで保存したファイルはUnityでは使用できません。)

 

データセットのパラメタについて

  • SourceDPI – 画像のDPI値を設定します。特に変更する必要はありません。
  • Iset DPIs – ピラミッド画像の解像度セットです。AUTOはSourceDPIから自動で計算します。Customの場合は下段のカンマ区切りの数値の解像度セットを使います。特に変更する必要はありません。
  • FSET parametor – トラッキング特徴点(赤□)を検出するパラメータです。Lvが大きいほど検出する特徴点が多くなります。特徴点が多すぎる/少なすぎる場合に調整してください。

入力できる画像サイズはVGAサイズ以下にしてください。大きな画像を使いたい場合は、事前に縮尺してから使用してください。

Unityロゴのようなコントラストの強い白黒画像はNFTデータセットにあまり向いていません。自然画等のほうが良いデータセットができる確率が高くなります。

 

 

 

NyARToolkitCS/Unity 5.0.8リリース

NyARToolkitCS/5.0.8、及び、NyARToolkit for Unity/5.0.8をリリースしました。

VisualStadio開発環境と、UnityでもNFTが使用できるようになります。

 

NyARToolkitCS

NyARToolkitCSは、VisualStadio2013で開発することができます。
releaseからzipファイルをダウンロードして、展開してください。
https://github.com/nyatla/NyARToolkitCS/releases

NyARToolkitCSのNFTサンプルは、SimpleNFTプロジェクトです。NFTターゲットは、Dataにあるinfinitycat.pdfを使います。マーカの代わりにNFTターゲットを登録すること以外は、マーカベースのプログラムとほぼ同じです。

https://github.com/nyatla/NyARToolkitCS/tree/master/forFW2.0/sample/SimpleNFT

 

NyARToolkit for Unity

NyARToolkitCSは、Unity 5.3以降で開発することができます。
releaseからpackageファイルをダウンロードして、Unityへインポートしてください。

https://github.com/nyatla/NyARToolkitUnity/releases

NFTサンプルは、SimpleNFTディレクトリにあります。NFTターゲットは、Dataにあるinfinitycat.pdfを使います。マーカの代わりにNFTターゲットを登録すること以外は、マーカベースのプログラムとほぼ同じです。

 

NyARToolkitのライセンス変更のお知らせ

NyARToolkitのライセンス変更のお知らせ

ARToolKitのLGPL化に伴い、NyARToolkitパッケージのライセンスをLGPLv3に変更します。

NyARToolkitCS, NyARToolkit for Unity, NyARToolkit for ActionScript3, NyARToolkit for Processing

今後はNyARToolkitをライブラリとして使用する場合にソースコードの開示義務がなくなります。

FLARToolKit、NyARToolkit for Androidについても変更を予定しています。もうしばらくお待ちください。

ライセンス変更に伴い、リポジトリをSourceforgeからGitHubへ移行しました。各パッケージのリポジトリは以下のURLからアクセスできます。

NyARToolkit

外部ライブラリ

English

The license of NyARToolkit will be change to LGPLv3.

Following packages licence is changed.

NyARToolkit, NyARToolkitCS, NyARToolkit for Unity, NyARToolkit for ActionScript3, NyARToolkit for Processing.

If you want to use the NyARToolkit as a library, there is no duty to disclose the source code.

Along with the license change, Repository is moved from Sourceforge to GitHub. Each package can be accessed from the following URL.

NyARToolkit

Related libraries

NyARToolkit/4.1.1(Java/C#/Unity) & NyAR4psg 1.3.2 Released

NyARToolkit/4.1.1(Java/C#/Unity) と NyAR4psg/1.3.2をリリースします。

更新内容

NyARToolkit/4.1.1

  • 4.1.0の致命的な不具合 #30297 のバグフィクスです。

NyAR4psg/1.3.2

  • NyARToolkitを4.1.1へ更新しました。
  • Processing2.0Betaへ対応しました。(1.5系と2.0系は別のライブラリ・サンプルを用意しました。) 既知の問題点として、2.0Beta版は、文字列表示処理が完全に動作しません。

 

English

NyARToolkit/4.1.1(Java/C#/Unity)  and NyAR4psg/1.3.2 are released.

Update details

NyARToolkit/4.1.1

NyAR4psg/1.3.2

  • Updated NyARToolkit library to 4.1.1.
  • Supported Processing2.0Beta (1.5 and 2.0 libraries and samples are separated.)
    A known issue is text-rendering does not work correctly.

NyARToolkit 4.1.0

NyARToolkit 4.1.0(Java/C#/Unity3D)をリリースします。
http://sourceforge.jp/projects/nyartoolkit/releases/

更新内容は以下の通りです。

新機能

共通

  • ARToolkit Professional Version4のカメラパラメータが使用できるようになります
  • OpenCVスタイルのカメラパラメータを使用できるようになります。
  • MarkerSystemでARプレイカードを使用できるようになります。

Java

  • スケッチシステムに、J2se版を追加しました。
  • NyARBufferedImageIoにNyARRgbRasterをラップするcreateWrappedBufferedImage関数を追加しました。

Unity

  • WebPlayerに対応しました。また、サンプルを追加しました。
  • サンプルの設定ファイルをResourceから読み込むように修正

バグ修正

共通

  • MarkerSystemで複数のARマーカ取り扱い時に検出ミスが発生する不具合の修正しました。(#29287)
  • NyARPointerStack#removeが正常に動作しない不具合を修正しました。(#29917)
  • MarkerSystemが10個以上のマーカを同時に認識できない問題を修正しました。(#30173)
  • その他の不具合修正( #29763 , #28851)

変更

共通

  • NyARParamのコンストラクタを変更しました。初期値設定やファイルから値をロードするときは、static関数をコールします。
  • NyARCodeのコンストラクタを変更しました。初期値設定やファイルから値をロードするときは、static関数をコールします。
  • NyARParam#changeSizeが、x,y独立してスケールするようになりました。
  • NyARTransMatの仕様を変更しました。NyARTransmatResultを廃止し、NyARTransmatResultParamとNyARDoubleMatrix44へ返却するようになりました。
  • NyARMath/NyARDoubleMatrix44/NyARDoubleMatrix33に関数を追加しました。
  • サンプルを変更にあわせて修正しました。

Java

  • GlSketchの起動方法を変更しました。new Sketch().run();のようにコールする必要があります。

C#

  • D3dSketchの起動方法を変更しました。new Sketch().run();のようにコールする必要があります。

 

English

NyARToolkit version 4.1.0 (Java/C#/Unity) released.
http://sourceforge.jp/projects/nyartoolkit/releases/

New function

All

  • NyARParam supports ARToolkit Professional Version4 format.
  • NyARParam supports OpenCV style Matrix.
  • NyARMarkerSystem supports PS AR play card format.

Java

  • Added the J2se version to a sketch system.
  • Added the createWrappedBufferedImage function which wraps NyARRgbRaster to NyARBufferedImageIo.

Unity

  • Supported WebPlayer. And added it’s sample.
  • The configuration files loader was changed. Files are loaded from Resource.

BugFix

  • #29287,#29917,#30173,#29763, #28851

Changes

All

  • The constructor of NyARParam was changed. Call a new static function for loading.
  • The constructor of NyARCode was changed. Call a new static function for loading.
  • NyARParam#changeSize function parameter is changed. it can set scales independently x and y.
  • The specification of NyARTransMat function is changed. it became to  return 2 parameters – NyARTransmatResultParam and NyARDoubleMatrix44.  NyARTransmatResult is removed.
  • The function is added to NyARMath/NyARDoubleMatrix44/NyARDoubleMatrix33.
  • All samples are changed to follow changes.

Java

  • The starting method of GlSketch is changed.  It is necessary to call like “new Sketch().run();” .

C#

  • The starting method of D3dSketch is changed. It is necessary to call like “new Sketch().run();”.