2022/10/30(日)

(記: 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: