最終更新:2016/09/06
現状、スカートは次の画像のようになっている。とりあえず足がスカートを突き抜けたりはしていないけど、足のボーン・ウェイトにスカートを巻き込んで無理矢理変形させているだけなので、不自然さが拭えない。
解決策はいくつかある。
- スカートのみを別のオブジェクトとして分離してポーズに合わせて固定モデリングする方法。
- スカート専用のボーンを新たに組み込み、ボーン・ウェイトを適用して変形させる方法。
- スカートに物理演算を適用してポーズをとった後の体のラインに半自動的に沿わせる方法。
1.は服のしわなどを緻密に作り込みたい場合に向いているけど、主にフィギュア向けの方法なので、ここでは使わない。2.はローポリゴン・モデルでよく使われている方法だけど、ここでまたボーン・ウェイトを使うのも芸がない。そこで、3.の物理演算を利用してなんとかしてみる。
スカート用オブジェクトの用意
現状では次の画像のように、スカートは体や他の服装と一緒のレイヤーにひとつのオブジェクトとしてまとめられている。
スカートのみを選択して切り取り、別のレイヤーに保管しておく。仮にもボーン・ウェイトが既に設定してあるものなので、単純に削除してしまうと後でやっぱり必要になったという時にウェイトの設定をやり直さないといけなくなる。
体をモデリングした時の初期段階のまま放置してあって下着などをちゃんと作ってないので、とりあえず裸に見えないようにサーフェース色を変えてある。直接見えないところは後回しにしていたわけだけど、いい加減このへんの作り込みもしないといけない段階になってきた。
保管したスカートを元にして物理演算用のスカートを加工する。オブジェクトに厚みがあると物理演算の際に色々と大変なので、ウェスト部分を除いて裏地を削除し、両面の1枚ポリゴンにする。両面になっていないと足にスカートの影が落ちないので注意。サブパッチがかかっているので、レイアウトではもっと多ポリゴンのオブジェクトとして扱われる。このスカートのオブジェクトを「ハイポリゴン・スカート」とする。
ウェスト部分のポイントを選択し、ポイントセットで選択セットを登録しておく。
セット名は「Skirt_Waist」とした。この選択セットは物理演算の時に動かない箇所を指定するのに用いる。
更に上で加工したハイポリゴン・スカートを複製してまったく同じ形のスカートを別のレイヤーに作る。この際、必ずサブパッチを解除しておく。これを「ローポリゴン・スカート」とする。
今回は簡単な形状のスカートだったので、単にサブパッチを解除しただけのものをローポリゴン・スカートとしたけど、大きさが同じであれば、細部は異なっていても問題ない。
ポイントセットを作った後で複製していれば、ローポリゴン・スカートにも同様の選択セットができている。一応、念のため「Skirt_Waist」選択セットで選択できるか確認しておく。
以上でモデラーでのオブジェクトの用意は終了。ファイルを保存する。
ClothFX単体の設定
まずはハイポリゴン・スカート単体でClothFXを試してみる。レイアウトに移り、0フレームでハイポリゴン・スカートを呼び出す。モーションオプションで指定する親アイテムはRootボーンがいいだろう。Rootボーンの位置がリグの腰コントロールの設定によって原点になっていない場合は、Rootボーンの座標を参考にして体の位置に合うようにスカートの位置を決める。大抵はZ軸座標を足すか引くかすれば体の位置と一致させられるはず。
次に、体のオブジェクトに衝突判定用の物理演算を追加する。体のアイテムプロパティから「物理演算」タブを選択し、「Collision」を追加する。パラメータは次の画像のとおり。「Radius/Level」をあまり小さくしすぎると衝突判定が起こらずに貫通してしまうこともあるので、適度にマージンを確保しておく。「Bounce/Bind power」は「100%」が基準。スカートが足に当たってゴムボールのように跳ね返るわけではないけど、あまり小さいと足がスカートを貫通しやすくなる。
ハイポリゴン・スカートにも物理演算を設定する。ここでClothFXを追加する。
「Fix」にスカートの加工で作成したポイントセットを指定する。「Skirt_Waist」ポイントセットがドロップダウンメニューから選択できるようになっているはず。
「Weight」は単純に重量のことでウェイト・マップとは直接関係ない。1.0がデフォルトだけど、衣服に使うような軽い布の場合は「0.1」~「0.3」程度の低めがいいようだ。
「Viscosity」は粘性、「Resistance」は抵抗のことでこれらの値を大きくすると布の変形を遅らせることができるようになるけど、1.0より小さい値にしても変形が早まるわけではなく、むしろ変形が逆流するようになるので「1.0」が最低値と思ったほうがいいようだ。
「Hold Structure」は構造を維持しようとする力、「Sub Structure」は構造を分散させようとする力。説明が難しいけど、「Sub Structure」は「Hold Structure」の範囲内で規則性を乱すといった感じか。「Hold Structure」が高すぎると伸縮性がなくなるので足とスカートの衝突判定に関係なく足がスカートの裾から出てしまいやすくなる。
各パラメータには「Fx」というドロップダウンメニューがあり、それぞれオブジェクトに設定したウェイト・マップを利用して場所によって強度を調整できるようになっているけど、今回は省略。ClothFXの挙動はただでさえ難解なので、最初は基本設定だけで試してみることをおすすめする。
「Collision」タブはスカート側の衝突判定設定。「Collision Detect」を「<all>」に設定し、「Collision Offset」もやはり適度に確保しておく。「Bound」は「100%」でなくてもいいけど、「0%」にしてもそれほど大きくは変わらない。
「Advanced」タブはデフォルトのままで変更しない。
「Etc」タブもデフォルトのままで変更しない。重力の設定は厳密には必要なんだろうけど、ClothFXの利用目的がスカートの型を維持させたいくらいのものであれば特に設定する必要はない。
最後にハイポリゴン・スカートの「ジオメトリ」タブを選択し、「サブディビジョン手順」を「一番終り」に設定し、「表示サブパッチレベル」が「3」、「レンダーサブパッチ」レベルが「3.0」になっていることを確認する。
再び「物理演算」タブに戻り、「演算」ボタンをクリックして演算を開始する。サブディビジョンをする前のスカートに対して演算するため、それほど長くはかからないはず。もし、演算に時間がかかりすぎて待ちきれないようなら次節の「FX_MetaLinkを使って演算時間を短縮する」を試す。
演算が終わったら、「Save Motion」で必ずモーションをファイルに保存しておく。これを忘れると、せっかく演算した結果が消えてしまい、フレームをレンダリングしても演算結果が反映されない。
演算結果を反映したスカートが次の画像。これで特に問題ないならばシーンを保存する。たまたま良好な結果が得られてしまったけど、これでいつもうまくいくとは限らない。
単体ClothFXの試行
試しに、次の画像のようにハイポリゴン・スカートの「サブディビジョン手順」を「一番初め」に設定して演算してみる。演算時間が非常に長くかかるようになる。
演算を中断し、大体同じくらいのフレームをレンダリングしてみたのが次の画像。サブディビジョン手順を「一番終り」にしたものと比較すると結果の差は一目瞭然。サブディビジョンが最初に実行されてしまうので、エッジが細かくなることで布として変形できる箇所が多くなり、くしゃくしゃな結果になる。
物理演算としては正しいのかもしれないけど、いきなり細かい計算が始まるので極端に時間がかかる上に出力も良好でないとなるとサブディビジョンを最初にするのは賢明ではないということになる。
演算時間を短くするには、演算対象のポリゴンの数を減らせばいいんだけど、表示サブパッチレベルとレンダーサブパッチレベルが一致していないと問題が起こることがある。
表示サブパッチレベルを「1」、レンダーサブパッチレベルを「3.0」とし、サブディビジョン手順を「一番初め」にしてみる。
演算そのものは速くなるし、レイアウトの表示では問題ないように見えるけど、レンダリングすると次の画像のようにスカートの表面がめくれたり逆立ってしまったように大きく乱れてしまい、とてもではないけど見るに堪えないものになってしまう。
表示サブパッチレベルとレンダーサブパッチレベルは同様で、サブディビジョン手順を「一番終り」にしてみる。
演算速度は変わらず、次の画像のように表面の処理そのものは改善した。もっとも、だいぶ前に膨らんでしまっていて良好なレンダリング出力とまでは言えない。
試した範囲ではたまたま許容できるくらいの結果になったけど、表示サブパッチレベルとレンダーサブパッチレベルが一致していないとレンダリングの時に警告が出て演算結果が出力に反映されないことがある。
FX_MetaLinkを使って演算時間を短縮する
ハイポリゴン・スカートだけでは良好な結果が得られなかった場合や、演算時間が許容できないほど長すぎる場合は、ローポリゴン・スカートを併用することでレンダリング出力の改善と演算時間の短縮の両方を図ることができる。この方法は、ClothFXが実装されてさえいればLightWaveのバージョンに関係なく良好な結果を得られる可能性が高い。
まず、ローポリゴン・スカートを呼び出し、ハイポリゴン・スカートと同様にRootボーンを親アイテムに指定する。
ローポリゴン・スカートのアイテムプロパティを開き、「ジオメトリ」タブを次の画像のように設定する。「SubPatches」の数値が「0」である点に注目してほしい。サブパッチがひとつもないので表示サブパッチレベルとレンダーサブパッチレベルは意味がないように思えるかもしれないけど、ハイポリゴン・スカートのサブパッチレベルと同じかそれ以上のレベルであることが重要。サブディビジョン手順は「一番初め」にしておく。
ローポリゴン・スカートにサブパッチが適用されていると演算時間は短縮されないし、サブパッチレベルがハイポリゴン・スカートより低いと、次の画像のような陥没が生じることがある。ハイポリゴン・スカートのサブディビジョン手順を「一番終り」に設定しておけば回避できるけど、サブディビジョン手順の初期設定は「一番初め」なので、うっかりするとこのようなミスをしやすい。
ローポリゴン・スカートにClothFXを設定する。ハイポリゴン・スカートにClothFXを設定済みならそれを「File」タブからコピーしてペーストすると簡単に転写できる。「Basic」タブ以外の設定は省略するけど、上で書いた設定と同じ。
ローポリゴン・スカートは物理演算のためだけに使うので、レンダリング出力に映らないようにScene Editorで「A」欄のチェックを外し、ローポリゴン・スカートそのものをレンダリングの演算対象外にする。
あるいは、次の画像のようにアイテムプロパティの「レンダリング」タブで「オブジェクトディゾルブ」を「100%」、「光線無効」、「カメラ無効」、「ラジオシティ無効」、「フォグ無効」にしておく。光線とカメラが無効なのでそもそも影は生じないから影の設定は任意。
ハイポリゴン・スカートのモーションオプションで親アイテムをローポリゴン・スカートに指定する。「その場でペアレント(Parent in Place)」がオンになっていれば特に移動させる必要はないはず。
ハイポリゴン・スカートのアイテムプロパティを開き、「変形」タブで変位プラグインに「FX_MetaLink」を追加する。「プロパティ」かFX_MetaLinkをダブルクリックして「Smoothing」にチェックが入っていれば問題ない。
FX_MetaLinkは、親に指定したアイテムの変位情報を子アイテムに移し替えるプラグイン。LightWaveには結果の厳格さを求めない代わりに物理演算を簡素化する方法がいくつか用意されている。
ハイポリゴン・スカートの物理演算はすべて削除しておく。
続けて「現在のオブジェクト」からローポリゴン・スカートを選択し、ClothFXを演算させる。演算が終わったら、「Save Motion」でモーションを必ずファイルに保存しておく。
ローポリゴン・スカートにはサブパッチが適用されていないため、サブパッチレベルの設定は3ではあるけど実質レベル0と同じなので演算時間を短縮でき、かつハイポリゴン・スカートに適用されたサブパッチにより良好なレンダリング出力を得られる。
途中経過
今回は結構微妙な差なので、比較画像。左がボーン・ウェイトのみ。右がスカートにClothFX使用。歪んでいた裾がだいぶすっきりした。ミニスカートなので特に大きな問題は起きなかったけど、ロングスカートだとどうなるだろうか。
関連記事
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―体編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―手編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―顔編1―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―顔編2―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―髪の毛編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―服装編1―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―服装編2―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―服装編3―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―ボーン編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―ボーンウェイト編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―UV編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―下半身IK編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―上半身IK編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―ClothFX編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―unReal Xtreme2編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―肌の質感編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―続・髪の毛 HairBlade編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―瞳編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―まつ毛編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―GENOMA2編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―手指FK編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―プリーツスカート編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―表情モーフ編―
- LightWaveで二次元キャラ系人物モデリング奮闘記 ―視線コントロール編―