3Dモデルのスキニング:ボーンからモーションまでを解説
キャラクターのリギングがようやく完了しました。スケルトンは正しく曲がり、コントロールは応答し、そして肩が回転します。メッシュは鋭い折り目に挟まれ、前腕はキャンディの包み紙のようにねじれ、あるいは肘が伸びる一方で腕の他の部分は遅れてついてきます。バインドポーズではモデルは問題なく見えたのに、なぜか奇妙な問題が発生します。
これは奇妙なことではありません。3Dモデルのスキニングとは、ポリゴンサーフェスが内部のスケルトンにどのように追従するかを指示するシステムです。メッシュに何が求められているかを理解すれば、ウェイトペイント、バインドマトリックス、そして代替アルゴリズムは、無関係な技術的な作業ではなくなります。それらは、「近くのボーンの位置が変わったときに、サーフェスの各部分がどのように動くべきか?」という同じ実用的な問いに対する異なる答えになります。
目次
- なぜキャラクターメッシュはスキニングなしでは崩壊するのか
- スケルトン、バインドポーズ、そしてスキン
- ボーンウェイトと線形ブレンドは実際にどのように機能するか
- デュアルクォータニオンスキニングとキャンディラッパー問題
- 実践的なウェイトペイントとエンベロープのワークフロー
- 自動およびAI支援スキニングがその価値を発揮する時
- プロジェクトに最適なスキニング設定の選択
- 最初の試行後にのみ尋ねるスキニングの質問
なぜキャラクターメッシュはスキニングなしでは崩壊するのか
静的なキャラクターメッシュは、その頂点の位置しか知りません。スケルトンは、そのジョイントの配置しか知りません。それらを同じシーンに配置しても、自動的に生きたキャラクターのように振る舞うわけではありません。スキニングの関係がなければ、上腕骨を回転させても、肩、袖、胸を形成する頂点は変化しません。
スキニングはその関係を作成します。各頂点に、どのボーンがどの程度の影響を与えるかという指示を与えます。これにより、キャラクターは、コンピュータが頂点ごとに結果を計算しているにもかかわらず、柔軟な皮膚が硬い内部構造の上に引き伸ばされているかのように動くことができます。
よくある最初の失敗は肩で起こります。上腕の頂点は腕のボーンに近すぎ、胸の頂点は固定されたままで、その間の遷移が内側にへこみます。手首でも同様の問題が発生し、前腕に段階的な遷移がないまま手が回転します。結果は技術的にはアニメーション化されていますが、視覚的にはいくつかのピースが取り付けられた硬いシェルのように振る舞います。
実用的なルール: 良いバインドポーズは、良い変形を保証するものではありません。それは、ソフトウェアが後続の動きを計算するためのクリーンな参照を提供するだけです。
メッシュ自体は、ウェイトペイントツールを開く前に重要です。クリーンなエッジフローは、変形がジョイントの周りを移動するためのスペースを与えますが、不規則なトポロジーは、形状的にサポートされていない動きを単一のポリゴンに強制する可能性があります。リグを責める前に、キャラクターのトポロジーの基本を確認してください。

目標は、すべての頂点を動かすことではありません。目標は、周囲の形状をサポートする方法で各頂点を動かすことです。この区別が、モデリング、リギング、アニメーション、エクスポートの間にスキニングが存在する理由です。悪い結果は、ウェイト、ジョイントの配置、トポロジー、または変形方法自体に起因する可能性があります。
スケルトン、バインドポーズ、そしてスキン
薄い粘土で覆われた木製マネキンのようなものを想像してください。マネキンのペグとセグメントがスケルトン、粘土がスキン、そして中立的な姿勢で粘土をマネキンに押し付けた瞬間がバインドポーズです。
スケルトンはジョイントの階層です。肩は胴体に属し、肘は上腕に属し、手首は前腕に属します。その親子構造により、回転がキャラクター全体に伝播します。肩が動くと、肘と手首はその動きの一部を階層を通じて継承します。
バインドポーズは参照配置です。Tポーズ、Aポーズ、またはその他のニュートラルなスタンスかもしれませんが、意図的である必要があります。ソフトウェアは、その瞬間にメッシュが各ジョイントに対してどのように配置されているかを記録します。後で、現在のポーズを参照ポーズと比較し、その差をバインドされた頂点に適用します。
一致する必要がある3つの要素
- スケルトン: ジョイントは、利用可能な動きとその階層を定義します。肘のジョイントがずれていると、ウェイトが慎重にペイントされていても、悪い曲がりが生じる可能性があります。
- バインドポーズ: ニュートラルポーズは参照フレームを設定します。メッシュとスケルトンがバインド時に整列していない場合、後続のトランスフォームは間違った関係から始まります。
- スキン: ポリゴンサーフェスは、頂点の位置、法線、UV、および影響データを保持し、それらが変形を可能にします。

