以前から挑戦してみたかった髪の dForce 化。 ただメインで使っている髪は頂点数が多いので、シミュレーションにものすごく時間がかかるだろうと思い放置したのですが、最近は dForce の髪もちらほら出てきているのでこの機会に挑戦してみることにしました。

あまり仕上がりはよくありませんが … とりあえず dForce が効いてるのはわかると思います
この髪型は自作のもので、もちろん dFroce は設定していませんでした。 今回はこの髪を dForce 化していきたいと思います。 もちろん他の髪型も dForce 化できます。 なお dForce のシミュレーションにかかる時間は頂点数に比例するので、頂点数が多いと時間がかかってしまいます。 逆に頂点数の少ない板ポリで作られている髪型だとシミュレーションはけっこう早く終わります ( 例えば Neko Hair だと 3 分ほど )。
大まかな作業の流れ
- 髪に dForce: Dynamic Surface を追加して Surface を調整する
- Weight Node Modifier を使って部分的に dFroce を有効にする
- シミュレーションが早くなるように Simulation Settings を設定する
髪に dForce: Dynamic Surface を追加して Surface を調整する
まずは髪に Edit → Figure → Geometry → Add dForce Modifire: Dynamic Surface から Dynamic Surface を追加します。 この状態だと髪全体で dForce が有効になるので、キャップ ( 頭皮 ) など dForce が不要な部分では無効にしていきます。

Dynamic Surface を追加すると Surface ペインの各マテリアルに、Simulation というグループが追加されます。 dForce を無効化するには Dynamic Strength を 0 にします。 今回は Cap だけ Strangth を 0 にしました。
それから髪の重なり順に応じて、Collision Layer を設定していきます。 髪の構造はそれぞれなので、髪の重なりでマテリアルが分かれていないものもあるかもしれませんが、下層、上層などに分かれている場合は、下層から順に Collision Layer の数値をあげていきます。

今回はキャップが一番下層で「1」になっているので、その一個上層が「2」、その上の層が「3」といった具合にレイヤー順を設定していきます。
髪の構造がいまいち分からない … という場合は、Surface Selection ツールを使うと分かりやすいかもしれません。

Surface Selection を使うと Surface がハイライトされるので、構造を確認しやすくなると思います。
また Collision Layer と合わせて、Self Collide を Off にしておきます。 自身のコリジョンの計算をしなくなるので、シミュレーションが早くなりますし、ON だとシミュレーション中に髪が爆発することもありましたが、Off にすると爆発はほぼなくなりました。

最後に質感の調整をしておきます。 デフォルトのセッティングだと薄い布 … 例えばスカーフのような質感なので、少し固めに調整したいと思います。
Surface ペインで調整したいマテリアルを選択しておいて、オプションメニューから dForce Surface Adjuster を開きます。


Stiffer 堅い / Silkier 柔らかい | 今回は少し固めに設定 |
Stretch 伸びる – / + | 伸びると髪が長くなってしまうので伸びないように設定 |
dForce Surface Adjuster については過去記事「DAZ Studio:dForceを使って脱ぎ散らかした服を表現してみた」で書いたことがあるので参照してみてください。 今回はとりあえずこんな感じで設定してみましたが、今後もいろいろ調整してみたい項目です。
Weight Node Modifierで dForce の範囲を制限する
髪全体に dForce を効かせたい場合はこの作業は必要ありませんが、僕は頭頂部や前髪部分の形はそのままにしておきたいので、dForce の範囲を dForce Weight Node Modifier で制限しました。

赤くウェイトが塗られている部分が100%で、色が塗られていない部分には dForce は効きません。
dForce Weight Node Modifier を追加するには、Create → New dForce Modifier Weight Node を選択します。 下記のようなウインドウが表示されるので、Accept を押します。

Tool Settings から Node Weight Map Brush ツールを選び、Add Map ボタンを押します。 すると髪全体が赤く塗られている状態で表示されると思います。 これを一度ウェイトを 0 にしてしまいます。

右クリックから Geometry Selection → Select All ですべてを選択しておいて、Edit から Fill Selected を選択してから、右クリック → Weight Editing → Fill Selected を選択します。
下記のようなウインドウが表示されるので、0.0% にして Accept を押します。

真っ赤だったウェイトが下記の画像のように「0」になりました。

つづいて dForce をかけたい部分にだけウェイトを塗っていくのですが、dForceをかけたくない部分に塗ってしまうと面倒なので、Geometry Editor でキャップなどを予め非表示にしてしまいます。

Geometry Editor 上で目アイコンをクリックすると、表示/非表示を切り替えることができます。 髪によって Surface や Face Group の構造はそれぞれなので、必ずしも非表示にしたい部分がグループ分けされてるとは限りませんが、キャップだけは独立したグループになっているはずなので非表示にしておきます。 今回はキャップと前髪部分を非表示にしました。
Node Weight Map Burush ツールに戻り、ウェイトを塗っていきます。 今回はざっくりと選択して、Weight Editing → Fill Selected で 100% で塗りつぶしました。

境界がはっきり分かれると dForce をかけたときに折れ目になってしまうので、Weight Editing → Smooth Selected でスムースをかけておきました。

これでウェイトペイントは完了です。 右クリックから Geometry Visibility → Show All Polygons で非表示にしておいたポリゴンを表示させて次の手順にすすみます。
Simulation Settings の設定
Weight Node も設定したので、いよいよ dForce のシミュレーションを開始したいと思います。 ただ頂点数の多い髪だととても時間がかかるので、少しでも早くなるように dForce の設定を調整します。

今回は上記の画像のように設定しました。
Start Bones From Memorized Pose | Off |
Frame To Simulate | Current Frame |
Collision Mode | Base |
メモライズポーズからスタートさせると、その分時間がかかるので「Start Bones From Memorized Pose」は Off にしています。 ただポーズによってはメモライズポーズからスタートさせたほうが仕上がりがキレイな場合があるので、時間に余裕があるときは On にしています。
Frame To Simulate ではタイムラインを使うとその分時間がかかるので Current Frame にします。 軽い髪でシミュレーションが早く終わるようなら、タイムラインを使ったアニメーションもいけると思いますが、今回の髪は重いので Current Frame でシミュレーションしています。
Collision Mode は少しでも早くするために Base に設定します。
それではフィギアにポーズをとらせてシミュレートしてみます。 今回は下記のようなポーズをとらせてみました。 また髪もボーンである程度形を変えてみました。

シミュレーションさせてみると … この髪は頂点数が多いので、結構時間がかかりました …

同じ髪型でもポーズによってはもっと早く終わることもあります。 シミュレーションが終わったのが下記の画像になります。

Curent Frame でシミュレーションしているので、重力によって髪がまっすぐ垂れています。 少しふわっとさせたり、動きをつけたい場合はタイムラインを使ってシミュレーションした方がよさそうです。 時間がかかりそうなので今回は見送り …。
ちなみに同じポーズで頂点数の少ない Neko Hair を使ってシミュレートしてみると 3 分もかかりません。 下記は Neko Hair でシミュレートしたときの画像です。


Weight Node 付きの髪を保存
せっかくウェイトを塗った髪なので、保存しておきたいと思います。 File → Save As → Wearable(s) Preset で保存すると Weight Node 付きで髪を保存することができます。
dForce のシミュレーションのセッテイングも File → Save As → Simulation Setting Preset で保存しておきます。