バーチャル3Dクリエイター神部まゆみです(*^-^*)
この記事はVRChat Udonワールドの作り方を公式動画で学んでみたのでそのメモです。
私の部屋をVRChatで作っているので、Udonを学んで色々動かしたりできるようになりたいですね。
動作確認した最新バージョンは Unity 2022.3.22、VRChat SDK 3.8.2 です。
VRChat Udonとは?
VRChat公式ドキュメントによると、
VRChat Udonは、VRChat開発チームによって完全に社内で構築されたプログラミング言語です。これは、ノードとワイヤー(「麺」と呼びます)を使用してフロー、入力、出力を接続する組み込みのビジュアルプログラミングインターフェイスであるVRChatうどんノードグラフを介して、安全でパフォーマンスが高く、使いやすいように設計されています。

↓こんな感じでノード(節)をワイヤーで繋いでプログラミングしていく感じ。


ワイヤーが麺(noodles)に似ているからUdonなんだと思う。多分。
パスタとかフォーじゃダメなのかと思ったけど、VRChat運営には日本びいきの人がいたのかもしれない。
SobaやRamenよりもUdonが好きだったのだろう(笑)。
公式動画で学ぶ
VRChat Udonを学ぶのは初めてなので、公式の動画で学んでみます。
英語なので自動翻訳で(;^_^A
実際にやってみたので要点メモとか
~1:00くらい Udonサンプルシーンを開く
ここにあった。


シーン全体のオブジェクトはこんな感じ。


これグレーアウトしてあるやつは、ワールドで切り替えるインターフェースが出てきて、切り替えるとオンになるやつだと思う。
↓これね


矢印を押すと切り替えられる。


これどうしようかな…一個一個のオブジェクトのコンポーネントを見ていって読み解くほうがいいのかな?この動画6分しかないし(-_-;)
まぁとりあえず動画の通り見てみます。
1:00~ VRC Worldを見てみる
scene descriptorと、blueprintIDを管理するパイプラインマネージャー、udon behaviorがある。


udon graphを開くと、変なノードグラフが出てくる。


複雑すぎてワケワカメΣ(゚Д゚)
Udonノードの構成要素
これミラーシステムのやつも見てみたけど、Udon Graphはどうやら
- variables(変数)
- Events
- Groups
の三つで構成されてるっぽい?
こちらのVRChat公式のページが詳しいです。

variables
variablesはおなじみのpublic変数だから分かりやすい。


コンポーネントをUdon GraphにD&Dすると追加できる。


event
eventは、ミラーシステムはtoggleになってたから行動みたいな感じ?この場合はstartだから初めに実行されるやつなんだと思う。
+ボタンを押したら一覧が出てきて追加できた。


Groups
Groupsは動作ごとにまとめておける感じ?フォルダに近いかもしれない。


右の●をD&Dするとノードを検索できる
こうやって変数やイベントをつなげていく感じ?


検索すると出てくるノード?はVRCって頭についてるやつと、unityengineって書いてあるやつがある。


unityengineって書いてあるやつはunity公式のスクリプト?みたいだから、スクリプトリファレンス見たら載ってた。
説明はこっちを参照したほうがいいかもしれない。

VRCって頭についてるやつは数が少ないから、VRChatの公式ドキュメントで解説部分を探すしかないかも。

とりあえず変数を変えて歩行スピードを変えてみる


じゃあせっかくだから10に変えてやってみるか…。


おおめっちゃ速くなった!
number of clientを2にすると複窓で開けるっぽい
VRChatワールドをアップロードするメニューのやつ。


あと↓ここでsteamのVRChat.exe?を指定しておく必要があった。


ここいじらないとエラーが出てダメだった。


複数窓でVRChatが起動するのでテストとかできるっぽい。
へーこんなのができるのか。


動かしたオブジェクトが他のユーザーにも反映されているか、などのSyncテストを行う時に複数窓で開くと便利です。
などをやっていたら動画終わった。
今回は最初だから触り程度かな(;^_^A
せっかくなのでUdonノードをいじって動作テストをしてみる
キャンバスを配置して、Udonでオブジェクト名を取得、オブジェクト名をキャンバスに表示するっていう簡単な動作をさせてみる。
キャンバスの下にパネルを追加、パネルはTextコンポーネントを持ってる。
試しにMaincameraのオブジェクト名を取得して、パネルにSet textでオブジェクト名を代入してみた。


何故かSet textが検索しても出てこなかったので、サンプルのchooserからコピペしてきた。
ノードのリファレンスみたいなのがあればいいけど、VRChat公式ドキュメントを見たけどないっぽい?
これでtestと書いてあるキャンバスが…


再生ボタン押したらMaincameraに書き変わった!


キャンバスのサイズが小さいのでMainまでしか表示されてないけど(;^_^A
でもこういう感じでできるんだ。へー。
慣れれば結構自由に作れそうな気がする。
トグルを設置して変えられるようにする
トグルを追加して制御できるようにしてみました。


しかしこれだと一方通行なので、testの文字列も変数で格納しておかないとダメか(;^_^A


これならインスペクターオンオフで切り替えのほうがいいかもしれない。
まぁとりあえずテストなので(;^_^A
つづく?
初めて触ってみたけど、慣れれば簡単なギミックくらいなら作れそうかな?
まぁゲームワールド作るとかじゃなければそこまで難しくはないのかもしれない。
もうちょっといじってみます(*^-^*)
追記:続きを書きました!





