(記: 2022/10/31)
PICO4でようやくVRゲームを動かすことができた。音は出ないが。
VulkanのLayer
バリデーションレイヤを無条件につけていたのが災いした。なんか落ちると思ったらPICO4環境のVulkanはバリデーションレイヤをサポートしてないらしい。外したら通った。
多分サポートしているレイヤ一覧はちゃんと取得できるはずなので、あとでチェック機能を実装したい。
AAssetManagerの使用
色々迷ったが、AAssetManagerオブジェクトはandroid_main
に渡されるandroid_app
の中に含まれており、app->activity->assetManager
で取得できる。(android_app
型引数の名前をapp
とした)
シェーダのバージョン
VRasterで使ったシェーダのソースコードそのままでは動かなかった。
元のVRasterのシェーダのGLSLソースコードでは#version 450
の指定をしていたが、#version 400
にした。そのほかにもPICO4のOpenXRサンプルに従いいくつか変えたら何か動いた。正直どれが決定打だったのかよく分からない。
元のシェーダのコードも設計的にあまりいいソースではなかったというのがある。それで色々直したので、どこをどう変えたのが影響したのかもう分からない。
Reference Space
Valve Indexで作った時とReference Spaceの挙動がなんか違う。
Valve Indexで開発したときは
- Local → 頭を原点と傾きの基準とする空間
- View → 視線を原点と傾きの基準とする空間、Localと同じ?
- Stage → 立っている空間の足元を原点と傾きの基準とする空間
と言う感じだったと思うのだが、PICO4では
- Local → 最初の頭の位置を原点と傾きの基準とする空間
- View → 視線を原点と傾きの基準とする空間
- Stage → よく分からない、足元を原点としているようだが傾きがHMDに追従する
と言う感じだった。VRasterの元のソースコードではStageを立ち位置の基準としていたが、Localの1.5m下を基準とするように変更した。Stageが動いてLocalが動かないのなんやねん。
もしかしたらLocalを傾きの基準としてStageを位置の基準とするのが良いのかもしれない。
…以上のような形で、とりあえず見た目部分はちゃんと動く感じになった。あとは音が出ない。
OpenALは入れているし呼び出しているはずなのだが、音は出ない。見た目部分がなんとかなったのでかなり満足してしまったが、後日ちゃんと音もでるようにしたい。
Categories: 未分類