2013-08 << 2013-09 >> 2013-10

2013-09-29 (日)

休みがあと1ヶ月くらい欲しい.

Nexus7と100円ショップの虫眼鏡でOculusもどき作るのは,だいたい一段落.

加速度センサからの入力で映像をコントロールするのもありだけど首とか疲れる.加速度と角速度を擬似的に体験できればコントローラーでの操作でも良いなあ.むしろそっちが欲しい.寝たまま遊べるし.三半規管とかに電流流すとコントロールできるような話もあるし,そっちを調べようかな.

あとはNexus7(2013)には背面カメラがあるので,カメラの映像も色々使えそうだなあ.カメラで手を認識するとか良さそう.

*[Android] OpenGLまわりのデバッグ

今回,Adreno Profilerを使ってみたので感想です.

AndroidでOpenGLを使うコードをデバッグするとき,どのFBOのレンダリングに失敗しているのかとか,テクスチャちゃんと読み込めているのかとか知りたいですね.

Nexus7(2012)のGPUはTegra 3が載ってたのでNVIDIAのPerfHUD ESが使えたけど,新しいやつはQualcommなので,Adreno Profilerを使ってみました.

まずは,Adreno Profilerをインストール.ダウンロードのためにアカウント作る必要あります.Windowsマシンが必要です.Macしかない人は(お使いのMacを今すぐ窓から投げ捨て)ThinkPadを買いましょう.

Adreno Profilerを起動する前に,

adb.exe shell setprop debug.egl.profiler 1

これで,adb経由でGPUの情報が取得できるようになる.たぶんOSを再起動するとリセットされるので,デバッグ時に毎回やる必要があるっぽい.とりあえずrootとかも必要ない.

あとはadbがpathの通った場所にあればConnectボタンを押すだけで接続できる.adbの接続がない場合もネットワーク経由でデバッグもできる.被デバッグアプリにandroid.permission.INTERNETが必要.

adrenoprof.jpg

(昨日から使ってるモデルはLat式ミクです)

テクスチャも含めて,あるフレームの描画に使った全データが見れるので何かあったときも安心です.PC上でOpenGL ESの命令をエミュレートしたりするので,最近のグラボを積んでないと色々警告が出たりしますが,だいたい動きます.

ただ,急いで操作するとよく落ちる.

昨日作ったやつをもう少し観察してみると,テクスチャの読み書きがボトルネックになってるっぽいので,どうにかしないとかなあ.2048x2048のFBOを2枚使ってたのを1600x1600に落としたらとりあえず30fpsは確保できた.NPOTなサイズのテクスチャになってしまうけど,とりあえず動くし良いか.あとシェーダのfloatの精度をmediumpからhighpに上げたら少し画質が改善した(気がする).Adrenoってmediumpとhighpは同じかと思ってたら違うのか.

*昨日作ったやつ

MikuMikuDroid 0.25に対するパッチ.oculus_diff.patch適当なので既存の色々なものがたぶん動かなくなる.

使ってて気づいたけど,Nexus7がとても熱くなる.そして,USBケーブルつないでる状態でもバッテリー減る...

追記:githubに置きました

2013-08 << 2013-09 >> 2013-10