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が必要.
(昨日から使ってるモデルはLat式ミクです)
テクスチャも含めて,あるフレームの描画に使った全データが見れるので何かあったときも安心です.PC上でOpenGL ESの命令をエミュレートしたりするので,最近のグラボを積んでないと色々警告が出たりしますが,だいたい動きます.
ただ,急いで操作するとよく落ちる.
昨日作ったやつをもう少し観察してみると,テクスチャの読み書きがボトルネックになってるっぽいので,どうにかしないとかなあ.2048x2048のFBOを2枚使ってたのを1600x1600に落としたらとりあえず30fpsは確保できた.NPOTなサイズのテクスチャになってしまうけど,とりあえず動くし良いか.あとシェーダのfloatの精度をmediumpからhighpに上げたら少し画質が改善した(気がする).Adrenoってmediumpとhighpは同じかと思ってたら違うのか.
- Adreno Profilerhttps://developer.qualcomm.com/mobile-development/mobile-technologies/gaming-graphics-optimization-adreno/tools-and-resources
- NVIDIA PerfHUD EShttps://developer.nvidia.com/nvidia-perfhud-es
*昨日作ったやつ
MikuMikuDroid 0.25に対するパッチ.oculus_diff.patch適当なので既存の色々なものがたぶん動かなくなる.
使ってて気づいたけど,Nexus7がとても熱くなる.そして,USBケーブルつないでる状態でもバッテリー減る...
追記:githubに置きました
- 図面 https://github.com/binzume/oculus7
- MikuMikuDroid改 https://github.com/binzume/mikumikudroid