使用バージョン:Blender 2.81
今までヘアーパーティクルで作った髪を使っていたんですけど、アニメーションのシミュレーションが重かったり、衝突判定が微妙なこともあり、ポリゴンメッシュでも髪を作ることにしました。 今回髪型を作るうえで使ったのは、カーブで髪の房をつくり最後にポリゴンメッシュ化するというものです。
この方法は比較的短時間で形にできるし、UV 展開も不要なので個人的にはおすすめです。 よく知られている方法だと思いますが、作業するときに気をつけたいことも多々あるので、自分なりに工程をまとめておきたいと思います。
目次
二種類のカーブで髪の房をつくる
まずは二種類のカーブを使って、髪の房を作っていきたいと思います。

Shift + A キーから、「カーブ → パス」でひとつ目のカーブを、「カーブ → 円」で二つ目のカーブを追加します。

ひとつ目のパスカーブ ( 直線のほう ) で髪の房の全体をつくっていき、二つ目の円カーブでは髪の房の断面の形を作っていきます。
まず髪の房となるパスカーブの方を選択して、カーブのオブジェクトデータプロパティを開きます ( 下図参照 )。 「ジオメトリ」内の「ベベル」の「オブジェクト」に二つ目のカーブである「円」を割り当てます。

するとパスカーブの断面の形状に、割り当てた円カーブの形が反映され、下図のような円柱のような形になります。

この円 … つまり断面の形を編集して、髪の房らしい形を作ります。 円カーブを選択して編集モードで形を整えます。

カーブの頂点から出ているハンドルには種類があり、W キーを押すと表示されるメニューの「ハンドルタイプ設定」で変更することができます。 「自動」にするとスムーズなポイント、「ベクター」にすると角のあるポイントを作ることができるので、円を髪っぽい形に編集します。

また下図のようにセグメントの一部 ( カーブの一部 ) を削除した形にすると、「板状」の髪にすることができます。


断面の形をつくったら、髪の房の形を整えていきます。 パスカーブの頂点を選択して Alt + S キーを押してドラッグすると、髪を細くしたり太くしたり調整できます。

ひねりを加えたい場合は Ctrl + T キーを押してドラッグします。

また髪の質感は最終的にテクスチャを使って表現するので、パスカーブの「ジオメトリ」の「テクスチャ空間」で「マッピングにUVを使用」にチェックをいれておきます。

あとはこの髪の房を Shift + D キーで複製しながら、髪型全体を作っていきます。

左右対称部分を作る
左右対称部分をつくるときはミラーモディファイアを使います。

ただしミラーモディファイアはカーブのままでは適用することができません ( メッシュ化すれば可能 )。
ミラー後にカーブのまま編集したい場合は、Shift + D キーで複製したのち、オブジェクトメニューのミラー ( Ctrl + M キー) で反転します。

こうすれば反転後もカーブとして編集することができます。
髪の房をつくるときに留意しておきたいこと
髪の房の形をつくるとき、カーブのポイントを移動することになるのですが、ポイントを大きく移動すると UV マップも伸びるということを意識しておきます。

また W キーで頂点間を細分化すると UV も細分化されます。

ただし整形したあとで細分化すると、せっかく整形した部分の形が変わってしまいます ( 上記の図ではあとから細分化した部分が細くなっています )。
髪の形状によってはカーブのポイントを細分化して増やさなければならないこともあるのですが、その際は部分的に細分化するのではなく、全体的に細分化した方がポリゴン化したときにキレイになります。

部分的に細分化すると、そこだけポリゴンが細かくなってしまいます。
※ポリゴンメッシュ化する方法は後ほど説明します
毛先の透過テクスチャを作る
モデリング中に毛先の様子を見たい場合もあると思うので、ノードを使って毛先用の透過テクスチャを作っておくと作業がはかどります。

作り方は簡単で、ボロノイテクスチャやノイズテクスチャを拡大縮小して髪の縦方向のラインをつくり、グラデーションテクスチャと合わせてマスクを作ります。
今回マスク用のノードは、ボロノイテクスチャをベースにして作りました。 まずは髪の毛を表現する縦縞を、テクスチャの拡大縮小を調整して作ります ( ノイズテクスチャでも可 ) 。


