.
テクニック / 考察モデリング関連 ポリゴン 生物の造形ウェイトマップについて正規化について
トップページ

テクニック / 考察

3DCG Workstation


3DCG-WSに関する説明

取り扱いショップ

補足 : ウェイトの正規化 (Normalize) について

モデリング関連

ウェイトの正規化 (Normalize) について

正規化とは(-1~)0~1、あるいは指定した値の範囲に相対的に置き換える処理の事でウェイトマップ編集、Boneスキニングを理解する上で重要なポイントになります。以前の日本語版 LightWave で ”常態化” と訳されていた機能です。

このページでは前ページに引き続き、Boneウェイトを前提としたウェイト編集を行なう前に理解しておきたい LightWave におけるウェイトの正規化処理について説明します。

ウェイト値の正規化を行なうタイミング

前のページで説明したように、Boneウェイトに使用するウェイトマップの場合、一つの頂点に対して割り当てられるウェイト値が複数ある場合は、合計の値が 100%である必要があり、頂点に対して割り当てられたウェイト値(ウェイトマップ)が一つだった場合は、値が 100% である必要があります。

意図して極端な結果を得たい場合もあるかもしれません。つまり、正規化を前提としない場合は一つの頂点に割り当てられるウェイト値は 100% にしなければならない、という事ではありません。

頂点に割り当てられた複数のウェイト値の合算を正規化する方法は、モデラー側で事前に配分しておく方法とレイアウトのBoneスキニングの段階で 0 ~ 1 の値で内部処理する方法があります。

何に対して正規化を行なうかで結果の異なる機能がある事にも着目してください。LW のマニュアルからは読み取れない部分を補足します。

スケルゴン回転時 (Modeler).

スケルゴン回転:Weight Map Normalize オプション

モデラーのスケルゴン回転時に意図しない変形が起きる場合は、Weight Map Normalize にチェックを入れると正規化が行われます。

ツールオプションであるため、一時的な正規化処理になります。

”ウェイトツール” や ”エアブラシ” でウェイトを描画しながら意図したスキニング結果を得るように調整する場合は、このチェックを有効にして確認します。

Bone プロパティ (Layout).

Bone プロパティ (Layout)

レイアウトの Bone プロパティーで行なう正規化処理です。このオプションが使えるのは、Boneウェイトにウェイトマップを使用する時だけです。

LW-7.x 以前のバージョンでは "スケルゴン回転" ツールはなかったため、SubDivサーフェイスのスキニング結果はウェイトマップを修正する度にレイアウトの Bone で確認する必要がありました。

頂点に対して正規化された値に変換する (Modeler).

一つの頂点に割り当てられたウェイト値の合計が100%を超える場合、比率を維持したままウェイト値の合計100%にする事が出来ます。レイアウトのBoneプロパティではなくモデラーで正規化(Normaliz)を行なう方法です。

本稿で頻繁に出てくる正規化(Normalize)は、この頂点に対する処理を指します。

Vertex Paint の Normalize

Vertex Paint の Normalize

Vertex Paint の Normalize は、頂点に複数割り当てられている複数のウェイト値に対して、ウェイト値の合計が100%になるように正規化を行います。

この処理で割り当てられるウェイトマップが一つの場合はウェイト値は100%に調整されます。

TA Normalize Bone Weights (Freeスクリプト)

TA Normalize Bone Weights

Timothy Albee 氏が公開されている ”TA Normalize Bone Weights” というスクリプトで、process に All Weight Map を選んだ場合、上記、Vertex Paint の Normalize と同様の結果が得られます。

また、選択したウェイトマップの範囲で正規化(合計を 100%)を行なう事も出来ます。ウェイト値が適用されていない頂点がある場合、それぞれのウェイトマップに折半された値が適用されます。

選択ポリゴン、ポイントに対してのみに適用可能、選択したウェイトマップに対してNormalize が出来るなどVertex Paint より小回りが利きます。

同氏は動物をモチーフにした作品が印象深い LW の使い手で、LW 関連書籍の著者としても海外のLWユーザーの間で知られた方です。他にも有用なツールを多数公開されおり私も愛用しています。

URL => LoupGuru.com, From Timothy Albee & Northern Lights Animaiton

