VRMを使ったアプリのサンプル集です。
UnityからWebGL向けにビルドすることを想定しています。
WebGLでビルドされたデモです。
https://kilimanjaro-a2.github.io/SampleAppsOfVRM/
プロジェクトをダウンロードしてUnity Editorで開いてください。
そして、 https://github.com/vrm-c/UniVRM/releases から最新のUniVRMのunitypackageをダウンロードして、プロジェクトにインポートしてください。
Unity Editorのバージョンは2019.3.9f1を想定しています。
プロジェクトの中には、VRMを使ったアプリで使用されることが想定される6つのシーンを用意してあります
プロジェクト内で使用しているVRMはVRoid Studioより出力したものです。
- VRMの読み込みがうまくいかない!
ダイアログを開いてからコールバックを呼び出す先として指定しているGameObjectの名前が異なっていると、うまく動作しません。
FileImporterPlugin.jslib
で指定されている名前のついたGameObjectがシーン上に存在し、それにVRMLoadManagerがアタッチされていることを確認してください。
サンプルプロジェクトの中では、シーン上の"VRMLoader"というGameObjectにアタッチされているスクリプトすべてに対して、FileSelected()
という名前のメソッドを呼び出すようになっています。
- 何故ButtonのOnClickではなくEventTriggerのPointerDownで
FileImporterCaptureClick()
を呼んでいるの?
FileImporterCaptureClick()
内ではClickイベントに対するハンドラを生成してすぐに発火させる処理を行っています。
これをClickの発火時に行ってしまうと次のClick時までイベントがハンドルされないからです。
その現象を避けるため、Clickイベントよりも先に処理されるPointer DownイベントにFileImporterCaptureClick()
を呼ぶ処理を行わせています。
- ビルドしたときに文字が表示されない!
UnityのデフォルトフォントであるArialなどは、日本語に対応していません。
日本語に対応しているフォントを使用しましょう。
- 非同期でVRMを読み込みたい
UnityのWebGLビルドは、マルチスレッディングに対応していないので、
VRMImporterContext.LoadAsync(
)は使用できなさそうです。
マルチスレッディングを使用しないようスクリプトを書き換えることで、非同期読み込みに対応できますが、パフォーマンスは悪くなります。
このプロジェクトでは同期的な読み込みのみ対応しています。