次にグラデーションテクスチャを合わせて、毛先部分を作ります。


あとは透過シェーダーと組み合わせれば、毛先のマスクのできあがりです。


カーブのポリゴンメッシュ化と解像度
最後にカーブの髪をポリゴンメッシュに変換します。 カーブをポリゴンメッシュに変換するには、オブジェクトモードでメニューの「オブジェクト → 変換 → カーブ/メタ/サーフェス/テキストからメッシュ」を選択するか、W キーから「メッシュに変換」でメッシュに変換することができます。
ただしそのままカーブをメッシュに変換すると、頂点数がとても多くなってしまします。

そこで変換する前にカーブの解像度を調整します。 カーブには解像度があり、デフォルトでは「12」になっています。 「シェイプ」の中にある「プレビュー解像度U」というのがそれです。

これはカーブのポイントとポイントの間の解像度で、カーブの編集モードでは法線の数で確認することができます。

カーブをメッシュ化するときは、各ポイントと法線が表示されている箇所が頂点になります。 なのでデフォルトの解像度「12」では、頂点数がとても多くなってしまいます。
髪の房は二種類のカーブを使ってつくっているので、両方のカーブ ( パスカーブと円カーブ ) の解像度を調整して頂点の数を調整します。
下図はパスカーブの解像度を「4」にし、円カーブの解像度を「2」にしてからメッシュに変換したものです。 ずいぶんと頂点数が少なくなりました。

解像度を落とすと当然ディテールはなくなりますが、サブディビジョンモディファイアと辺のグリースや辺のシャープなどを使って調整します。



今回の記事はここまでになります。 最後まで読んでいただきありがとうございました。
DDさんからのコメント
最近blenderを使い始めて、カーブで髪を作りたかったのでとても勉強になりました。
ありがとうございます。
素人質問なのですが、今回カーブで作った髪は平面だと思うのですが髪を作るのに厚みは付けなくてもいいのでしょうか?
また、パスカーブを三角や丸など厚みのある形状にした場合は先端などに穴が出来ると思いますが、それは問題無いのでしょうか?
良ければ答えていただけると嬉しいです。
Noriさんからのコメント
DDさん、こんにちは
髪の形ですが、平面にするか厚みをつけるかはお好みだと思います
例えばポニーテールのテール部分などは、厚みをつけるというか、円柱状にするといいかもしれませんね
先端にできる穴は空いていても問題ありません
どうせ毛先はアルファマップなどで抜くとおもうので、ふさがっていても結局そこは表示されなくなるからです
DDさんからのコメント
Noriさん
疑問に答えていただきありがとうございます。
とても助かりました!
DDさんからのコメント
Noriさん
何度もすいません。
疑問が再度出来てしまいまして…。
円柱状の髪などはアルファマップなどで抜くとの事でしたが、リアル系のキャラの場合は問題無いと思うのですが、vrchatで使うようなアニメ調のキャラを作る時はどうなのでしょうか?
トゥーンシェーダーのキャラは透明マップを使っていないポリゴンの形そのままを髪にしているように感じましたので。
特に逆立った髪形(遊戯王の遊戯など)を作る場合、平面は難しいので円柱状の髪にする必要があるかと思います。
なのでトゥーンシェーダーの厚みが必要な髪のキャラは髪の先端を穴埋めしなくていいのか疑問に思いました。
それとも、その場合はnurvsで作らず平面で作成したほうがいいのでしょうか?
Noriさんからのコメント
そういう場合は穴を塞いだほうがいいと思います
穴があると光が入るので、不要な影ができることも考えられますし
僕だったら塞ぎますねー
まぁ作ってみて比較してみるのもいいと思います
DDさんからのコメント
Noriさん
返信ありがとうございます!
穴を塞いでやってみようとおもいます。
nicotoraさんからのコメント
すごく、勉強になりました。ありがとうございます。
これからも、Blender解説楽しみにしてます。
Noriさんからのコメント
こちらこそ読んでいただきありがとうございました!