メインコンテンツまでスキップ

セットアップチュートリアル

1. アバターを準備する​

このチュートリアルではもふろうさんのBodyにContactFurを設定します。あなたのアバターで進める場合は、FurOwlをアバターのルート、Bodyをファーがあるメッシュの名前に読み替えてください。

完成までの流れ​

  1. 通常のlilToonファーが表示されることを確認します。
  2. Avatar Setupでメッシュと自分用接触を選びます。
  3. 設定済みPrefabを作り、生成されたアバターを確認します。
  4. Unity上で接触変形をプレビューし、VRChat上で接触条件を確認します。

アバターをシーンへ置く​

必要なアセットを導入したプロジェクトで、作業用のシーンを作成します。ProjectウィンドウからアバターのPrefabをHierarchyへドラッグしてください。もふろうさんではFurOwl.prefabを使用します。

Hierarchyでアバターのルートを選択し、InspectorにVRC Avatar Descriptorがあることを確認します。

Hierarchyでもふろうさんのルートを選択した状態。InspectorにVRC Avatar Descriptorが表示されている

ファーがあるメッシュを確認する​

アバターの子オブジェクトを展開し、ファー用マテリアルが設定されたRendererを探します。もふろうさんではBodyが対象で、Eyesは対象外です。Bodyにはファー用のBodyと通常のBlowマテリアルがあります。自動セットアップでは、ファーのない部分の見た目はそのままに、ファーのある部分へ接触変形を追加します。

もふろうさんでの名前あなたのアバターで確認するもの
FurOwlVRC Avatar Descriptorを持つアバターのルート
Bodyファーを表示するMesh Renderer / Skinned Mesh Renderer
BodyマテリアルlilToonのファー用マテリアル
Hand_L / Hand_R左右の手に対応するHumanoidボーン

ファーの長さ・色・毛並みは通常のlilToon設定で整えます。ContactFurを追加する前に見た目が正しいことを確認すると、接触変形だけを比較しやすくなります。

メッシュの名前が違っても大丈夫

名前がBodyである必要はありません。複数のファーメッシュがあれば、次の画面でまとめて選択できます。非アクティブなメッシュも検出されるため、衣装の切り替え用メッシュも確認してください。

2. ContactFurを設定する​

Avatar Setupを開く​

Hierarchyでアバターのルートを選択した状態で、Tools > Contact Fur > Avatar Setupを開きます。上部の「アバター」にもふろうさんが入っていることを確認してください。空欄なら、Hierarchyからアバターのルートをこの欄へドラッグします。

もふろうさんのBody、自分用Receiver、左右の手マスクを設定したAvatar Setup画面

ファーを使うメッシュを選ぶ​

「ファーを使うメッシュ」でBodyにチェックを入れます。あなたのアバターに複数の候補がある場合は、接触変形を追加したいメッシュだけを選びます。チェックを外したメッシュは変更されません。

マテリアルを変更した後に一覧へ反映されていない場合は「再検出」を押してください。候補が一つも出ない場合は、lilToonのファー用描画方式になっているか確認します。

自分からの接触を選ぶ​

他の人に触られたときだけ反応させるなら「自分用Receiverを使用する」をオフにします。自分の手でも触れたい場合はオンにしてください。この例ではオンにします。他人用Receiverは自動的に作られます。

手の自己接触をマスクする​

VRChatでは通常、手や指にContact Senderが自動設定されます。自分用Receiverを使うと、このSenderによって手指自身のファーまで反応してしまうことがあります。これを防ぎたい場合に「手のマスクを使用する」をオンにしてください。この例ではオンのまま、解像度1024で作成します。

Humanoidアバターでは左右の手を基準とした球体が初期配置されます。もふろうさんではHand_LとHand_Rが「基準Transform」に入ります。ただし、半径0.07 m・ぼかし幅0.04 mの初期値では、もふろうさんの手を覆うには小さいため、中心位置と範囲を調整してください。

  1. マスク領域の一覧で左手または右手の球体を選択します。
  2. Sceneビューで、球体が自己接触を避けたい手の部分を覆うか確認します。
  3. 「中心オフセット」「マスク領域の半径」「ぼかし幅」を調整します。Sceneビューのハンドルからも位置と半径を編集できます。

次の画像はもふろうさんの左右の手を覆うように調整した例です。中心オフセットは小数第3位に丸めて記載しています。

基準Transform中心オフセット X / Y / Zマスク領域の半径 (m)ぼかし幅 (m)
Hand_L0.004 / 0.256 / 0.0100.350.15
Hand_R-0.004 / 0.256 / 0.0150.350.15

同じ値を入力しても、アバターの大きさや姿勢によって覆う範囲は変わります。Sceneビューで手全体を覆っているか確認してください。

もふろうさんを上から見た手マスクの設定例。左右の手を覆うように球体の中心と範囲を調整している

手マスクで反応しない範囲に指定した部分は、自分からの接触には反応せず、他人からの接触には反応します。手マスクを省略すると自分からの接触も全面で有効になります。既存の共通マスクは引き継がれます。