折り紙の例えが次のアイデアに役立ちます。折り紙の人物の点に印を付け、次に折り目を変更します。印を付けた点は単一の折り目を孤立して選択しません。その最終的な位置は、周囲の構造と、折り目の間で紙がどのように接続されるかに依存します。スキニングされた頂点は同様に機能しますが、物理的な紙に依存するのではなく、ソフトウェアが明示的な影響値を格納します。
バインド前に、キャラクターのトランスフォーム、スケール、ジョイントの向き、およびニュートラルスタンスを確認してください。ウェイトを生成する前に修正を適用します。バインド後にメッシュのプロポーションを変更したり、主要なジョイントを再配置したりした場合は、すべての症状をペイントし直すのではなく、関係を再構築するか、慎重に修復する必要がある場合があります。
バインドポーズはデバッグのアンカーにもなります。変形がおかしくなったら、それに戻ってください。そこでメッシュがすでにオフセット、回転、またはスケールされていない場合は、問題は微妙なウェイト遷移ではなく、基盤で修正する必要があるセットアップエラーです。
ボーンウェイトと線形ブレンドは実際にどのように機能するか
キャラクターは肘で曲がりますが、上腕と前腕の間の頂点は単一のジョイントをきれいに追従できません。それらは段階的な引き継ぎが必要です。ボーンウェイトは、各頂点に影響を与えるジョイントからの正規化された寄与を割り当てることで、その引き継ぎを提供します。
線形ブレンドスキニング、別名スケルタルサブスペース変形、マトリックスパレットスキニング、または頂点ブレンドは、1つの頂点が複数のジョイントに応答できるようにします。各影響には非負のウェイトがあり、その頂点のすべてのウェイトは合計で1になります。これは、線形ブレンドスキニングに関するこの講義で説明されています。上腕に近い頂点は、そのボーンから強い寄与、前腕からより小さい寄与、そして遠くのジョイントからはほとんどまたは全く寄与を受けない場合があります。
結果は、数人で持たれたベッドシーツのようなものです。各人が異なる部分を動かし、生地は各手の引っ張りの強さに応じて落ち着きます。スキニングされた頂点は、その生地の1つの点です。その最終的な位置は、単一のボーンが結果を選択するのではなく、結合されたジョイントの動きから来ます。
計算を平易な言葉で
バインドポーズの頂点について、エンジンは一般的に次のシーケンスに従います。
- 頂点の元の位置から始まります。
- 逆バインドマトリックスを使用して、その位置をジョイントに関連付けられた座標関係で表現します。
- ジョイントの現在のポーズトランスフォームを適用します。
- そのトランスフォームされた位置を頂点のウェイトで乗算します。
- 重み付けされた結果を、他の影響を与えるジョイントからの寄与に追加します。
コンパクトな表記法では:
v' = Σ wi Mi v
ここで、vはバインドポーズの頂点、v'はその変形された位置、wiは影響ウェイト、そしてMiはジョイントの現在のトランスフォームと逆バインド関係を組み合わせたものです。エンジンはまず頂点がどこから始まったかを考慮する必要があるため、逆バインドの部分が重要です。その参照がないと、完全に合理的なポーズトランスフォームでも、間違った開始関係からメッシュを移動させる可能性があります。

