UdonHatのつかいかた

UdonHatはUdonで書かれたVRChatワールド用のギミックです。 帽子や眼鏡、髪飾りなどの頭部に着けるアクセサリーのモデルにUdonHatを組み込むと、着られるギミックとしてワールドに置けるようになります。

sandman.booth.pm

ざらしうむさんの夏物帽子やアクセサリーを試着できるワールド「UdonHat,SUMMER」や、きんととさんの「VRoidのお話まったりしよう会」の会場ワールドで使ってもらいました。

このドキュメントでは帽子のモデルはすでに用意していると仮定して、その帽子のモデルにUdonHatを組み込んでワールドに置く作業を順番に説明します。

帽子は持ってないけどUdonHatがどんなものかとりあえず試してみたい方は、UdonHatにはサンプルの帽子のモデルがUdonHat/Sampleに入っているのでそちらを使ってください。このモデルはP_StoreのPoppoさんがCC0で公開しているモデルを元にしています。

booth.pm

!!!!注意!!!!

帽子のモデルを組み込んだワールドをVRChatにアップロードすることはその帽子のモデルの利用規約に違反する場合があります。特に個人が利用するアバターに付属させた状態でアップロードすることは許可されていても、UdonHatギミックのように不特定多数のユーザーが使用できる状態でアップロードすることは禁止されている場合があります。アップロードする前に必ず利用規約を確認し、アップロード可能か不明な場合は作者さんに確認を取るなど適切な対応をしてください。

UdonHatを組み込む

VRChat SDK3(アバター用のものではなく、ワールド用のもの)とUdonSharpがインポート済みのUnityのプロジェクトを用意します。

UdonSharpはこちらのリンクから最新のリリース(Pre releaseではなくLatest releaseです)をダウンロードしてください。

github.com

なお、VRChat SDK3をインポートしてからUdonSharpをインポートするように注意してください。

Unityプロジェクトを開いて、Assets ー> Import Package -> Custom PackageでUdonHatのパッケージをインポートします。

インポートが終わったら、Window -> UdonHat Editorを選択してUdonHatのエディタウィンドウを開きます。

f:id:sandman73773941:20210623183148p:plain

Create New Settingsを押してUdonHatの設定を保存するSettingsファイルを作成します。帽子ごとにSettingsファイルを分けておくと、後でSettingsを指定することで帽子ごとに一括で設定を読み込むことができます。

f:id:sandman73773941:20210623183209p:plain

f:id:sandman73773941:20210623183236p:plain

Settingsファイルを作成すると、Settingsに自動でそのファイルがセットされます。

f:id:sandman73773941:20210623183253p:plain

いきなりエラーが出ていますが、これは帽子のモデルをまだ指定していないからです。帽子のモデルのプレハブをTarget Hatにドラッグドロップします。(帽子のモデルを用意していない場合は、Sampleディレクトリにお試し用の帽子モデルを置いてあるのでそちらを使ってください)

そうするとエラーが消えて各種項目が表示され、Create New Instanceボタンが押せるようになります。

f:id:sandman73773941:20210623183316p:plain

Create New Instanceボタンを押して、シーンにUdonHatが組み込まれた帽子のギミックを置きます。この時、ヒエラルキー内のTransformを選択しておくと、そのTransformの場所にそのTransformの子要素として置きます。選択しなかった場合はSceneの原点に置きます。

f:id:sandman73773941:20210623183344p:plain

f:id:sandman73773941:20210623183359p:plain

VRChatSDKのWindowでBuild & Testを押して動作確認します。帽子をピックアップして使用すると帽子がアバターの頭部に固定されて、帽子がうまくアバターに追従していれば完了です。

UdonHatのマテリアル設定

UdonHatには帽子のマテリアルを切り替える機能があります。この機能を使っていわゆる帽子のカラバリを設定できます。UdonHatEditorのMaterials以下の項目でこの設定を行います。 現状、切り替えられるマテリアルはひとつです。

設定する手順は以下のとおりです。

  1. Target Mesh Renderer Nameで切り替えたいマテリアルを使用しているMeshRendererの名前を指定してください。

  2. Target Material Indexで切り替えたいマテリアルを指定してください。

  3. Material Numで切り替えられるマテリアルの種類の数を設定します。デフォルトは3に設定しています。

  4. Initial Material Indexでどのマテリアルを最初に使用するかを指定します。

  5. 切り替える別のマテリアルをmaterials[1]やmaterials[2]にドラッグドロップしてください。なお、material[0]は帽子のプレハブで設定されているマテリアルが自動で設定されます。設定されていないマテリアルは単に無視されます。

これでCreateすると調整パネルの右上のMaterialボタンでマテリアルを切り替えられるようになります。

UdonHatのオプション設定

UdonHatのエディタウィンドウにはTarget Hat以外にもオプションがあります。

Hat Name

調整パネルに表示される帽子の名前を設定します。デフォルトではTarget Hatの名前が設定されます。

Attach Sound

帽子を着たとき(=帽子ギミックをアバターに取り付けたとき)の効果音を設定します。

Detach Sound

帽子を脱いだとき(=帽子ギミックをアバターから取り外したとき)の効果音を設定します。

Reset Sound

調整した値をリセットしたときの効果音を設定します。

ChangeMaterial Sound

マテリアルを切り替えたときの効果音を設定します。

Close Sound

調整パネルを閉じたときの効果音を設定します。

Proxymity

帽子ギミックのコライダーにインタラクトできる距離を設定します。

ResetTransformThreshold

UdonHatはある帽子ギミックを最後に触ったプレイヤーがその帽子ギミックから一定時間離れた状態で一定時間が経過すると帽子ギミックのTransformをリセットします。この項目ではその設定を行います。

Distance

ここで設定した距離以上離れると時間のカウントを開始します。

Sec

リセットされるまでの秒数を設定します。

CloseEditorPanelDistance

ここで設定した距離以上プレイヤーが調整パネルから離れると調整パネルを閉じます。

その他のおまけ

UdonHatパッケージにはいくつかのおまけが付属しています。必要に応じて活用してください。

ギミックの説明用ポスター

f:id:sandman73773941:20210623183437p:plain

f:id:sandman73773941:20210623183453p:plain

UdonHatギミックの説明用ポスターです。UdonHat/Prefabs/Textures にあります。AttachとDetachのためのポスターがあります。どちらもライセンスはCC0です。これらは東京アザラシセンターのあざらしうむさんが作成してくれました。感謝します。

UdonHat用の拡張メニュー

f:id:sandman73773941:20210623183710p:plain

プレハブはUdonHat/Prefabs/UdonHatExtraMenu.prefab です。 VRChatのメニュー呼び出しで一緒に表示されるUdonHat用の拡張メニューです。Detachのやりかたの説明とDetachボタンが付属しています。

位置はどこでもいいのでSceneの中に置いてください。 Sceneに置いたUdonHatExtraMenuのUdonBehaviourコンポーネントのUdonHatRootTransformに、UdonHatの入った帽子を子要素以下の要素(つまり孫要素やひ孫要素でもOK)として含むTransformを指定してください。含まれているUdonHatについてDetachボタンでDetachできるようになります。

EmergencyDetachButton

f:id:sandman73773941:20210623183739p:plain

プレハブはUdonHat/Prefabs/EmergencyDetachButton.prefab です。 Interactすることで帽子をDetachできるボタンです。UdonHat用の拡張メニューと同様に、UdonBehaviourコンポーネントのUdonHatRootTransformに対象のUdonHat帽子ギミックを含むTransformを設定してください。