キャラクター
キャラクターは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ターゲットアンカーの削除] をクリックして一時的なアンカーを削除します。
一時的なアンカーを作成すると、モデルの手を理想的な位置に固定し、頭の動きによって手が左右にずれるのを防ぐことができます。これは、特定のポーズで非常に便利です。
適用前
適用後
肘のターゲットおよび肘のターゲットウェイトオプションを使用して、肘や膝の回転を制御できます。肘のターゲットは通常、アンカー