キャラクター
キャラクターはWarudoの核となる部分です。Warudoは標準のVRMモデル形式をサポートしています。モデル形式がVRMでない場合(例えばMMDやVRChatモデルなど)は、Mod SDKを使用して.warudo
形式にエクスポートし、Warudoに読み込むことができます。
キャラクターファイルは、Warudoのデータフォルダの Characters
サブフォルダに配置する必要があります。
データフォルダが見つかりませんか?[メニュー] → [データフォルダを開く] をクリックして開きます。
設定
デフォルトでは、シーンにはすでにキャラクターが存在します。新しいキャラクターを追加するには、[アセットを追加する] メニューを使用します。
キャラクターを設定するには、[初心者ナビ] → [基本設定] → [始める] を使用することをおすすめします。これにより、キャラクターファイルのインポート、モーション キャプチャの設定、VRM表情のインポートが自動的に行われます。
または、キャラクターアセットで [ソース] を選択し、 [モーションキャプチャーの設定] をクリックしてモーションキャプチャを設定し、 [VRM表情のインポート] をクリックしてVRM表情をインポートすることで、手動でキャラクターをセット設定することもできます。
モーションキャプチャ
キャラクターのモーションキャプチャを設定するには、モーションキャプチャページを参照してください。モーションキャプチャを設定すると、トラッキングのキャリブレーションを行なったり、キャラクターアセット内で特定のトラッキングブループリントにアクセスできるようになります。
クイックキャリブレーションとブループリントナビゲーションパネル
表情
表情は、顔のトラッキングに加えてキャラクターの表情を制御する方法です。キャラクターアセットは、 VRM Expression(VRM BlendShape)とカスタム表情の両方をサポートしています。
基本設定で、WarudoはキャラクターのすべてのVRM Expressionを自動的にインポートし、それらのホットキーを追加するためのブループリントが生成されます。また、[VRM表情のインポート] をクリックしてVRM Expressionを手動でインポートしたり、 [キーバインドブループリントの生成] をクリックしてキーバインドのブループリントを生成することもできます。
.warudo
モデルを使用している場合でも、GameObjectにVRMBlendShapeProxy
コンポーネントがあれば、WarudoはVRM Expressionをインポートすることができます。
表情リストの各表情を展開して、[キャラクターに表情をフェード] でプレビューしながら、設定をカスタマイズできます。
表情を拡張します
ブループリント内での識別に使用される表情の [名前] を設定できます。表情の [レイヤー] を設定することもできます。表情を切り替えると、同じレイヤーの表情はフェードアウトしますが、異なるレイヤーの表情は重ね合わせることができます。
VRM Expressionをインポートする場合、VRMモデル内のデフォルトの BlendShape (Joy、Angry、Sorrow、Fun/Surprised) はレイヤー 0 に配置され、モデラーによって追加されたBlendShapeはレイヤー 1、2、3 などに配置されます。
表情によってモデルの目がすでに閉じている場合は、それ以上目を閉じないようにするために、 [瞬きトラッキングを無効化] すると良いでしょう。同様に、[口元トラッキングを無効にする] オプションと [眉毛トラッキングを無効にする] オプションを使用すると、口と眉のBlendShapeがフェイストラッキングによって制御されるのを防ぐことができます。
[ターゲットBlendShapeリスト] には、この表情がアクティブなときに制御されるすべてのBlendShapeが含まれています。このリストからBlendShapeを追加または削除したり、BlendShapeごとに [目標値] 、[フェード時間]、[フェードインイージング]、[フェードイン遅延]、[フェードアウト時間]、[フェードアウトイージング]、 [フェードアウト遅延] をカスタマイズすることができます。
デフォルトでは、Warudoは表情の切り替え時に0.4秒のフェードインとフェードアウトの遅延を発生させます。各BlendShapeの [フェードイン遅延] と [フェードアウト遅延] は、[ターゲットBlendShapeリスト] からカスタマイズできます。また、フェードを完全に無効にしたい場合は、[2値のみ] オプションを有効にします。
トリガー条件
表情は通常ホットキーによってトリガーされますが、フェイストラッキングだけで表情をトリガーすることもできます!
設定するには、トリガー条件(Trigger Conditions)リストに新しいエントリを追加します。表情トリガーの条件(Conditions)を設定し、必要に応じてその他のオプションをカスタマイズします。たとえば、以下の設定では、mouthSmileLeft
とmouthSmileRight
のBlendShapeの両方が 0.5 より大きい場合に表情をトリガーします。
Trigger Conditionsリストには、複数のエントリを設定できます。エントリ内のいずれかの条件(Conditions)が満たされると、表情がトリガーされます。
条件は、フェイストラッキングのBlendShapeではなく、モデルのBlendShapeに基づいていることに注意してください。ARKit対応モデルを使用している場合は、条件としてARKit BlendShapeを選択するだけです。それ以外の場合は、使用しているフェイストラッキングに対応するモデルのBlendShapeを見つける必要がある場合があります。
高度な設定
ターゲットマテリアルプロパティリストには、この表情で制御されるUnityマテリアルプロパティが含まれています。マテリアル名とプロパティ名を事前に知っておく必要があることに注意してください。これらはUnityで確認できます。
制限付きBlendShapeリストには、この表情がアクティブなときに制限されるすべてのBlendShapeが含まれています。BlendShapeを制限すると、キャラクターの表情を正確に制御し、BlendShape間の遷移が常にスムーズになるようにすることができます。たとえば、表情がアクティブなときにモデルの口が一定量以上開かないようにしたい場合は、このリストに新しいエントリを追加し、制約されたBlendShapeを口のBlendShape(例: JawOpen
)に設定し、制限の最小値と制限の最大値を希望の範囲(例: 0 ~ 0.5)に設定します。
オプションとして、制限BlendShapeを設定して、制約されたBlendShapeとの間にマッピングを確立することができます。例えば、以下の設定では、JawOpen
のBlendShapeの値がSmile
のBlendShapeの値に従い、Smile
が0のときはJawOpen
が0から1の範囲で変動し、Smile
が1のときはJawOpen
が0から0.25の範囲で制限されます。
JawOpen
のBlendShapeを制限します
GameObjectを切り替えるリストには、この表情がアクティブなときに切り替えられるすべての子GameObjectが含まれています。例えば、キャラクターが笑っているときにパーティクルエフェクトの表示を切り替えるために使用できます。
最後に、表情リストの下には表情もフェイストラッキングもアクティブでないときに使用される、デフォルトのBlendShapeリストと既定のマテリアルプロパティがあります。
アニメーション
Warudoは、キャラクターのアニメーション再生をサポートしています。さらに、MediaPipeやRhyLiveなどの互換性のある上半身トラッキングブループリントを使用している場合、アニメーションはモーションキャプチャと自動的にブレンドされ、リスナーと楽しく親密な交流をすることができます。
ここでは、上半身の曲げはスタンバイアニメーションから取得され、頭と手の動きはモーションキャプチャから取得されます。手のトラッキングが失われると、アバターの手はスムーズにスタンバイアニメーションに移行します。
Warudoには、3種類のアニメーションがあります。
-
スタンバイアニメーション: 他のアニメーションが再生されていないときに再生される デフォルトのアニメーション。
スタンバイアニメーションを選択します
-
オーバーレイアニメーション: スタンバイアニメーションの上に重ねて再生されるアニメーション。
例えば、[ネコ] アニメーションが気に入っていて、それを使用したいとします。しかし、キャラクターをベッドに座らせたいとも考えています。この2つのアニメーションを組み合わせるには、スタンバイアニメーションを座っているアニメーションに設定し、オーバーレイアニメーションリストに新しいエントリを追加して、アニメーションを [ネコ] に設定し、[上半身をマスク] をクリックして [ネコ] アニメーションが上半身のみに影響するようにします。
オーバーレイアニメーションを使用して、「ネコ」アニメーションと座っているアニメーションを組み合わせます。
「ネコ」アニメーションは上半身にのみ影響します。
オーバーレイアニメーションは好きなだけ追加できます。各アニメーションレイヤーには、それぞれのマスクされた身体の部位、ウェイト、スピードを割り当てることができ、身体の異なる部分に異なるアニメーションを再生させることができます。リストの下にあるアニメーションほど優先度が高くなります。
オーバーレイアニメーションのデモ。 出典: https://www.bilibili.com/video/BV1Zt4y1c7Re
- 一時的なアニメーション:ブループリントによってトリガーされる一回限りのアニメーションです。例えば、Twitchの引き換えを受け取ったときに再生される短いダンスアニメーションなどです。詳細については、ブループリントのチュートリアルをご覧ください。
身体のアニメーションに加えて、呼吸アニメーションや揺れ動くアニメーション、手のジェスチャーの上書きも設定できます。例えば、ピースサインのようにキャラクターの手を特定のポーズに設定することができます。
最後に、余分なボーンオフセットを使用してキャラクターの姿勢を微調整することができます。例えば、キャラクターの頭を数度片側に傾けるなどです。
デフォルトでは、スタンバイアニメーション、オーバーレイアニメーション、手のポーズの上書き、およびボディIKの優先度はすべてモーションキャプチャよりも低く設定されています。
例えば、右手に対して手のジェスチャーの上書きを設定していても、右手がMediaPipeなどでトラッキングされている場合、モデルは手のジェスチャーの上書きではなく、右手のトラッキングされたジェスチャーに従います。手のジェスチャーの上書きをモーションキャプチャよりも優先させるには、手のジェスチャー設定でHigh Priority(高優先度)を有効にすることができます。
視線IK
視線IKは、キャラクターがシーン内の特定のターゲット(カメラなど)を見るようにするために使用されます。これは完璧な自撮りを撮るのに便利です!
単にリスナーとの目線を合わせたい場合は、代わりにフェイストラッキングの設定時にターゲットを見るを有効にすることをおすすめします(デフォルトで有効になっています)。詳細については、フェイストラッキング のカスタマイズをご覧ください。
視線IKを使用するには、設定を有効にし、ターゲットをキャラクターが見るべきターゲットに設定するだけです。ウェイトを調整して、キャラクターの頭、目、身体がターゲットを見るためにどの程度回転するかを制御できます。ウェイトを固定するオプションは、頭、目、身体の回転を制限するために使用できます。これらの値が大きいほど、回転の範囲は狭くなります。
ボディIK
ボディIKは、キャラクターの背骨や手足がシーン内の特定のターゲットに従うようにするために使用されます。
ボディIKの概要
ボディIKを使用するには、単に背骨または手足に対して設定を有効にし、IKターゲットをキャラクターが従うべきターゲットに設定します。IKターゲットは通常、カメラ、道具、またはアンカーです。身体 の部位の現在位置に一時的なアンカーを作成したい場合は、[現在位置に一時Ikターゲットアンカーを作成する] をクリックします。作業が完了したら、[一時Ikターゲットアンカーの削除] をクリックして一時的なアンカーを削除します。
一時的なアンカーを作成すると、モデルの手を理想的な位置に固定し、頭の動きによって手が左右にずれるのを防ぐことができます。これは、特定のポーズで非常に便利です。
適用前
適用後
肘のターゲットおよび肘のターゲットウェイトオプションを使用して、肘や膝の回転を制御できます。肘のターゲットは通常、アンカーです。
肘のターゲットが無効
肘のターゲットが有効
ラグドール
ラグドールは、キャラクターが物理オブジェクトに当たることを可能にしたり、キャラクターがシーン内のオブジェクトを貫通するのを防ぎます。
筋肉の弾力と筋肉ダンパーを使用して、キャラクターの筋肉の硬さを制御できます。これらの値が大きいほど、キャラクターの筋肉は硬くなります。
キャラクターの手が身体を貫通するなどの自己貫通を防ぐために、内部衝突検出を有効にすることができます。最良の結果を得るためには、[ラグドールの編集] をクリックしてコライダーを手動で調整する必要があります。
ラグドールを有効にすると、キャラクターがよりリアルに見えるようになりますが、物理エンジンの不具合により予期しない動作を引き起こす可能性もあります。ラグドールは必要な場合にのみ有効にすることをおすすめします。
一部のノードは、アセット設定に関係なく一時的にラグドールを有効にします。例えば、キャラクターにアイテムを投げるノードは、プロップがキャラクターに当たると一時的にキャラクターのラグドールを有効にします。
メッシュ
モデル上のメッシュおよびスキンメッシュを切り替えることができます。
VRoid Studioでエクスポートされたモデルには、Body(身体)
とFace(顔)
、Hair(髪)
の3つのメッシュしかないことに注意してください。より詳細なモデルは、キャラクターの服、アクセサリー、尻尾、ケモミミなどを個別のメッシュに分割することが多く、この機能は例えばキャラクターのジャケットを切り替える際に便利です。
ブループリントでメッシュを切り替えるには、キャラクターメッシュの切り替えノードを使用できます。
スケーリング
変換 → スケールプロパティを使用して、キャラクターを拡大縮小できます。ただし、これによりラグドール、IK、一部のモーションキャプチャシステム(Leap Motion)との互換性などの機能が壊れる可能性があります。キャラクターを拡大縮小する必要がある場合は、モデルをUnityやWarudoにインポートする前に、3Dモデリングソフトウェアでスケールを調整することをおすすめします。
よくある質問
フェイストラッキングで表情を自動的にトリガーするにはどうすればよい ですか?
トリガー条件(Trigger Conditions) 機能を使用して表情を自動的にトリガーすることができます。詳細については、トリガー条件セクションを参照してください。
モデルのポーズがアグレッシブすぎる/柔らかすぎる/腕が身体に沈み込んでいる/腕が身体から離れすぎています
アニメーション → 余分なボーンオフセット を設定してみてください。両肩関節の回転角度がキャラクターの個性に大きく影響します。
余分なボーンオフセットが無効
余分なボーンオフセットが有効:左肩: (10, 0, -10), 右肩: (10, 0, 10)
表情のホットキーを変更するにはどうすればよいですか?
表情ボタンのバインドブループリントを開き、[キーボードボタンを押したとき] ノードを見つけます。そして、必要に応じて変更します。たとえば、元のブループリントでは、Alt+1を押すとJoy
の表情がアクティブになります。
以下の変更により、ホットキーが Ctrl+Shift+T に変更されます。
表情を一定期間有効にし、しばらくすると自動的に無効にすることはできますか?
これを実現するには、表情ボタンのバインドブループリントの [キャラクターの表情を切り替え] ノードでAutoExitを有効にします。表情の持続時間は、各BlendShapeのフェードアウト遅延によって決まります。