背景
最近Udonsharpについて触れるようになり、こんなワールドを作るようになりました。
https://vrchat.com/home/world/wrld_d5b2d4f4-d2ac-4be5-a356-c28c24e8072e
そろそろ覚書したいことも増えてきたため、このような形にQiitaに書き留めていきます。
まずははじめの一歩として、ワールドひな型の手順を簡潔に覚書。
2024/11/30 追記
2022年8月31日にVCC(VRChat Creator Companion)がリリースされ、今後はVCCによるワールド制作がデフォルト手法となりました。
これにより、別途にudonsharpをインストールをする必要が消え、VRCSDKと一緒に自動でインストールされるようになりました。このため、本記事の1章~3.2章までの工程は古い時代のものとなっています。
4章以降の工程は現在もそのままなぞることができます。
(不要な工程の部分は近いうちにきちんと改定します。)
本記事の前提
- 自身がVRCユーザであり、TrustRunkがUser以上である
- VRCでワールドを上げたことがない。ひな型を上げるまでの流れが知りたい
- アバターを上げたことはあり、なんとなくUnityの操作を知っている
本記事の目的・概要
- VRCSDKのダウンロード・インポート
- VRC Worldのひな型系の作成
- Udonsharpのダウンロード・インポート / 簡単なスクリプトの作成
- ワールドひな型のアップロード
(想定作業時間) ~30分
記事について、記載していく内容について
誤り・改善等ありましたらコメントをお願いします
1. VRCSDKのダウンロード
https://vrchat.com/home/download
上記ページより、VRCSDKをダウンロード。
アバター・ワールドでそれぞれunitypackageが別れている。VRChat Worlds のものをダウンロード
2. UdonSharpのダウンロード
https://github.com/MerlinVR/UdonSharp/releases
上記リポジトリのページより、最新のunitypackageをダウンロードする。
udon/udonsharpについての概略については 下記ページなどを参考にするとよいと思います。
UdonSharp は、C# を Udon アセンブリにコンパイルするコンパイラです。UdonSharp は現在、C# 言語仕様のどのバージョンにも準拠していないため、実装されていないものや動作しないものが多数あります。
3. VRC Worldのひな型系の作成
3-1 VRCSDKのインポート
「VRCSDKのダウンロード」にてダウンロードしたunitypackageをダブルクリックし、AssetをImportする。
3-2 udonsharpのインポート
「Udonsharpのダウンロード」にてダウンロードしたunitypackageをダブルクリックし、AssetをImportする
これでごく最低限、必要なものが整いました
4. ワールドひな型のアップロード
ここでは、下記の要素を備えた最低限のワールドひな型としてのSceneを作成し、VRCSDKを用いてアップロードまですることを目的とします
足場の作成
足場を作成しなければ、永遠に落ち続けるため移動すらままならないため、まずはこれを作成します。
最初に、全てのオブジェクトを紐づけるためのEmpty(空オブジェクト)となるworld
を、メニューバーの「Create Empty」より作成します。
この配下に同じくメニューバーの「GameObject」>「3D Object」から 「plane」を選択し配置します。
リスポーン地点の作成(VRCworld)
Assets/VRChat Examples/Prefabs
を参照し、その中のVRCWorld
をヒエラルキー上に配置します。
このアセットの位置・視点がそのままリスポーン時の情報となります。
(下記画像では、青(z)軸の向きに顔を向ける形でリスポーンするようになります)
また、このVRCWorldには pipeline manager
と同様に、VRCSceneDiscripter
というComponentが紐づいています。
AvatarのアップロードにおけるVRCAvatarDiscriper
と同様で、ここにVRCへのアップロード対象となるワールドの情報・紐づくマテリアルの情報などが記載されます。
(ここ以外に複数のSceneDiscripterやpipeline managerを記載していると、アップロードに不具合がでることがありました。意図しない挙動を示した際は、この情報が手引きとなることがあるかもしれません)
このタイミングでは、Unity Version
として2018の物が記載されていますが、手動で変更する必要はありません。
後述する VRChat Scene Setup
にて 自動で今使用しているUnityのバージョン情報へ変換されます。
udon behaviorのテスト
ここでは、入室音として簡単なudonの挙動をテストします。
(参考: https://qiita.com/Milcia/items/242b240816a03fc9928e)
udon scriptの作成
この配下に、Udon C# Program Asset
をCreateします
次に、このAssetに紐づくudonsharpのソースファイルを作成します
assetファイルのInspectorより、Create Script
を押下し、Scriptフォルダへcsファイルを作成します。
(ファイル名称はいいように変えておきましょう。今回はEnteringSound
としました。)
そして実際に、このcsファイルにudonの挙動を記載していきます
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
using VRC.Udon;
public class EnteringSound : UdonSharpBehaviour
{
//音声ファイル変数。
public AudioSource audioSource;
//「紐づけたアセットが読み込まれたとき」の動き
void Start()
{
//unityから別途紐づけたAudioSourceファイルを読み込む
audioSource = GetComponent<AudioSource>();
audioSource.Play();
}
}
最後に、このudon scriptをscene上のオブジェクトに紐づけ、実際に動きがもたせられるようにします。
今回は入室音としての動きなので、world
に対し、下記のようにudon behavior componentを紐づけます
この「Program Source」の部分へ、先ほど作成した EnteringSound.asset
ファイルをD&Dし、紐づけてください
紐づけに成功すると、このような表示になります
ここまでのヒエラルキーの構造・Script配下の中身は 下記画像の通りです
AudioSourceファイルの作成
入室音となる音声素材を作成します。
mp3の入手
https://soundeffect-lab.info/sound/voice/line-girl1.html
こちらより、任意の好きなファイルをDLします。(筆者は「こんばんは」をDLしました)
とりあえずはどこにおいても良いですが、ひとまずはAssets/Script
へ配置します
audioSourceファイルとして利用
world
のヒエラルキー上にCreate Emptyし、ここにAudio Source
Componentを紐づけます
この後、AudioClip
の部分へ、先ほどの音声素材をD&Dしてください。
最後に、Worldのudon behaviorへこのAudio Sourceを紐づければOKです
VRChat Scene Setup
初回作成時、VRCSDKが下記のような表示を出すことがあります。
VRCに適したSceneの設定を自動で行ってくれるための表示で、特別な意図がなければこのままSetup Layers -> Do it!を押下してください
↓
ローカルビルド + テスト
「とりあえず意図通り動いてるか確認したい」程度の目的であれば、ワールドをVRCに上げずとも、自身のローカル環境で挙動を確認することができます。
下記 Build & Test
をクリックし、VRC Clientを起動してください
このように、VRChatで作成中のワールドを起動させることができます。
「こんばんは」と音がすれば 挙動はOK!
後はアバターと同じように アップロードしちゃいましょう
今後の予定
気が向けば、Udonsharpに関する他の記事(Canvasを使ったUIの作成 / 麻雀ワールドに関するもろもろなど)を記載していきます...!