UdonHatはUdonで書かれたVRChatワールド用のギミックです。 帽子や眼鏡、髪飾りなどの頭部に着けるアクセサリーのモデルにUdonHatを組み込むと、着られるギミックとしてワールドに置けるようになります。
あざらしうむさんの夏物帽子やアクセサリーを試着できるワールド「UdonHat,SUMMER」や、きんととさんの「VRoidのお話まったりしよう会」の会場ワールドで使ってもらいました。
UdonHat‚ SUMMER
— エゾの民 「 ゆきかの 」🦊VRChat画像芝居師 (@yukikano1192) May 31, 2021
1
試着世界だよー
帽子、眼鏡等 ←文字だけ見たら免許w
2
恥ずかしくなる程、似合わないね
3
VRは、ぼうけ(自主規制) ←そのボケはNGw
4
紺色の帽子っ
これ、親和性高過ぎっ
全く違和感無しっ ←眼鏡の紹介は、どーしたw#VRChat_world紹介#VRChatワールド紹介 pic.twitter.com/By7bomNIvc
帽子やサングラスの試着出来るワールドでした、サイズ変更や位置の微調整が出来て結構ちゃんと装着できていて良い感じ(^^)v
— POP_Cat_iris (@POP_PhotoCat) June 1, 2021
UdonHat‚ SUMMER pic.twitter.com/qB6eI6OU5f
昨日のとっておきは新しい試着ギミック「UdonHat」でした! VRoidFashionMallでも協力してくれたSandmanさん(@sandman73773941)の新作で頭につけるアクセサリー類をアバターに追従させることができます!✨
— きんとと@6月はVRoid集会コラボ! (@goldenpenguin3) June 20, 2021
近日公開とのことなのでぜひお試しあれ!!#VRoidのお話まったりしよう会 #VRChat #UdonHat https://t.co/XeC7xNPJly pic.twitter.com/pdi4R9VNFo
このドキュメントでは帽子のモデルはすでに用意していると仮定して、その帽子のモデルにUdonHatを組み込んでワールドに置く作業を順番に説明します。
帽子は持ってないけどUdonHatがどんなものかとりあえず試してみたい方は、UdonHatにはサンプルの帽子のモデルがUdonHat/Sampleに入っているのでそちらを使ってください。このモデルはP_StoreのPoppoさんがCC0で公開しているモデルを元にしています。
!!!!注意!!!!
帽子のモデルを組み込んだワールドをVRChatにアップロードすることはその帽子のモデルの利用規約に違反する場合があります。特に個人が利用するアバターに付属させた状態でアップロードすることは許可されていても、UdonHatギミックのように不特定多数のユーザーが使用できる状態でアップロードすることは禁止されている場合があります。アップロードする前に必ず利用規約を確認し、アップロード可能か不明な場合は作者さんに確認を取るなど適切な対応をしてください。
UdonHatを組み込む
VRChat SDK3(アバター用のものではなく、ワールド用のもの)とUdonSharpがインポート済みのUnityのプロジェクトを用意します。
UdonSharpはこちらのリンクから最新のリリース(Pre releaseではなくLatest releaseです)をダウンロードしてください。
なお、VRChat SDK3をインポートしてからUdonSharpをインポートするように注意してください。
Unityプロジェクトを開いて、Assets ー> Import Package -> Custom PackageでUdonHatのパッケージをインポートします。
インポートが終わったら、Window -> UdonHat Editorを選択してUdonHatのエディタウィンドウを開きます。
Create New Settingsを押してUdonHatの設定を保存するSettingsファイルを作成します。帽子ごとにSettingsファイルを分けておくと、後でSettingsを指定することで帽子ごとに一括で設定を読み込むことができます。
Settingsファイルを作成すると、Settingsに自動でそのファイルがセットされます。
いきなりエラーが出ていますが、これは帽子のモデルをまだ指定していないからです。帽子のモデルのプレハブをTarget Hatにドラッグドロップします。(帽子のモデルを用意していない場合は、Sampleディレクトリにお試し用の帽子モデルを置いてあるのでそちらを使ってください)
そうするとエラーが消えて各種項目が表示され、Create New Instanceボタンが押せるようになります。
Create New Instanceボタンを押して、シーンにUdonHatが組み込まれた帽子のギミックを置きます。この時、ヒエラルキー内のTransformを選択しておくと、そのTransformの場所にそのTransformの子要素として置きます。選択しなかった場合はSceneの原点に置きます。
VRChatSDKのWindowでBuild & Testを押して動作確認します。帽子をピックアップして使用すると帽子がアバターの頭部に固定されて、帽子がうまくアバターに追従していれば完了です。
UdonHatのマテリアル設定
UdonHatには帽子のマテリアルを切り替える機能があります。この機能を使っていわゆる帽子のカラバリを設定できます。UdonHatEditorのMaterials以下の項目でこの設定を行います。 現状、切り替えられるマテリアルはひとつです。
設定する手順は以下のとおりです。
Target Mesh Renderer Nameで切り替えたいマテリアルを使用しているMeshRendererの名前を指定してください。
Target Material Indexで切り替えたいマテリアルを指定してください。
Material Numで切り替えられるマテリアルの種類の数を設定します。デフォルトは3に設定しています。
Initial Material Indexでどのマテリアルを最初に使用するかを指定します。
切り替える別のマテリアルを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パッケージにはいくつかのおまけが付属しています。必要に応じて活用してください。
ギミックの説明用ポスター
UdonHatギミックの説明用ポスターです。UdonHat/Prefabs/Textures
にあります。AttachとDetachのためのポスターがあります。どちらもライセンスはCC0です。これらは東京アザラシセンターのあざらしうむさんが作成してくれました。感謝します。
UdonHat用の拡張メニュー
プレハブはUdonHat/Prefabs/UdonHatExtraMenu.prefab
です。
VRChatのメニュー呼び出しで一緒に表示されるUdonHat用の拡張メニューです。Detachのやりかたの説明とDetachボタンが付属しています。
位置はどこでもいいのでSceneの中に置いてください。 Sceneに置いたUdonHatExtraMenuのUdonBehaviourコンポーネントのUdonHatRootTransformに、UdonHatの入った帽子を子要素以下の要素(つまり孫要素やひ孫要素でもOK)として含むTransformを指定してください。含まれているUdonHatについてDetachボタンでDetachできるようになります。
EmergencyDetachButton
プレハブはUdonHat/Prefabs/EmergencyDetachButton.prefab
です。
Interactすることで帽子をDetachできるボタンです。UdonHat用の拡張メニューと同様に、UdonBehaviourコンポーネントのUdonHatRootTransformに対象のUdonHat帽子ギミックを含むTransformを設定してください。