正規化は、全体の影響を制御下に保ちます。値が多すぎたり少なすぎたりすると、頂点がドリフト、縮小、または拡大する可能性があり、ウェイトの問題がモデリングエラーのように見えることがあります。正規化されたウェイトは、魅力的な変形を保証するものではありません。それらは、ブレンドに安定した数学的な開始点を提供するだけです。
線形ブレンドがデフォルトになった理由
線形ブレンドスキニングはコンパクトで、ハードウェアにとって効率的で、リアルタイムレンダリングに実用的です。ゲームは、計算を比較的管理可能に保ちながら、多くの頂点を連続的に更新できます。そのバランスが、アニメーションキャラクターの一般的な汎用方法としての地位を確立するのに役立ちました。
その歴史は、ポリゴン3Dグラフィックスの広範な発展にも沿っており、名前付き技術としての正式な扱いは2000年代初頭の大きなマイルストーンとなりました。スキニング方法の学術的レビューは、この分野の歴史的文脈を提供します。
制限は、隣接するジョイントがお互いに回転するときに現れます。トランスフォームの加重平均は数学的には滑らかでも、間違った物理的な形状を生成する可能性があります。ねじれた前腕の周りでは、メッシュは体積を失い、中心に向かって挟まれる可能性がありますが、すべての頂点は正しく正規化されたウェイトを持っています。この区別はトラブルシューティング中に重要です。ウェイト値はジョイントが影響を共有する方法を制御し、ブレンド方法はそれらのトランスフォームがどのように組み合わされるかを制御します。
デュアルクォータニオンスキニングとキャンディラッパー問題
肘と手首を見ながら前腕を回転させてみてください。中央が劇的に狭まり、表面が内側に螺旋状になる場合は、キャンディラッパー問題を見ています。線形ブレンドは、ねじれた四肢の周りの剛体の性質を維持しない方法でトランスフォーメーションマトリックスを平均化するため、このアーティファクトを生成します。
問題は、ウェイトが必ずしも間違っているということではありません。慎重に正規化された影響セットを持っていても、隣接するボーンがお互いに回転するときに体積損失が発生する可能性があります。この区別は時間を節約します。腕全体を再ペイントする前に、アーティファクトが変形方法に従うかどうかをテストしてください。
デュアルクォータニオンスキニング、またはDQSは、ほぼドロップインで代替できます。トランスフォーメーションマトリックスを直接ブレンドする代わりに、単位デュアルクォータニオンをブレンドし、結果を正規化した後に頂点をトランスフォームします。この方法は、剛体のトランスフォームをより効果的に維持し、体積の維持を改善します。これは、デュアルクォータニオンスキニングに関するこの技術的な議論で説明されています。
| 基準 | 線形ブレンドスキニング | デュアルクォータニオンスキニング |
|---|---|---|
| コア操作 | マトリックスベースのトランスフォームをブレンドする | 単位デュアルクォータニオンをブレンドし、正規化する |
| ねじれた四肢 | キャンディラッパーの崩壊を引き起こす可能性がある | 剛体の回転挙動をより良く維持する |
| 体積 | 強いねじれ周りの体積損失の可能性がある | 一般的に四肢の体積をより効果的に維持する |
| ランタイムプロファイル | コンパクトでハードウェアフレンドリー | LBSとほぼ同じ速度であると報告されている |
| 一般的な懸念 | 挟み込みと平坦化 | 位置合わせが悪いジョイントの近くでの膨らみの可能性 |
実用的な選択は通常簡単です。ターゲットエンジン、キャラクターのスタイル、または確立されたパイプラインがそれを期待する場合はLBSを使用してください。ねじれた肩、前腕、太もも、または尾が目に見えて崩壊し、エンジンがオプションをサポートしている場合はDQSをテストしてください。
DQSは魔法ではありません。ジョイントの軸がずれているか、ウェイトがジョイントを広範囲にカバーしている場合、表面は挟み込まれる代わりに膨らむ可能性があります。まずスケルトンと影響ゾーンを修正してください。次に、同じポーズ、特にニュートラルな曲げ、強いねじれ、および極端なリーチを使用して両方の方法を比較してください。
アルゴリズムを使用して、実際に発生しているアーティファクトを解決してください。 DQSに切り替えても、ずれたジョイント、壊れたトポロジー、または間違ったボーンに割り当てられた頂点は修復されません。
実践的なウェイトペイントとエンベロープのワークフロー
自動化から始めますが、結果は下書きとして扱ってください。自動化された方法は、ボーンの距離、周囲のジオメトリ、またはヒートマップスタイルの計算から影響を推定できます。これにより、すぐに使用可能な最初のパスが得られますが、最終的な品質はテストと修正によって決まります。
最初のパスを構築する
- シーンを準備する。 メッシュが意図したバインドポーズにあり、スケルトンがキャラクターの内側にあることを確認します。キャラクターのパーツが誤って分離、非表示、または予期しないトランスフォームを持っていることがないか確認します。
- 初期ウェイトを生成する。 自動割り当てまたはエンベロープを使用して、影響マップを作成します。エンベロープは各ボーンに影響の半径を与え、頂点がその領域の外に出ると効果はゼロにフェードします。
- ポリッシュする前にポーズをとる。 肩、肘、手首、腰、膝、首、指をテストします。ニュートラルポーズは悪い遷移を隠しますが、動きはそれらを即座に露呈します。
- キャラクター全体ではなく、問題をペイントする。 形状がジョイントに従うべき場所に追加の影響を与え、隣接する領域が引きずられている場所から影響を減らし、曲がり全体にわたって段階的な遷移を維持します。
- 慎重にミラーリングする。 対称性は最初のパスをスピードアップしますが、側面に固有の修正を行う前に、一時的にミラーリングを無効にするか、一時停止してください。そうしないと、修正が反対側にも現れる可能性があります。

