以前作ったロングヘアーにエクストラボーンを入れて、髪を自由に動かせるようにしてみました。 ところどころつまづいた部分もあったのですが、なんとか満足のいくものができました。 またいつか髪を作ることもあると思うので、備忘録として記事にしておきたいと思います。 大まかな作業の流れとしては下記のような感じです。
- ボーンを入れる前の髪をバックアップしておく
- Joint Editor でボーンを作る
- ポリゴンにウェイトを塗る
- 自動生成されるモーフの歪みを修正
- Genesis 8 Female 用に設定して保存
ボーンを入れる前の髪をバックアップしておく
まずボーンを入れる前に、Transfer Utility でフィギアのウェイトを転送した状態の髪のバックアップを取っておきます。 なぜかというと、ボーンを入れたあとでポーズによってできてしまう歪みを解消するときに使いたいからです。
今回の髪はロングヘアーで、胸に髪がかかっている髪型です。 Pose Control で胸周りをいじるモーフ、Breasts Flatten や Breasts Hang Forward を使うと、胸のモーフに連動して髪も動きます。

ボーンを入れる前は下記のように Transfer Utility で転送されたウェイトが残ってるのできれいに変形します。

ウェイトをボーンに合わせて塗り直したときには自動生成モーフによって変形するため、下記のように歪んでしまいます。

ボーン用のウェイトを塗ったあと、この自動生成モーフを修正するときにバックアップした髪を利用します。 もしボーン用のウェイトを塗る前から歪んでいる場合、Transfer Utility で転送する際に Projection Template を Hair → Shoulder Length Hair ではなく None を選択すると歪みが解消されると思います。

Joint Editor でボーンを作る
Head ボーンのチャイルドボーンとしてボーンを追加していきます。 Joint Editor を開き、Scene ペインで Head ボーンを選択します。 右クリックから Create → Create Child Bone を選択しチャイルドボーンを作成します。

下記のようなウインドウが開くので、Bone Name を設定します。

今回は縦方向にボーンを配置したいので、Rotation Order は YXZ にして Accept を押すと、下記のように縦向きでボーンが追加されます。

次にボーンの位置を調整しますが、ボーンの動かし方にクセがあるので慣れるまではちょっと厄介でした。 センターポイント ( 緑で表示されているポイント ) を普通に動かした場合は、下記のようにエンドポイントがずれてしまいます。

右クリックから Align → Auto Align Node にチェックを入れておくと、下記のようにセンターポイントだけ動かせます。

位置を調整したら、さらにチャイルドボーンを作成していきます。 今回は SideLeft_1 から SideLeft_5 まで作ってみました。

つながっているボーンのひとつを選択しセンターポイントを動かすと、親ボーンのエンドポイントがついてきてくれません。

そういう場合は右クリックから Snap → Auto Snap End Points にチェックを入れてから動かすと、親のエンドポイントがついてきます。

ただ Auto Snap End Points のチェックを入れっぱなしにすると、予期せぬ挙動になることが多い ( End Points と複数になっているので、意図しない部分の End Point も動くことがある ) ので、使いたいときだけチェックを入れる感じで、通常はチェックを外しておいた方がいいと思います。
もしくはセンターポイントを動かしたあとで、右クリック → Snap → Snap End Point もしくは Snap Center Point で手動でスナップさせます。
また右クリック → Edit → Propagate Translations にチェックをいれておくと、ボーンを動かしたときに子以下のすべてのボーンが一緒に動いてくれますので、全体を動かしたいときに便利です。

とりあえず今回は下記のように、左前側の髪にボーンを入れてみました。

他の部分のボーンも、Head ボーンの Child Bone として同じように作っていきます。 次はポリゴンにウェイトを塗っていきたいと思います。
ポリゴンにウェイトを塗る
ボーンを入れたので、それぞれのボーンのウェイトをポリゴンに塗っていきます。 ウェイトの塗り方についてはカオスさんの Pixiv の記事「R-18 – ボーンの入れ方について」のやり方を参考にさせていただきました。
(R-18 なのでリンクは自主規制させていただきました)
まず髪全体を Head ボーンのウェイト 100% で塗りつぶしておきます。 下記の画像は 100% で塗りつぶした状態なので、髪全体が赤くなっています。

Scene ペインで髪の Head ボーンを選択します。 Node Weight Map Brush ツールを開き、右クリックから Geomettry Selection → Select All を選択し、すべてのポリゴンを選択しておきます。 Node Weight Map Brush ツールでは General Weights を選択。 そして右クリックから Weight Editing → Fill Selected ( 上記画像 ) で塗りつぶします。 下記のようなウインドウが表示されるので、100% にして Accept します。

続いて先ほど作成したひとつひとつのボーンに対してのウェイトを塗っていきます。 今回は左前側の髪のポリゴンに対してウェイトを塗っていくので、その他のポリゴンを非表示にしておいたほうが作業がしやすいです。 Geometry Editor を開き、右クリック → Selection Mode → Marquee Selection にします。 そして下記のように左前側の髪の一部分だけをドラッグ & ドロップして選択します。

次に右クリック → Geometry Selection → Select Conected で、選択部分とつながっているポリゴンを選択します。

Select Conected では上記のように左前側のポリゴンだけを選択することができます。 あとは 右クリック → Geometry Visiblity → Hide Un-selected Polygon(s) で非選択部分を非表示にします。

隠したポリゴンを表示したいときは 右クリック → Geometry Visiblity → Show All Polygons を選択します。
それではウェイトを塗っていきます。 Scene ペインで先ほど追加したボーンのひとつを選択します。 そのまま Geometry Editor を使って、ボーンの範囲だけを選択します。

