Mirror Data Table for Collision
この機能はまだ正式リリースされていません。KawaiiPhysics v1.22でリリース予定です。開発中のため仕様が変更される場合があります。
腕や脚の両側に同じ当たり判定を作ると、片側の半径や位置を直すたびに反対側も調整する必要があります。左右ボーンの向きが違うSkeletonでは、Offsetの値をそのままコピーしても同じ位置になりません。
コリジョンの左右生成は、MirrorDataTableのボーン対応と参照ポーズを使って、片側の形を反対側へ生成します。左右で同じ当たり判定を使いたいキャラクターを調整するアーティストに役立ちます。左右差が必要な部位は、反対側の手動設定を残せます。
Mirror Data Table for Collisionの設定
対象Skeletonの左右ボーン対応とMirror Axisを設定したMirrorDataTableを使います。
- 対象のKawaii Physicsノードを選びます。
Collision > Mirror Data Table for Collisionに用意したテーブルを指定します。- 既存コリジョンがある骨をスキップする設定をオンのままにします。
- Animation Blueprintをコンパイルします。
- モーションを再生します。
形状調整と既存コリジョン
生成結果を見ながら、元の形の半径・サイズ・位置・回転Offsetを調整します。元の設定から反対側が作られるため、両側へ同じ修正を手入力する作業を減らせます。生成形状は元アセットへ追加保存される形ではありません。
反対側だけ別の形を使いたい場合は、その骨へ手動で設定し、既定のスキップ設定を維持します。スキップは形状タイプごとの判定です。反対側にSphereがあるとSphereの生成を省略しますが、Capsuleの生成まで省略するわけではありません。
設定と生成条件
| 項目 | 条件・動作 |
|---|---|
Mirror Data Table for Collision | 対象Skeletonの左右ボーン対応と MirrorAxis を使う |
bSkipMirroredBoneWithExistingCollision | 既定true。同じ形状タイプの非Mirror形状が対応先にあると省略する |
| 元の形 | Driving Bone、形状、位置・回転Offsetを設定する |
| 生成しない条件 | テーブルなし、MirrorAxisがNone、Skeleton情報なし、有効な対応なし、対応先が自分自身 |
オフセットと既存設定
位置・回転のOffsetは、参照ポーズのコンポーネント空間ボーン回転を使って反対側ボーンのローカル空間へ変換します。ボーン名の置換やOffsetの単純な符号反転だけではありません。
スキップ判定は 反対側ボーンに同じ形状タイプの非Mirrorコリジョンがあるか です。例えば反対側に手動のSphereがあればSphereの自動生成は省略しますが、Capsuleまで省略する判定ではありません。判定に位置・半径が完全一致する必要もありません。falseにすると手動形状があっても生成するため、重複した押し出しに注意してください。
生成結果の Source Type は Mirror です。再生成前に以前のMirror由来形状を取り除いてから作り直します。元アセットへ反対側形状を書き込んで保存する操作ではありません。
対応形状とTapered Capsule
Tapered Capsuleでは Radius0 が+Z端、Radius1 が−Z端です。鏡映後の回転で端点の向きが逆転した場合は半径を交換し、元の物理端点に対応した太さを保持します。
この実装の左右生成対象はSphere/Capsule/Tapered Capsule/Box/Planeです。Simple World Collisionで収集した周辺形状やConvexを、この設定で任意にミラーする用途には対応していません。
関連するUE公式ドキュメント
- アニメーションのミラーリング — Mirror Data Tableの作成、左右ボーンの対応、Mirror Axisを確認できます。KawaiiPhysicsでは形状生成にテーブルを使います。 (UE 5.7) UE5.8版(英語)も参照できます。日本語ページの表示版は5.7です。