スケルゴンはモデラー上でBoneの役割をするツールですが、本稿では最終的にレイアウト上の Bone として活用します。モデラーのスケルゴンは癖があり、初めて取り組まれる場合に注意したい事柄について説明します。
一般的な統合型3DCGソフトになれた方にとっては?な話ですが、LightWave はモデラーとレイアウト、二つのアプリケーションで構成されているため、双方に目的が異なる似通った機能が複数存在しています。これが様々な問題、混乱の元凶となっている訳ですがスケルゴンと Bone はその代表と言えます。
後継である LW-Core ではノードベースのCoreシステム上で動作する一つのアプリケーションとなるため、長年抱えてきたこれらの問題は改善される筈です。ちなみに、これらの構造上の問題が取り沙汰される分野はキャラクター、モーション関連でそれ以外の用途では現状のLWでも十分な機能は有しています。
スケルゴンを使う第一の理由は、本稿ではウェイトマップのみの Bone スキニングを前提としているので、Vertex Paint、つまりスケルゴンから得られるウェイトマップをモデラー側で修正、確認する必要があるためです。
別の言い方をすれば、レイアウトの Bone だけでウェイトマップにスキニング結果を修正する場合、その都度、モデラーとレイアウトの間を行ったり来たりする必要があるため生産性は著しく低下するためです。
他、考えられる理由としては、レイアウトのViewポートの操作性はモーション制作にフォーカスされているため、Bone追加、編集の操作性は高くない点が挙げられます。(Ver8 以降、かなり改良は進んでいます。)
レイアウトのBoneよりモデラーのスケルゴンの方が生産性が高いという話ではありません。Boneのスキニング方法によって制作アプローチが異なるためです。
モデラー上で行なうスケルゴンセットアップに関する注意点を以下に挙げます。
最初にクリックで描画するとゼロ距離の見えないスケルゴンが作成されてしまいます。トラブルの元になるので最初の描画はクリックではなく必ずドラッグで描画します。
親子関係を持つスケルゴンは必ず接続された状態になるという制約があります。つまり、離れた状態で親子関係を維持できない点がレイアウトのBoneと大きく異なります。
この制約のため、接続されていないスケルゴンで階層構造を組むには使用しないダミーのスケルゴンを作成する必要があります。
(左図)
モデリング段階ではダミーのスケルゴンが邪魔になるため、ウェイトマップ作成後、レイアウト上で全てが完成するまではこの方法は使いません。
本稿ではモデリング段階で積極的にスケルゴンとVertex Paint を活用するのでダミーのスケルゴンがウェイトの対象となり邪魔になるためです。 最終的には、このような独立したBone はレイアウトで親子付けを行い、バインドするのが基本です。
Morph Map を作成する場合、スケルゴン回転で動いてもらわないと困るので、その際はダミーのスケルゴンを作成してこの方法で階層構造を組みます。 現状のスケルゴンを修正するのではなく、スケルゴンを複製してモーフマップ作成用として別途用意します。(レイアウトでは使用しない)
スケルゴンの親子付けは、”スケルゴンツリー” や “スケルゴンエディタ” をつかって行う方法、スナップツールで頂点を接続してマージさせる方法があります。その際、回転軸の変化に注意が必要です。
スケルゴンは親子関係をつけた地点で接続された状態になりますが、浮動スケルゴンに対し、モデラー側で事前に親子関係を設定しておく方法もあります。レイアウトでBone 変換した際、親子関係が構築された状態にする事が出来ます。
浮動スケルゴンの事前親子付けはスケルゴンエディタで行ないます。(このツールはかなりバギー)
子供にしたいスケルゴンのマーク のチェックを外し、ツリービューから親にしたいスケルゴンの下に配置します。
左図で示すように親子関係が設定された事を示す破線が表示されます。
レイアウトで Bone に変換する際は”スケルゴン変換”ではなく、Skelegon Reader (ユーティリティ>プラグイン)を使用します。
Skelegon Reader はスケルゴン変換と違って回転軸を 0 状態にしてくれるメリットがあります。(後述) またスケルゴンに割り当てたスケッチ色も継承してくれます。
ただ、この方法は”スケルゴン回転”ツールが対応していませんので、前述したとおり事前処理という事になります。スケルゴンで階層構造を構築しておきたい、作成したスケルゴンに汎用性を持たせたい場合に有用な方法です。
スケルゴンはレイアウトのBoneと異なり描画したビューに対して奥行きがピッチ軸になり、続けて描画したスケルゴンの回転軸は異なります。(左図)
関節は※レイアウトのBone補正機能の都合上、通常曲げる方向にPitch軸プラス回転とする必要があります。
※指や肘、膝など回転軸が限定されるようなケースが主に該当します。Pitch軸を回転させた場合、回転角度が90度に近づく程、ジンバルロック(後述)が発生しやすくなります。肩など稼動範囲が広い関節ではジンバルロックが発生しないように関節の特性によってHeading、Pitch 軸のどちらが適しているか考える必要があります。
モデラーのスケルゴン編集やレイアウト上でBone変換後に回転軸を修正する事は可能ですが、数が多いと大変な修正作業となりますので、スケルゴン描画後の段階でしっかり設定しておく必要があります。
手のスケルゴン場合、通常曲げる方向にPitch軸プラス回転とするには、スケルゴン回転ツールを選択時、左図のように表示されている必要があります。
この状態にするには ”スケルゴン編集” でハンドルを左図のように修正します。ちなみにハンドルはHeading 軸を示します。
Heading は回転させてもPitch 軸が追随するため、ジンバルロックは発生せず、Pitch軸を変更できます。(Bank軸はスケルゴン方向) また、”スケルゴン編集” はパースビュー以外のビューで操作します。
”スケルゴンエディタ” を使ってBank軸の向きを変えることでPitch 軸を一括で変更する方法もあります。(このツールはかなりバギーです。修正版がDSTORMで公開されています。)
レイアウト上でBoneをPitch軸に回転させると90度に近付くにつれて、Bank軸とHeding軸が重なる現象がおきます。
これが3DCGにおけるジンバルロック状態です。 しかし、Heding軸を回転させた場合はPitch軸は追随するためこのような現象は発生しません。
FKによるモーション制御の場合、”ローカル座標システム” に切り替える事で問題を回避できますが、親座標を基本とする IK制御の場合、急激なねじれ(フリップ)など予期しない結果を招く原因になります。(LWに限らず)
これを極力回避するには、レイアウト上で ”中心点回転記録 (Record Pivot Rotation)” を実行して所定の角度を初期化し、無理な回転角度が発生しないように回転角度を制限するなどします。
スケルゴン変換でBoneに変換した直後は全ての必ず ”中心点回転記録” (Shift + P)を実行後、 RootBone に対し“ボーンの固定位置を記録 (Record Bone Rest Position)” (r) を行うようにして下さい。これらはモーション、キーフレームを打つ前に実行する必要があります。
スケルゴン変換直後は、それぞれのBoneでショートカット “Shift + P” を実行後、ショートカット “r” を実行するコンボ技として覚えておくと良いです。 “ボーンの固定位置を記録” は他のツールでいう所の Bind みたいなものです。
また前述したように回転軸をどうするかによって後のモーション付けやBone変形に大きな違いが出るため、初めて取組まれる方はLightWaveの回転軸システム、Bone変形の補正機能をよく理解しておく必要があります。
これらを踏まえてモデラー上のスケルゴンをセットアップしておく事で、結果、レイアウト上での修正を減らし、lwoファイルの汎用性の向上や後の生産性にも影響するという事を覚えておいてください。
スケルゴン変換を実行した直後は回転軸を0状態になっていません。これを行なうのは前述した”中心点回転記録” (Shift + P)ですが、一度に行なうには”スケルゴン変換”ではなく、Skelegon Reader (ユーティリティ>プラグイン)を使います。
スケルゴンエディタで親子付けを行なった場合、回転軸が変わってしまう事に注意する必要があります。スナップツールでスケルゴンを接続してマージして接続してた場合も同様で、これらの修正を行った場合は回転軸を確認し、”スケルゴン編集”で修正します。
関節部は曲げる方向に若干の角度をつけて描いて直線状には描かないようにします。
今回の例で言えば、まっすぐに伸ばした状態の指でも、曲げる方向へ若干の角度を付けたほうが良いということです。(レイアウトのBone描画も同様)
手の場合、IKよりもFKで制御する事が多いので、必ずしも角度をつける必要はありませんが、約束事として覚えておけばよいと思います。(LightWave に限った話ではない)
ヒント
メインで曲げる軸をピッチ軸にする訳ですから、常に角度をつけて描くことさえ覚えておけば、自ずとスケルゴンを描画すべきビューが分かる事になります。ただし、連続して描画する場合は前述したように回転軸は異なりますので修正は必要になります。
スケルゴン(Bone)一つに一つのウェイトマップを指定する事になります。LightWave ではスケルゴン変換時にBone と同一名のウェイトマップが存在する場合、自動的に同一名のウェイトマップが割り当てられます。
そうでない場合は自分で関連付け行う必要があり、Boneの数が多いと非常に手間がかかります。
本稿では Vertex Paint で一括してウェイトマップを作成するアプローチを基本としているため、スケルゴンを作成した段階でどの部分か名称から判断出来る分かり易い名前を付けるようにしてください。
そうしないとウェイトマップの特定に無駄に時間がかかり、修正が困難なものとなるからです。 現在選択されているスケルゴンに適用されているウェイトマップに即座に切り換える事が出来るスクリプトも公開されていたと思います。