Node Weight Map ツールに切り替え、Head ボーンのウェイトを塗ったときと同様、100% で塗りつぶします ( 右ク リック → Weight Editing → Fill Selected )。

同じように他のボーンのウェイトも塗りつぶしていきます。 Geometry Editor で選択し、Node Weight Map ツールで塗る … の繰り返しです。 ポリゴンを選択するとき、親ボーンと子ボーンの間に隙間ができないように注意します。 隙間ができてしまうと、そこには Head ボーンのウェイトが残ってしまうからです。
最後のボーンまでウェイトを塗ったら、左前側の髪全体にスムーズをかけます。 右クリック → Geometry Selection → Select All で全体を選択してから、右クリック → Weight Editing → Smooth Selected を選択します。

すると下記のようなウインドウが開きます。

“Enter a smooth factor for the operation” は効果の強さ、“Enter a number of iterations for the operation” は繰り返し回数のようです。
上記は 100% の強さで 10 回繰り返すといった感じです。 スムースをかけたあとは、ウェイトが下記のようになめらかなグラデェーションになります。

Posing ペインを開き、各ボーンを動かしてみます。

滑らかさが足りないなと思ったら、再度スムースをかけて調整します。 これで左前側の髪は終了ですが、右側の髪、後ろ髪など、他の部分も同じようにボーンを入れてウェイトを塗っていきます。
自動生成されるモーフの歪みを修正
冒頭でも少し触れましたが、髪のウェイトをフィギアからボーンに変更したため、ポーズによってはモーフで髪が歪んでしまいます。 今回の髪は胸にかかるロングヘアーなので、Breasts Flatten や Breasts Hang Forward を使用するとゆがみます。

他にも胸を大きくしたり小さくしたりするシェイプを使うとゆがみますが、今回はポーズでの歪みを修正していきます。 歪む原因ですが、これは自動で生成される髪のモーフが歪んでいるからです。 Parameters ペインを右クリックして、Show Hidden Properties を選択してみます。

フィギアに胸のポーズを適用してから、Scene ペインで髪を選択してみると、Parameters ペイン内に Pose Controls という項目が追加されるのが確認できます。

ここには以下の 4 つの自動生成モーフが表示されています。
- pPBMrBreastsFlatten
- pPBMlBreastsFlatten
- pPBMrBreastsHangForward
- pPBMlBreastsHangForward
それぞれ Breasts Flatten ポーズの左右、Breasts Hang Forward ポーズの左右用の髪のモーフです。 これらのモーフ自体が歪んでいるので、ポーズをとったときに歪んでしまうんですね。 なのでこれらのモーフを、冒頭でバックアップしておいた歪んでないもので上書きします。
まずは歪んていないものを開き、フィギアに Breasts Flatten Left ポーズだけをとらせます。 もしフィギアにシェイプを適用している場合は、リセットして Genesis 8 Female デフォルトの状態にしておきます。

次に Scene ペインで髪を除くすべてのオブジェクトを非表示にします。

髪の Mesh Resolution が Base になっているのを確認してから、File → Export で .obj として書き出します。 下記のようなウインドウが開くので、DAZ Studio (1 unit = 1cm) を選択してから Accept を押します。

同じように Breasts Flatten Right、Breasts Hang Forward Left、Breasts Hang Forward Right、それぞれのポーズを適用させたものを書き出します。 全部で 4 種類の髪を書き出すわけです。
次にボーンを入れた方のファイル ( 髪がゆがんでいる方のファイル ) を開きます。 こちらもフィギアのシェイプをゼロにして Genesis 8 Female デフォルトの状態にします。 その前にフィギアのシェイプをメモライズしておくと、あとで簡単にレストアできるので、Parameters ペインを右クリックして、Memorize → Memorize Figure Shape で保存しておきます。

その後 Zero Figure Shape で下記のように Genesis 8 Female デフォルトの状態にします。
もとのキャラに戻すときは Restore → Restore Figure Shape を選択します。

準備ができたら Scene ペインで髪を選択した状態で Edit → Figure → Morph Loader Pro を選択します。 まずは Breasts Flatten Left から修正していきます。

Morph Loader Pro のウインドウでは、まず Convert To Daz Studio の From を DAZ Studio (1 unit = 1cm) にします。 Name は pPBMlBreastsFlatten に変更し、Property Group は Pose Controls/Torso に、Overwrite Existing を Deltas Only にします。 こうすると自動生成された pPBMlBreastsFlatten モーフを、先ほどエクスポートしたものに変更することができます。
下記は Breasts Flatten Left だけ修正した状態です。

Breasts Flatten ポーズを取らせると左側の歪みが修正されているのが確認できます。 あとは同じ要領で右側や Breasts Hang Forward を修正します。
Genesis 8 Female 用に設定して保存
最後に完成した髪を、Genesis 8 Female 用の Hair として保存します。 Scene ペインで髪を選択した状態で、Edit → Figure → Scene Identification を選択します。

下記のようなウインドウが開くので、Content Type を Follower > Hair に、Preferred Base を /Genesis 8/Female にします。

次に File → Save As → Support Asset → Figure/Prop Assets から保存すれば終了です。

参考にさせていただいたページ
- カオスさんの Pixiv – R-18「ボーンの入れ方について」( R-18 なのでリンクは自主規制させていただきました )
- 操・活・解 – Content Creator Toolkit その4:Node Weight Map Brushツール