2014/08/23

[vuforia]Unityも使ってみる

そういえば、VuforiaのインストールガイドにはNDKもインストールするよう書かれていた。
一応インストールはしたものの、サンプルにはjniがないし、ndk-buildしてもビルドされるわけでも無い。

staticライブラリをコピーするくらいだから、「こちらにビルドしたものをご用意しました」という状態なのだろう。


で、だ。
ネットで見ていると、NDKでビルドするという話がしばしば出てくる。
iOSの記事だからかもしれないが、Unityというのでデータを生成するとCのヘッダができるようなことも書かれていた。
うーん、NDKはやっぱりいるのか?
わからんので、Unityでのサンプルも試しておこう。
なお、Unityってのも知らないので、ごにょごにょ長くなるだろうが許してくれ。

 

https://developer.vuforia.com/resources/dev-guide/step-1-installing-extension
まず、Vuforiaのunitypackageをダウンロードして、C:\Program Files (x86)\Unity\Editor\Standard Packagesにコピー。

https://developer.vuforia.com/resources/dev-guide/step-2-compiling-simple-project
Unityを起動して、プロジェクトの作成でvuforiaなんとかにチェックを入れて、create。
しばらく待つと、3Dの平面にカメラっぽいものが見える画面が出てきた。

左下にあるフォルダツリーで、Assets > Qualcomm Augmented Reality > Prefabsを開く。
(はっ、「プレハブ」って、Prefabなのか? 何かの略かと思ってたのだが・・・)
左上のHierarchyからMain Cameraを削除し、代わりにPrefabsの中にあるARCameraをドラッグして持っていく。

ドラッグしたARCameraをクリックすると、右側のInspectorにずらずら出てきた。
説明では、StreamingAssets/QCARが有効になるとか何とか(今気付いたが、QCARはQualComm ARの略か)。
QCARフォルダの中にはテキストファイルが1つだけあり、ダブルクリックするとMono Developというツールが起動してしまった。CSharpって書いてあったので、今回は関係なさそうだ。

今度は、TargetImageをドラッグして左上にドラッグアンドドロップ。
Inspectorに、またずらずら出てくる。
ここの「Image TargetBehavior」は必須らしい。
"Press here"と書いてあるのでクリックすると、ブラウザでVuforiaのサイトにあるTarget Managerというサイトがひらいた。
このサイトでデータを作るようだ。

適当にTargetを作って、Unity Editor用をダウンロードすると、Unityアイコンがついたファイルが取って来れた。
これを組み込めんばいいらしい。
メニューの Assets > Import Package > Custom Packageでダイアログが開くので、さっきダウンロードしたファイルを選択。
そうすると、これらをインポートします、みたいな画面が出てくるので、そのままImport。

Importすると、InspectorのImage TargetBehaviorにいくつか追加されている。
Targetを1つだけ作っていたためか、Data Setでは1つだけ選択できた。
それを選ぶと、真ん中のSceneウィンドウに絵が出てきた。
なんじゃこりゃー。

image

ImageTargetというのは、どうやら目印になる画像のようだ。
サンプルでいうところの、砂利の画像みたいなやつだ。
てっきり、ここで作った画像が3Dで見えるやつになるかと思っていたのだが、やはり3Dは甘くないな。
(pngファイルから自動的に3Dにするなんてすごい!と思いこんでいたのは秘密だ。)

 

ここから、ようやく3Dオブジェクトの話になる。
説明ではあっさりと「シンプルなCubeオブジェクトを作る(GameObject > Create Other > Cube)と書いてあるが・・・はて。
ああ、メニューから作るのか。
Hierarchyの一番下にCubeができるが、これをドラッグしてImageTargetの配下にする。
Directional Lightも追加できるよ、とあるので追加してみたが、ライトが当たったように見えるのかよくわからん。

TrackableEventHandlerがどうのこうのあるが、デフォルトがあるようなので、そのまま使っておこう。

これで、とりあえず準備はできたようだ。
メニューから、File > Build Settingsを選ぶと、ダイアログが出てくる。
設定は特にせずとも、Androidを選んでビルドすると、よさそうだ。
"Scenes In Build"には、Add Currentすれば現在のが追加されるようだ。
追加して、保存してからBuild and Run、なのかな。

そうすると、Nexus7に転送されて立ち上がるのだが・・・画像を見せても何も出ない。
のっぺりした画像だったからダメなのかと思い、ImageTargetを白黒のにしてみたけど、だめ。

まず1つ見つかったのは、ImageTargetの設定だ。
説明ページには言及が無いが、Inspectorの画像を見るとData Set Load Behaviourの設定で「Load Data Set xxx」と、その下の「Active」にチェックが入っているのだ。
これは、デフォルトではチェックされていない。
書いておいてくれよ・・・。

でも、これをやっても変わらない。
うーむ。。。

image

ん??

image

image

ああ!
ゴミみたいなのが、追従して動いてる!!
小さいだけか・・・。

Cubeの"Transform"にあるScaleを、全部0.2にした。
どうやら、ImageTargetを1.0としたときの比率になるようだ。
これでビルドすると、出てきた!
黒い四角が出てきた!!
よかったんだけど、絵としてわかりづらいので、四角の表面に何か貼り付けてみたい。

どうやら「テクスチャ」というものらしい。
左下のAsserts > Qualcomm Augmented Reality > TexturesのUserDefinedTarget.pngを、左上のCubeの中にD&D。
そうすると、CubeのInspectorに追加された。
もっといい方法があるのかもしれんが、よくわからん・・・。
Base(RGB)もよくわからんが、Selectをクリックすると画像があったので、適当に選ぶと貼り付けられた。
Shaderが「Unlit/Texture」だと貼り付けられるみたいだ。

image

わーい。

Cubeを作ったときは「Default-Diffuse」というのがあるんだけど、これが編集も何もできないのでこういう手順を踏んだが、Unityの使い方から学ばねばならんのかな。
3Dにそこまで思い入れがあるわけじゃないけど、「ああUnityね、使ったことなくもないよ」くらいは言えるようになりたいじゃ無いか。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。