クロスプラットフォーム対応のセットアップ
クロスプラットフォーム対応のワールドやアバターのセットアップは、実はとても簡単です。要は、Unityのターゲットプラットフォームを目的のプラットフォームに切り替えて、コンテンツをビルドするだけです。
これを適切に行うための手順が必要な場合は、以下の短いガイドを参考にしてください。
Android向けセットアップ
最初にプロジェクトをAndroidターゲットに切り替えて、初回セットアップを行い、コンテンツがそのプラットフォーム向けにビルドできるようにします。
- SDK Control Panelを開き、Builderタブに切り替えます。
- "Build" セクションでプラットフォームのドロップダウンを選択します。"Windows" のチェックを外し、"Android" にチェックを入れます。
- 表示されるポップアップで "Switch" をクリックし、変更を確定します。
- SDK Control Panelに表示される検証メッセージを確認し、コンテンツがAndroidと互換性があることを確認します。
微調整と最適化
プロジェクトの準備ができたら、次は最適化を始める必要があります。この工程はスキップできません。 最近のAndroid端末は非常に高性能ですが、一般的なVR対応PCの性能には到底及びません。何をすべきかについては、Quest Content Optimizationのページを確認してください。ワールドの場合、ライティングのベイク、ジオメトリの複雑さの低減、透明度の回避、テクスチャ解像度の低減が必要です。アバターの場合、不要なコンポーネントやボーンの削除、ジオメトリの複雑さの低減、透明度の回避、テクスチャサイズの削減が求められます。
これには時間がかかりますし、難しい作業になることも予想されます。モバイルハードウェア向けの最適化は困難です!幸い、世の中には豊富なリソースが存在しており、YouTubeで「optimizing Unity for mobile」と軽く検索するだけでも、有益なコンテンツがたくさん見つかります。
また、Oculus Quest向けのコンテンツ最適化に関するドキュメントも併せて確認してください。
プラットフォームごとにコンテンツを調整するために、EasyQuestSwitch(VRChat Creator Companionのパッケージとして利用可能)のようなツールを使用することも強く推奨します。
PC専用バージョンとQuestバージョンなど、異なるプラットフォーム向けに複数のアバターバージョンを用意している場合は、SDKのPer-Platform Override機能を使用してそれらを使い分けることができます。
コンテンツのアップロード
ワールドやアバターの準備ができたら、アップロード可能です!このアップロードプロセスはVRChat PC版のアップロードプロセスと同一ですが、SDKはパフォーマンスの問題に対してより厳しく警告を表示します。
すべてのプラットフォーム向けにコンテンツを一括でアップロードしたい場合は、SDKコントロールパネルの「Build」セクションにある「Platforms」ドロップダウンで複数のターゲットを選択できます。
ワールドやアバターは、VRChat PC版のコンテンツと同じBlueprint IDにアップロードする必要があります。 Blueprint IDは、Game Object上の Pipeline Manager component によって定義されます。通常、これは VRCWorld プレハブなどにある VRC Scene Descriptor と共に存在します。Blueprint IDを編集するには「Detach」ボタンを押し、最初にアップロードしたバージョンのIDを貼り付けてください(IDはVRChat SDKコントロールパネルの「Content Manager」タブでも確認できます)。
アップロードするバージョンは、元のプロジェクトのビルドターゲットに依存します。Android用にセットアップされたプロジェクトであればQuest向けにアップロードされ、ビルドターゲットがWindowsであればPC版がアップロードされます。基本的にはこれだけです。アップロードが完了すると、コンテンツを表示する各クライアントはサーバーと以下のようにやり取りを行います。
「やあ、私はMeta Questだけど、このコンテンツが欲しい。」 「了解、これがVRChat Android版だよ。」
「やあ、私はVRChat PCユーザーだけど、このコンテンツが欲しい。」 「了解、これがVRChat PC版だよ。」
「やあ、私はVRChat iOSユーザーだけど、このコンテンツが欲しい。」 「了解、これがVRChat iOS版だよ。」
VRChatは現在、iOS向けのコンテンツフォールバックシステムを実験中です。ワールドがAndroidでは利用可能でiOSでは利用できない場合、VRChatはiOS上でAndroid版を読み込もうとします。
これは、Quest Content Limitations で概説されているように、主に Standard Lite シェーダーを使用しているコンテンツでうまく機能する傾向があります。最良の結果を得るには、SDKを使用してコンテンツのiOS版をアップロードすることを推奨します。
利用しているプラットフォームでアバターが利用できない場合、代わりに impostor avatar が表示されます。
利用しているプラットフォームでワールドが利用できない場合、そのワールドへのポータルに入ったり、UIから参加したりすることはできません。
ただし、Android版とPC版の両方があるワールドに参加し、インスタンス内にいる人たちがAndroid版とPC版の両方のアバターを使用している場合、自身のプラットフォームに適した状態でワールドが表示され、誰とでも問題なく交流できます!
アバターをクロスプラットフォームで正しく動作させるには、頭、手、足などの主要なボーンに対するアーマチュアのパスが、PC版とQuest版で同一である必要があります。さらに、「ルートボーン」(階層の最初のボーン)のスケールと回転は、両バージョンで同一である必要があります。
Android版とPC版のアバター間では、リギング(アーマチュア)がほぼ同一である必要があります。Android版のためにスカートや髪などの非本質的なボーンを削除することは問題ありませんが、アーマチュアレイアウトの基本構造を変更しないでください。変更すると、プラットフォーム間で表示した際に奇妙な挙動が発生します。
最も重要な点として、「ルートボーン」(ヒップなど)は Armature GameObjectの直後の階層の最初のボーンであるべきです。具体的には、「ルートボーン」のセットアップ(スケール、回転)が同一であれば、問題は発生しません。
ヒント
- VRChat PC版アバターには、VRChat Android版アバターでは使用できない多種多様な機能や装飾を盛り込むことができます。プラットフォームに応じて、ユーザーのクライアントに適したバージョンが自動的に表示されます。
- この仕組みを工夫して活用するのも良いでしょう。PCユーザー向けには高品質なモデルを使用し、Questユーザー向けには(スタイリッシュさを保ちつつ)軽量化した低ポリゴンモデルを用意するといった使い分けが可能です。
- PC版とQuest版のワールド両方で、複数の
box collidersまたは低ポリゴンのmesh colliderを定義し、通常のmesh colliderの代わりに使用するようにしてください。それらのコライダーを特定の座標にある空のGameObjectの子要素にしておけば、一方のプロジェクトで更新した際に、そのオブジェクトをもう一方のプロジェクトへ簡単にコピー&ペーストできます。これにより、プラットフォーム間でユーザーが「浮いて」見える現象を防ぐことができ、負荷が高く複雑な高頂点数のmesh colliderに起因する問題も回避できます。 - 透明(transparency)の使用は可能な限り避けてください。非常に負荷が高い処理です。
- 補足ですが、「alpha cutout」も透明処理としてカウントされます。
最終更新: