Skip to content
第10回 スキンメッシュ基礎

2 / 4 ボーン階層とウェイトの観察 ​

このステップの目的

頂点が複数のボーンから受ける影響を、数値と動きで比較します。

二つの影響を混ぜる例 ​

ある頂点について、ボーンAによる変換後の位置が(0,0,0)、Bによる位置が(2,0,0)、ウェイトが0.25と0.75なら、重み付きの結果は(1.5,0,0)です。骨の位置そのものを平均するのではなく、各ボーンで変換した頂点位置を混ぜます。

子が親の変換を受けるボーン階層 ​

text
Root
  Hips
    Spine
      Chest
        Shoulder_L
          UpperArm_L
            LowerArm_L
              Hand_L

Hand_L の最終的な位置は、手首だけでなく腰、背骨、肩、腕の変換にも影響されます。

このような階層変換を正しく扱うために、 3Dグラフィックスでは行列が使われます。

この回では、親の変換が子の配置へ影響することを確認します。詳しい変換はボーン階層とスキニング変換で参照できます。

ボーンから受ける影響度 ​

左腕のボーンウェイト表示
左手のボーンの影響度を示しています。赤いほど影響が強く、青いほど影響が弱いことを表します。

Bone Weight は、頂点が各ボーンから受ける影響度です。

1本のボーンに完全に追従する頂点もあれば、 複数ボーンの動きを混ぜる頂点もあります。

たとえば肘の近くの頂点は、上腕ボーンと前腕ボーンの両方から影響を受けます。

影響度の合計は、通常 1.0 になるように扱います。

合計が1.0になるウェイト ​

頂点上腕前腕結果
肩に近い頂点1.00.0上腕に完全追従
肘の中央0.50.52本の動きを半分ずつ混ぜる
手首に近い頂点0.01.0前腕に完全追従

ウェイトが急に切り替わると、関節が折れたように見えます。

ウェイトをなめらかに変化させると、曲がり方もなめらかになります。

ただし広く混ぜすぎると、動きがぼやけて形が締まりません。
通常は、1頂点あたり最大4本程度のボーン影響を扱います。

実習2:ウェイトの影響を観察する ​

  1. 関節が大きく曲がるアニメーションを再生する
  2. 肘、膝、肩、腰など、変形が目立つ場所を確認する
  3. 変形が自然な場所と、不自然な場所を比較する
  4. 不自然に見える場合、ウェイト、ボーン位置、法線のどれが原因に近いかを考える
  5. スクリーンショットを取り、原因の仮説をメモする

条件を変えた確認 ​

ウェイトだけを0.5と0.5へ変えた位置を計算し、どちらの変換へ近づいたか説明してください。

予測と結果の照合

(1,0,0)です。Bへの影響が弱まり、Aへ近づきました。実際のモデルでは関節の動きとウェイトを対応付けて観察します。

モデルやボーンを実験で変更した場合は元へ戻し、Material交換前の基準を保ちます。

参考:バインドポーズ

メッシュとボーンの初期状態 ​

Tポーズのバインドポーズ
典型的なTスタンスでのバインドポーズの例。

Bind Pose は、メッシュをボーンへ関連付けた最初の基準姿勢です。
スキニングでは初期状態でボーンとメッシュを対応させ、相対的な位置関係を記録します。

アニメーションでの変形は、初期状態からどう移動したかで計算されます。

たとえば腕を上げた姿勢でバインドされたモデルなら、そこから腕がどのように回転したかの相対変化を使って頂点位置を求めます。

バインドポーズが必要な理由 ​

頂点は、バインドポーズ時点でのボーンとの位置関係を持っています。

現在のボーン行列だけでは、頂点が基準姿勢でボーンに対してどこにあったかを扱えません。
そこで、バインドポーズの逆変換で基準姿勢を打ち消してから、現在のボーン変換を適用します。

この「基準から現在への変換」が、スキニング計算の中心になります。

チェックリスト
  • ウェイト付きの頂点位置を計算できる。
  • 関節の動きと材質の問題を分けて観察できる。