SATCHが公開されて、AR界隈が盛り上がっている・・・のかは知らんが、
ひとまず俺は乗り遅れた。
しかも、Total ImmersionのD’Fusion StudioというSATCHでも使われている
フリーの製品をいち早く取り込んだら乗り遅れると言う皮肉な事態。
しかもSATCHは12/20からずっとメンテ中で新規登録が出来ない。
しかし嘆くことは無い!
何とSATCHのサイトには、D’Fusion Studioの日本語チュートリアルがあるのだ!
これは便利!!
と言うことで、早速これを参考に、SATCHに頼らないD’Fusionによる
ARアプリ開発をやってみよう。
では、D’Fusion Studioでの開発を始める。
まず、こちらのサイトからD’Fusion Studioをダウンロードする。
また、併せてユーザ登録もする。
ここで登録したIDとメアドはSATCHで使えないので注意。
ダウンロードが終わったら、SATCHの開発ガイド
「SATCH Developers|Step1. ARコンテンツ制作」
を見ながらインストールする。
ただ、このとき使うIDとパスワードはSATCHのではなく、先ほど登録したものを使う。
で、そのままSATCHのチュートリアルを進め、
「SATCH Developers|1.8 ARコンテンツエクスポート」
までくると、あれ?となる筈だ。
そう。
出力するPlatformの追加に「android」なんてない。
あるのはWindowsとかMacだ。
そこで、以下の手順を踏もう。
1.Targetを追加。
まず、「@Home」と書いてある選択リストから「Add Target」を選ぶ。
すると、Target追加ダイアログが出てくる。その中にmobileと言うのがあるので、
選んでOKを押す。
するとTargetにmobileが増えるので、選択する。
2.Platformsを選択
ここまで来るとチュートリアルに近づいている。
mobileをTargetにしておくと、Platformsの方にはandroidがある。
これを選べばよい。無かったら、Add Platformを選べば追加できる。
これで完了。Android用にエクスポートする。
ちなみに、今回はAndroidでアプリを作る時のクラス名を
「org.tarotaro.android.ar.DFusionSampleAndroidActivity」
にすることにする。そのため、アプリケーションIDは
「org.tarotaro.android.ar」
になる。ここだけ注意だ。
次はAndroidでARアプリを作るとしよう。
先ほどのTotal Immersionのサイトにログインした状態で、DOWNLOADから
D’Fusion Studio Suiteを選択すると、色々ダウンロードできるページに飛ぶ。
この中から、D’Fusion Mobile SDK for Android 3.2をダウンロードしよう。
ダウンロードして解凍すると、英語の開発ガイドとライブラリが入っている。
とりあえずざっと読んだ所だと、エクスポートした時に出来る「dfk」ってファイルが
コンテンツキーになっていて、エクスポートした段階ではテスト用のキーがもらえる。
で、D’Fusion PROを使っている人は、テスト用のキーをTI社に送ると、本番用の
キーファイルがもらえるらしい。後、商用利用は本番用限定との事。
商用利用するためにはPRO版必須なのは厳しいかも。
SATCHでもコンテンツ登録とかするみたいだけど、それがこの本番用キーの
入手になるのかな。だとするとSATCHはその辺りが嬉しいとも言えるね。
さて、今回はテスト用のキーのままで行くのだが、次はどうするかと言うと、
「SATCH Developers|Step2. アプリケーション開発」
の、アプリケーション開発 for Androidを見て、開発環境を作る。
で、環境が出来たら、
「SATCH Developers|2.2.2アプリ生成」
を見て、2.2.2.2まで真似る。ここまでは全く一緒だ。
ちなみに
プロジェクト名は「DFusion_Sample_Android」、
パッケージ名は「org.tarotaro.android.ar」、
Activity名は「DFusionSampleAndroidActivity」
にしてみた。
で、次がいよいよ違う。ライブラリが違うからね。
ダウンロードしたD’Fusion Mobile SDK for Android 3.2の中の、
DFusionMobile_Android_0/DFusionMobile_Android/SDK以下にある
dfusionmobilesdk.jarとlibtiAndroidAR2.soを、以下のように配置する。
つまり、SATCHで言う「satch.jar」の代わりに「dfusionmobilesdk.jar」を使い、
libsatchAndroid.soが無い状態だ。
で、解説でsatch.jarにやっているようにdfusionmobilesdk.jarをビルドパスに追加する。
そして次に、AndroidManifest.xmlを開いて編集するのだが、これはSATCHとD’Fusionでかなり違う。
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="org.tarotaro.android.ar"
- android:versionCode="1"
- android:versionName="1.0">
- <application android:icon="@drawable/icon" android:label="@string/app_name"
- android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
- android:debuggable="true">
- <activity android:name=".DFusionSampleAndroidActivity"
- android:label="@string/app_name"
- android:screenOrientation="landscape"
- android:configChanges="orientation|keyboard|keyboardHidden">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- </application>
- <uses-permission android:name="android.permission.CAMERA"/>
- <uses-feature android:name="android.hardware.camera"/>
- <uses-feature android:name="android.hardware.autofocus"/>
- </manifest>
見て分かるとおり、大分少ない。
SATCHは利用者の位置情報やら何やらを収集するが、D’Fusionはしないからだ。
カメラ機能だけをONにしている。
ここも、SATCHとD’Fusionの大きな違いだ。利用規約に位置情報取得について
書かないといけないなど、SATCHは使ってもらうのに気を遣うのだが、元々の
D’Fusionはそうでもないのだ。
SATCHの利用規約に同意するとD’Fusionそのままの機能は使えないのだろうか?
この辺りのライセンスの扱いは気になる。
次に、Javaで書かれたActivityを編集する。以下の様な感じだ。
ちなみにこれはSDKについてる開発ガイドに乗っているコードをつないで作った。
- package org.tarotaro.android.ar;
- import ti.dfusionmobile.tiComponent;
- import android.app.Activity;
- import android.content.pm.ApplicationInfo;
- import android.content.pm.PackageManager;
- import android.content.pm.PackageManager.NameNotFoundException;
- import android.os.Bundle;
- import android.util.Log;
- import android.widget.FrameLayout;
- public class DFusionSampleAndroidActivity extends Activity {
- private FrameLayout _frameLayout;
- private tiComponent _tiComponent;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- Log.e(this.getClass().getName(),"onCreate");
- super.onCreate(savedInstanceState);
- _tiComponent = new tiComponent(this);
- }
- @Override
- public void onStart() {
- Log.i(this.getClass().getName(),"onStart");
- _frameLayout = new FrameLayout(this);
- _tiComponent.initialize(_frameLayout);
- _tiComponent.activateAutoFocusOnDownEvent(true);
- setContentView(_frameLayout);
- super.onStart();
- ApplicationInfo appInfo = null;
- PackageManager packMgmr = getApplicationContext().getPackageManager();
- try {
- appInfo = packMgmr.getApplicationInfo(getPackageName(), 0);
- } catch (NameNotFoundException e) {
- e.printStackTrace();
- throw new RuntimeException("Unable to locate assets, aborting...",e);
- }
- String dpdfile = appInfo.sourceDir + "/assets/Scenario/Scenario_a/Sample.dpd";
- _tiComponent.loadScenario(dpdfile);
- _tiComponent.playScenario();
- }
- @Override
- public void onResume() {
- Log.i("MainActivity", "onResume");
- super.onResume();
- // we re-create the GL Context and reload the scenario
- _tiComponent.onResume();
- // play the scenario
- _tiComponent.playScenario();
- }
- @Override
- public void onPause() {
- Log.i("MainActivity", "onPause");
- super.onPause();
- // we pause the scenario
- _tiComponent.pauseScenario();
- // we notify the onPause event to the component :
- // medias are released but the library is not unloaded.
- _tiComponent.onPause();
- }
- @Override
- public void onStop() {
- Log.i("MainActivity", "onStop");
- super.onStop();
- // the component is closed, media are unloaded
- // 3d view and videocapture are destroyed.
- _tiComponent.terminate();
- }
- @Override
- public void onDestroy() {
- Log.i("MainActivity", "onDestroy");
- super.onDestroy();
- // delete everything.
- _frameLayout = null;
- _tiComponent = null;
- }
- }
これも、SATCHとは異なっている。
ただまぁ、コアな部分は似ているというか同じだ。
あと、SATCHはActivityクラスを2つに分けていたが、別に必要ない。
これ1個で動く。
と言うことでビルドして、デバッグ開始。
Xoomをつないでデバッグしてみたんだが、スクリーンショットが取れなかった。
そのため、実記を写真に撮った。少し写りが悪い。
あと、チュートリアルのフライヤーを印刷するのが面倒だったため、
手元にあったnanoblock モノトーンパックの裏の写真を認識用に使った。
まずタブレット全体を写したもの。
なんかカメラの映像が小さい。何処でミスったかな・・・?
何か、ARコンテンツ作る時のAndroid用のカメラ設定が小さかったのか?
まぁいいや。次にアップ。とりあえず、出来ていることがわかる。
こんな感じ。かなりご機嫌にアニメーションしているし、絵の認識も素晴らしい。
さて・・・。
現状、SATCHとD’Fusionは共存できそうに無い状況(D’Fusion Studio2つインストールできなさそう)なので、
選択にはなると思う。でも、SATCHが無くても充分な気がする。
後は、ライセンスだとかの微妙な部分でTotal Immersion社がちゃんと教えてくれるかとか、
お金が幾らかかるかとか、日本語の情報があるかとか、そういうところでの
相談なんじゃないかなーと思う。
あと、SATCHはイベントで散々簡単にするだの日常にするだの開発者以外も
作れるだの言ってたが、D’Fusion Studioから全くハードル下がってない。
手順はほとんど同じ。
3Dデータのエクスポーターも3DS MaxとMayaとか、全然フレンドリーじゃない。
無料のSATCHを楽しむためには超高い3Dオーサリングツールが必要ですとか、
何か「割のいいバイトがあるけど、やるためにまず高い教材が必要」的な
詐欺の匂いすら感じる。
BlenderとかMetasequoiaとか、仕様をオープンにしてコミュニティに貢献して、
各種3Dオーサリングツールでのエクスポータを用意すべき。
最新コメント