AnyPortrait > マニュアル > ジグルボーン

ジグルボーン


1.4.0



「ジグルボーン(Jiggle Bone)」は、物理的な効果が追加され、実際のと同じように動く骨を指します。
特に、AnyPortraitは「慣性」と「空気抵抗」による物理的な効果が適用されたジグルボーンをサポートします。
AnyPortraitでは「ジグルボーン」または「ジグル骨」と表記して同じ機能を指します。


AnyPortraitの「ジグルボーン」には、次のような特徴があります。
- リアルタイムでの骨のエンドポイントの位置を検出し、抵抗力と慣性を計算します。
- 「ヘルパー骨(Helper)」や長さが0である、骨は「ジグルボーン」が動作しません。
- 「Unityシーンでの位置の変化」と「アニメーションによる位置変化」によって、この機能が動作します。
- アニメーションに基本的な形を作って「ジグルボーン」を設定すると、さらにクオリティが向上します。
- 重力は適用されません。重力を表現したい場合は、「重力が適用された場合の形状」をアニメで作成した後「ジグルボーン」を適用します。
- IKチェーンが設定される必要はなく、1つの骨にも適用できます。
- スクリプトを利用して、apPortraitの物理動作を無効にするか(SetPhysicEnabled(bool))、Importantオプションがオフの場合には、この機能が動作しません。
- 連続した骨を対象に「ジグルボーン」を適用すると、相対的により敏感に揺れる傾向があります。
- AnyPortraitエディタの性能に応じて、シミュレーションの結果が多少不正確になることができます。 Unityシーンでテストを試みることをお勧めします。
- 画面キャプチャ機能で映像を録画するとき、物理的な効果をオンにすると「ジグルボーン」が適用された状態で録画がされます。ただし、Unityシーンでの動作とは多少異なる場合があります。
- 物理衝突による動きは演算されません。


このページは、上の画像のように「長い髪が自然に動くキャラクター 」を「ジグルボーン」を利用して、簡単かつ迅速に作成する方法を説明します。




(1) メッシュグループを選択します。
(2) 「Boneタブ」を選択します。
(3) 「ジグルボーン」を適用しようとする骨を選択します。
(4) 「Jiggle Boneボタン」を押してON状態に切り替えます。




「ジグルボーン」の設定を有効にすると上記のように属性が表示されます。
1. Mass : 質量です。値が大きくなるほど動きが鈍くなって重くなります。
2. K-Value : 元の形に戻ろう属性です。値が大きくなるほど速く弾力的に復元されます。
3. Air Drag : 空気抵抗を受ける程度で0から1の間の値を持ちます。値が大きいほど、外部の動きに敏感で大きく動きます。この値に基づいて「ジグルボーン」の効果の全体的な適用程度が決定されます。
4. Damping : 減衰力です。この値が大きいほど、揺れる時間が短くなって急速に元の形に復元されます。 K-Valueとは異なり、この値が大きければ弾性が減少します。
5. Constraint ON/OFF : 揺れる角度を制限することができます。制限しない場合は-180〜+ 180度の間の値に「ジグルボーン」が適用されます。
6. Reset Valueボタン:「ジグルボーン」の属性値を初期化します。
7. Testボタン:このボタンを押すと、すべての「ジグルボーン」に同じ任意の力がかかります。属性の値をテストすることができます。




回転範囲を制限してみましょう。
(1) 「Constraintボタン」を押してON状態に移行して、角度を設定することができます。
(2) ワークスペースで、骨の回転範囲が黄色の線で表示されます。


さて、「ジグルボーン」は、指定した角度以内で揺れるされます。
ただし、この角度は、最大範囲であり、実際には自然な動きのために範囲の約70%程度から速度が減少し始めます。




他の骨にも「ジグルボーン」を適用します。
複数の骨を選択して、一度に「ジグルボーン」を適用することができます。
(1) 対象となる骨をすべて選択します。 (CtrlキーまたはShiftキーを押して、多数の骨を選択することができます。)
(2) 右のUIで「ジグルボーン」を同時に設定することができます。




「ジグルボーン」をすぐにテストすることができます。
(1) 「骨編集モード」を解除します。 (骨編集モードでは、「ジグルボーン」が無効になり、テストボタンを押すことができません。)
(2) 「Testボタン」を押します。
(3) 「ジグルボーン」が適用されたすべての骨が動くのを見ることができます。
テスト機能を利用して、物理属性を簡単に調節することができます。




ルートユニットやアニメーションの編集画面でアニメーションを再生すると、「ジグルボーン」が適用された状態で動くキャラクターを見ることができます。
ワークスペースで上記のように物理的な効果を見ないように設定すると、「ジグルボーン」は適用されません。
Bakeをした後、Unityシーンでも「ジグルボーン」をテストしてください!







制御パラメータで重みを制御


1.4.0

デフォルトでは、ジグルボーンは常に動作しますが、時々ジグルボーンの動作を停止する必要があります。
ゲーム内で「気絶したキャラクターの腕、足が自分勝手に揺れて再び止まる」が代表的だろう。
この場合、制御パラメータでジグルボーンが動作する程度を調整できれば便利です。




ジグルボーンが適用されたキャラクターを上記のように用意しました。
キャラクターが動くと、長い髪が揺れます。




ジグルボーンの動きを確認しようとキャラクターが左右に動くアニメーションを簡単に作りました。




ゲームを実行すると、上記のようにキャラクターが動き、ジグルボーンが適用された髪も慣性に応じて動きます。


これで、制御パラメータと簡単なスクリプトを使用してジグルボーンの動きを調整します。




制御パラメータを作成してジグルボーンをオンまたはオフにします。
(1) 新しい「制御パラメータ」を追加します。
(2) 制御パラメータの名前を決め、「Float」タイプに設定します。
ここでは「WeightValue」という名前に設定しましたが、この名前を覚えておきましょう。
(3) デフォルト値を「0または1」に設定します。
(4) 値の範囲を「0~1」に設定します。


ジグルボーンの重みは「0.0」から「1.0」の間の値を持つので、制御パラメータも同じに設定します。
Float」以外のタイプはサポートしていません。




(1) ジグルボーンが適用されたボーンをすべて選択します。
(2)Weight by Control Parameter」ボタンを押してオプションを有効にします。




(1)Set」ボタンを押します。
(2) 先に作成した「制御パラメータ」を選択します。
(3)Select」ボタンを押します。




Bake」を実行して、変更をUnityシーンに適用します。


次に、新しいスクリプトを以下のように作成して制御パラメータを制御しましょう。





(1) 新しい「GameObject」を作成し、 (2) 先ほど作成したスクリプトを追加してからapPortraitを割り当てます。




ゲームを実行し、数字キーを押して制御パラメータの値を0から1に変更しましょう。
ジグルボーンが適用される程度が上記のように変わることがわかります。


制御パラメータを利用するため、ジグルボーンの重みをスクリプトだけでなくアニメーションでも制御することが可能です。




(1) 以前に作成した「アニメーションクリップ」を選択します。
(2)Add Timeline」ボタンを押します。
(3)Control Parameters」を選択し、 (4)Select」ボタンを押します。




(1)WeightValue」制御パラメータを (2) タイムラインに追加します。




キーフレームを追加して、制御パラメータの値を「1から0」に、もう一度「0から1」に変更します。




「Bake」をしてゲームを実行すると、ジグルボーンの重みがアニメーションによって変わることがわかります。