“ウェイト値の正規化” と “ウェイトマップの正規化”

マップ正規化 (Nomalize Map)

モデラーには標準でウェイトマップを含む他の頂点マップ情報に対して正規化処理を行なう ”マップ正規化 (Nomalize Map)” という正規化ツールが用意されています。

上記、頂点毎に複数割り当てられたウェイト値に対する正規化処理ではなく、ウェイトマップに対する正規化処理を行ないます。

つまり、ウェイトマップ単位でウェイトのスケールを修正します。図の例では、0~100% の範囲に収まるようにウェイトマップをスケールする事になります。 (1=100%)

本稿で説明している正規化処理は、頂点マップに対する処理ではなく、頂点に対し割り当てられた複数のウェイト値の合計を 100% にする事を指しています。

本稿で紹介しているウェイトマップ作成プロセス

最終的に Bone プロパティーで正規化を行なえば、予期せぬ変形を回避出来ても Bone プロパティの正規化を前提にウェイトマップを修正するという事は、モデラーでウェイトマップを修正する度にレイアウトで頻繁に確認する必要があると言う事です。

これはスケルゴン回転ツールで SubDivサーフェイスのBoneスキニングを確認する事が出来なかった従来(Ver 7.x 以前)のワークフローであり、LightWave がキャラクターセットアップの生産性が低いと言われる大きな要因の一つでした。

v8 以降の LW ではスケルゴン回転ツールで SuvDivサーフェイスのスキニング結果を確認する事が出来るため、モデラー上でウェイトマップと造形を詰める方が生産性は高いと考えています。ですので本稿では Bone プロパティの正規化は当てにしません。

ちなみにモデラー上で頂点に対して正規化処理を行なった場合、レイアウトの Bone プロパティで正規化にチェックを入れても何の変化も起きません。

また、ウェイトツールとウェイトシェードビューで視覚的に修正する場合、一つの頂点に割り当てられるウェイト値の合計が100%を超えるため、数値入力にる微調整が行い易いように頻繁に正規化(Normalize)処理を実行します。

具体的な修正アプローチは追々説明します。


あけぶれ公式サイト

モデリング / TIPS / 考察

  1. モデリング ~ 目次 (一覧)
    1. NURBS モデリング 関連
    2. ポリゴン モデリング 関連

手のモデリング (SubDiv)

  1. このドキュメントの概要
  2. 制作をはじめる前に
  3. 造形 ~ ベース形状の作成
    1. スケルゴンに関する注意点
  4. 造形 ~ "指" を作る
    1. LightWave の Bone 設定
    2. モーションと細分化タイミング
  5. 造形 ~ 掌部のモデリング
  6. 造形 ~ 甲部 / 指の接続
  7. 造形 ~ 全体のモデリング
  8. ウェイトマップについて
    1. ウェイトの正規化(Normalize)
  9. 前準備 ~ シーン作成
    1. 前準備 ~ スケルゴン修正
  10. ウェイト修正アプローチ 1
    1. ウェイト修正アプローチ 2
    2. ウェイト修正アプローチ 3
  11. 造形 ~ 形状の作り込み
    1. ウェイト修正後の頂点追加
  12. UVマップに関して
    1. UVマップを作成する
  13. まとめ ~ 要点の整理
    1. 本稿で使用したツール他

関連ドキュメント

ポリゴン系 3Dモデラの特徴

スプライン系 3Dモデラの特徴

ポリゴン系 3Dモデラの特徴

工業 と 建築デザイン

Lightwave 3D 概要

Alias Maya 7 概要


主要 統合型 3DCGソフト

書籍の出版数は人気のバロメーター。価格帯も分かります。

ドスパラBTO パソコン

Quadro搭載パソコン


3DCG ワークステーション

3DCG/CAD制作に特化したお勧めのワークステーション

ドスパラBTO パソコン

Quadro搭載パソコン


独学・学習の手引き ? ?

書籍 DVD ソフト ハード


CG 制作資料室 ? ?

建築 人・動物 メカ 自然

ライティング・レンダリング考察

アニメーション関連 考察

テクスチャ / 表面材質


3DCG検索 | コンテンツ検索 | 書籍・ソフト検索 | 国内検索 |
bottom_mark
ページ最上部
ページ最上部 前のページ