手ボーンが自動設定されないとき

Humanoidでないアバターなどでは、球体を追加し、アバター内の手に相当するTransformを指定します。球体を置く位置はモデルごとに確認してください。

設定済みPrefabを作る​

「設定済みPrefabを作成」を押し、保存先としてAssets内のフォルダを選びます。たとえばAssets/MyAvatarsを選ぶと、その中に新しいFurOwl ContactFurフォルダが作成されます。同名のフォルダがあれば別名になります。

FurOwl ContactFur/
├─ FurOwl ContactFur.prefab
├─ Materials/
│ └─ Body_0_Body.mat
└─ Masks/
└─ Body_0_SelfMask.png

生成後、設定済みアバターがシーンに配置されて選択されます。シーン上の元アバターと同じ位置・向きに配置され、元アバターは自動で非アクティブになります。Undoすると配置が取り消され、元アバターの有効状態も戻ります。以降は生成されたFurOwl ContactFurを使います。

元アバターのメッシュ・マテリアル・コンポーネント設定は変更されません。マスクを使わない場合、Masksは作成されません。

生成結果を確認する​

アバター配下にContactFur SetupとContactFur Toggleが作成されます。もふろうさんの例では次の構成になります。

FurOwl ContactFur
├─ Armature
├─ Body
├─ Eyes
├─ Anchor Target
├─ ContactFur Setup
│ ├─ Body Contacts
│ │ ├─ Fur Receiver
│ │ └─ FurSelf Receiver
│ └─ Body Mask 0
└─ ContactFur Toggle

Fur Receiverを選択すると、他人から受け取る設定を確認できます。撮影したSDKではREADMEの「Write to Shaders」に相当する項目がWrite to Materialsと表示されています。

生成された他人用Receiver。Allow Others、Write to Materials、Shader Parameter OverrideのFurを確認できる

確認する項目他人用自分用
Receiver TypeProximityProximity
Write to Materials / Write to Shadersオンオン
Shader Parameter OverrideFurFurSelf
Allow Selfオフオン
Allow Othersオンオフ
Target RenderersBodyBody

3. 触れたときの動きを確認する​

Unityでプレビューする​

Unityの再生ボタンを押さず、編集モードのまま進めます。

  1. Hierarchyで空のGameObjectを作り、Contact Preview Senderなどの名前を付けます。アバターの子にする必要はありません。
  2. Tools > Contact Fur > Material Contact Previewを開きます。
  3. 生成されたアバターのBodyを「ファーのRenderer」へドラッグします。元アバターのBodyと間違えないようにしてください。
  4. 空のGameObjectを「Sender 1」へドラッグします。
  5. 接触元を「他人」にして「プレビュー開始」を押します。
  6. SceneビューでSenderをもふろうさんの胸元へ動かし、表面に近づけます。

もふろうさんのBodyとContact Preview Senderを指定した接触プレビュー画面

指定したGameObjectを動かすと、接触させる位置を変えられます。UnityのこのプレビューだけならVRC Contact Senderコンポーネントは不要です。最大8か所の接触を同時に確認できます。

毛倒しとかき分けを見る​

接触点の中心では毛並みに沿って毛が倒れ、外周では外向きにかき分けられます。Senderを表面から離し、通常の毛並みへ戻ることも確認してください。小さな変化はSceneビューを拡大すると見やすくなります。

もふろうさんの頬付近に接触点を置き、毛倒しとかき分けを確認しているUnity Sceneビューとプレビュー画面

変形が弱い・広すぎる場合は、複製されたマテリアルを選び、Inspector末尾の「ファー拡張設定」から「Material Contact ファー設定」を開きます。まず「接触半径」と「倒す強さ」「かき分けの強さ」を調整してください。詳しくはパラメーターを参照してください。

自分用マスクを確かめる​

プレビュー中も「他人」と「自分」を切り替えられます。Senderをマスクで除外した手の表面へ移動し、「自分」では反応が抑えられ、「他人」では反応することを確認します。どちらの接触元でも反応しない部分があれば、共通マスクも確認してください。

確認後は「停止/元に戻す」を押します。プレビューウィンドウを閉じたときや再生を開始したときも停止します。

VRChatで確認する​

Unityプレビューでは触れたときの毛の動きを確認できます。実際に自分や他のユーザーの手で触れたときに反応するかは、VRChat上で確認してください。

生成されたアバターを、普段のVRChat SDKの手順でビルド・アップロードし、Material Contacts対応クライアントで次を確認してください。

  • 自分の手で触れたときに反応すること。自分用Receiverを使わない構成では反応しないこと。
  • 他のユーザーから触れられたときに反応すること。
  • 手マスクで除外した部分が、自分と他人で意図した反応になること。
  • Expression MenuのContactFurで接触変形をオン・オフできること。

触れる側のContact SenderとReceiverでCollision Tagsを一致させます。Unityプレビューで動いてVRChatで動かない場合は、トラブルシューティングへ進んでください。