NyARToolkit+NyMMDのオリジナルソースのままの場合

    マーカーを検出するとマーカー画像に垂直な姿勢を維持してモーションします。

    インストールはこちら



NyARToolkit + NyMMD(改)

    マーカー検出をトリガーにしていますが、ミクさんのモーションはマーカー位置や向きとは無関係にしてみました。

    インストールはこちら



NyMMD

    NyARToolkitとは無関係にミクさんに歌って踊っていただきました。

    ポートレートとランドスケープを切り替られるようにしてみました。

    切り替えは画面上のボタンをタップして行います(傾きセンサーはまだ使っていません)。

    インストールはこちら



NyARAndMarkerSystemは無効にしていますが、CameraPreviewのコードはそのまま使っています(無地の背景ではチト素っ気無い)。
画面サイズを取得するコードを変更しています。フルスクリーンでカメラを使いたかったし、APIのLevel13以降にも対応したかったもんで...。
拡大・縮小や方向の変更は、glLoadMatrixfに4x4のマトリックスを引数で与えればOK...だと思う。



ソース

NyARToolkit + NyMMD
NyARToolkit project

サウンド(ピアプロ)
サディスティック・ラブ歌ってみました*ちいもた

初音ミクモデル
この方のページからダウンロードしたものに同梱されていたもの。
三次元CG@七葉(http://nanoha.kirara.st/3dcg/index.html)に投稿された初音ミクモデルデータ(nh0163.zip)を、MikuMikuDance用に変換したもの.....だそうです。

モーション(↓ここ...だったような?)
【MikuMikuDance】サディスティック・ラブ

参考までにこの場合のマトリックスはこんな感じ(ポートレートの場合)。

float m[] = new float[16];

m[0] = 0.087351315f;
m[1] = 0.9769368f;
m[2] = 0.194844f;
m[3] = 0.0f;
m[4] = -0.5970408f;
m[5] = 0.2079125f;
m[6] = -0.77479976f;
m[7] = 0.0f;
m[8] = -0.79744095f;
m[9] = -0.048650034f;
m[10] = 0.60143256f;
m[11]= 0.0f;
m[12] = 88.18011f;
m[13] = 61.407455f;
m[14] = -329.6059f;
m[15] = 1.0f;

OpenGLの場合、インデックスが12,13,14のものがそれぞれ、X,Y,Z方向の平行移動量です。
ミクさんを画面中央に置く場合は、m[13] = 0.0f;にする....といった具合です。

オリジナルのコードだと開始後、目を閉じるような(あるいは笑っているような)表情になってます。

この制御は、jp.nyatla.nymmdパッケージのAmdMmdMotionPlayer.java内のupdateFace関数で行っているようです。

管理人はコードの読み込みがまだ不十分なので、とりあえずここのコードをストップすれば目を閉じなくなります。

でも何故なのかはまだ不明。VMDViewで確認してみましたが、普通に目は開いているのですが....?



ガベージコレクション(GC)について

このアプリではミクさんに踊ってもらう以外に歌詞を36枚ほどの画像で表示しています。

その際、outOfMemoryErrorが発生して「予期せず停止」という事態になることがあります。

ヒープが食い尽くされちゃってアプリが落ちるというわけです。そのため使ったメモリは開放してやる必要があります。

特にスマホはヒープ領域が小さいので、どんどん落ちます。

現アプリではonDestroyでGCを行っています(多分もう1箇所必要)。

歌詞はImageViewで表示していますが、GCのコードはこんな感じです。

ImageView imageA;

Drawable toRecycleA = imageA.getDrawable();
if(toRecycleA != null){
    ((BitmapDrawable)toRecycleA).getBitmap().recycle();
}
imageA.setImageDrawable(null);

でも、API Levelが10より大きい場合、このコードが原因でエラーになりますのでご注意ください。





インストール

Target:Android 2.3.3 or later

動作確認実機:Xperia acro(docomo) Android 2.3.4、dtab01(docomo) Android 4.1.2


以下3つのアプリはパッケージ名が同じなので続けてインストールしようとすると上書きされますので、ヨロシク。

NyARToolkit + NyMMD

マーカー


NyARToolkit + NyMMD(改)

マーカー


NyMMD



アプリをQRコードからインストールする方法はコチラを参照


タブレットの場合

QRコードでダウンロードすると、Downloadフォルダー内でzipファイルになってインストールできない状態の場合があります。
その場合は、拡張子のzipをapkに変更してファイル名をタップすればインストール用のダイアログが出ますので、そこからインストールしてください。


アプリの終了は必ず「戻る」のハードキー(ソフトキー)で行ってください。

このアプリはまだ非公開バージョンですので、インストール・実行などは自己責任で行ってください。

NyMMDの場合、起動後「予期せず停止しました」というエラーが出ることがあります。

これは、歌詞を画像で表示しているのですが、イメージ処理の際のガベージコレクション(GC)の問題だと思います。

Androidのバージョン3.0以降はGCの問題は解消されているようですが...。

対応コードは入れてますが、まだ不十分です。

「予期せず停止」した場合はアプリを再起動してください。

また、初回インストール時に起動した際、ミクさんが現れないことがあります。

その場合も再起動。

よろしくお願いします。