タフィーのように変形する肩は、しばしば腕の影響が胸に広がりすぎているか、肩のキャップに届く胴体の影響が少なすぎます。鋭く折り目がつく肘は、追加のサポートループ、より滑らかなウェイトグラデーション、または実際の曲がりにより近いジョイントの配置が必要になる場合があります。ウェイト表示の孤立した明るいパッチは、過度に重み付けされた頂点または誤った割り当てを特定することがよくあります。
複数の角度から結果を確認する
ビューポートのデフォルトポーズでのみウェイトマップを判断しないでください。キャラクターを回転させ、ジョイントをゆっくり曲げ、前面、側面、および3/4ビューからシルエットを検査します。輪郭だけでなく、法線とシェーディングにも注意してください。表面はシルエットを維持しながら、望ましくない折り目を生成する可能性があるためです。
テスト中に、この埋め込みワークフローリファレンスを使用してください。
割り当てられていない頂点、急激な色の境界、および無関係な体の部分を横切ってジャンプする影響がないかを確認して終了します。頂点がオブジェクトスペースで近いためだけに、手が前腕を引っ張るべきではありません。また、緩いジャケットは、下の胴体とは異なる戦略が必要になる場合があります。
自動およびAI支援スキニングがその価値を発揮する時
キャラクターは、リラックスしたポーズでは許容できる自動バインドを残すことができますが、最初の肩の上げで崩壊します。アルゴリズムはデザインを判断していません。受け取ったジオメトリ全体に影響を分散しているため、低解像度のメッシュ、不均一なエッジフロー、分離されたサーフェス、または不適切に配置されたジョイントは、弱い証拠を提供します。
エンベロープは、境界が視覚的で調整が容易なため、最初のパスをすばやく行うのに役立ちます。デザイン固有の形状の周りでは精度が低くなります。肩のキャップは意図した体積を維持する必要がありますが、コートは下の胴体とは異なる動きをする必要がある場合があります。エンベロープを大まかな境界として設定し、シルエットとジョイントの曲がりを制御する頂点を微調整します。
AI支援ツールは、ジオメトリパターンと以前にリグされた例からウェイトを予測することで、このプロセスを拡張します。これにより、類似のキャラクター間で繰り返しのセットアップ作業を削減できますが、結果は依然として提案です。ポーズをテストし、シェーディングを検査し、表現力のあるジョイントを手動で修正します。
直接スキニング、自動スキニング、例ベースの変形、直接デルタスキニングなど、いくつかのスキニングアプローチが引き続きアクティブに使用されています。それぞれが、作成者の制御、自動化、変形品質、およびランタイムの動作を異なる方法でバランスさせています。選択は、すべてのメッシュをうまく変形させるボタンではなく、技術的および芸術的なトレードオフです。
ジュニアアーティストの場合、判断のためではなく、繰り返しのために自動化を使用してください。ソフトウェアに影響マップを作成させ、次に肩が形状を維持しているか、肘が自然に圧縮されているか、キャラクターのデザインが剛体またはソフトな動きを求めているかを確認します。テストされていない自動バインドを修復するよりも、クリーンな手動パスの方が速いことがよくあります。
プロジェクトに最適なスキニング設定の選択
3つの質問に答えて設定を選択します。
キャラクターはどこで実行されますか? ターゲットエンジンとエクスポート形式の要件から始めます。リアルタイムゲームキャラクターは、多くの場合、頂点あたりの影響リストが制御されたコンパクトなLBS設定を好みますが、シネマティックリグは、変形品質と修正システムを優先する場合があります。
動きはどの程度極端ですか? 控えめなポーズを持つ様式化されたキャラクターは、LBSで素晴らしく見えるかもしれません。深いねじれ、長い尾、または高度にアーティキュレートされた四肢を持つクリーチャーは、DQSとの直接比較と慎重に作成された修正に値します。
どのくらいのジオメトリをサポートできますか? より多くのトポロジーは、ジョイントが曲がるための追加のスペースを与えることができますが、追加のポリゴンは、悪いジョイントの配置や混乱したウェイトを救うことはできません。クリーンなジオメトリは、変形計画なしに追加された密度よりも価値があります。
AI生成メッシュも同様の規律が必要です。リメッシュとリトポロジーは、バインドする前に、不均一なサーフェスをクリーンな四角形またはゲーム準備済みの三角形レイアウトに変換できます。パイプラインにフォーマット変換が含まれる場合は、DAEからFBXへのワークフローでキャラクターを確認し、ジョイント、ウェイト、トランスフォーム、およびマテリアル割り当てが引き継ぎを生き残ることを確認してください。
最適な操作順序: メッシュを修正し、ジョイントを配置し、バインドポーズを設定し、ウェイトを生成し、動きをテストし、次にブレンド方法を選択します。
その順序により、基本的なセットアップミスを隠すために複雑な変形アルゴリズムを使用することを防ぎます。
最初の試行後にのみ尋ねるスキニングの質問
| 症状 | 可能性のある原因 | 簡単な修正 |
|---|---|---|
| 曲げ中にジョイントが崩壊する | トポロジー、ウェイト、またはジョイントの配置が悪い | エッジフローを検査し、遷移を再ペイントし、ジョイントの位置をテストする |
| AI生成メッシュのペイントが不均一 | 不規則または引き伸ばされたトポロジー | バインド前にリメッシュまたはリトポロジーする |
| エクスポートで変形が失われる | サポートされていないスキンデータ、トランスフォーム、または変換設定 | ターゲットエンジンでエクスポートされたファイルをテストし、スケルトンとウェイトを確認する |
| ねじれが内側に挟まる | 線形ブレンドの体積損失 | DQSを比較し、次にジョイント軸と影響範囲を確認する |
AI生成キャラクターをすぐにバインドすべきですか? 通常はそうではありません。トポロジーをクリーンにし、スケールと向きを確認し、ジョイントを配置し、意図的なバインドポーズを最初に作成します。
1つのジョイントが常に崩壊する場合はどうなりますか? ポーズを分離し、ヒートビューでウェイトを検査し、失敗がメッシュ、スケルトン、またはブレンド方法に従うかどうかを判断します。ジョイント制限または修正ブレンドシェイプは、無限の再ペイントよりも、設計された極端なものをよりクリーンに解決する可能性があります。
UnityまたはUnrealの準備はどうすればよいですか? まず小さなテストキャラクターをエクスポートします。エンジンがスケルトン階層、バインドポーズ、頂点影響、法線、およびマテリアルデータを読み取ることを確認してから、完全なプロダクションアセットにコミットします。
不均一に生成されたジオメトリをどうすればよいですか? リメッシュまたはリトポロジーパスを使用して、意図した曲がりをサポートするサーフェスを作成します。スキニングは影響を分散できますが、メッシュにエッジフローがない場所に有用なエッジフローを生成することはできません。
Sculptyは、テキストから3D、画像から3D生成を、リメッシュ、リトポロジー、PBRテクスチャリング、レンダリング、およびエクスポートツールと統合し、バインドする前にクリーンなアセットを準備できるようにします。Sculptyにアクセスして、キャラクターメッシュを生成または改良し、そのトポロジーをテストし、よりスキニング準備の整ったモデルをアニメーションワークフローに移行してください。