使用バージョン: Blender 2.81
ポリゴンメッシュで髪を作る場合は、下図のような髪の毛を抜くマスク用の透過マップテクスチャが必要になります。
![髪の毛の透過マップ](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_01.png?resize=800%2C496&ssl=1)
このような透過マップテクスチャを作るには Substance Painter を使えば簡単にできそうなのですが、まだ僕は持ってません …。 なので今回は Blender のヘアパーティクルを使って髪の毛の透過マップテクスチャを作ってみました。
ヘアーパーティクルで髪の束を作る
まずはヘアーパーティクルを使って髪の毛の束を作ります。 ヘアーパーティクルを発生させるために、平面や円オブジェクトを追加します。 今回は円を追加して面を貼って、それにヘアパーティクルを設定してみました。
![円にヘアーパーティクルを設定する](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_02.png?resize=800%2C538&ssl=1)
![パーティクルをヘアーに設定する](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_03.png?resize=465%2C603&ssl=1)
この髪の束をベースに、髪の毛の流れを調整していくのですが、その前に視点を固定するためにカメラを設置しておきます。
正面から撮影するカメラを設定する
カメラは正面に設置するのですが、レンズは通常のパースの効いたものではなく「平行投影」に設定します。
![カメラのレンズのタイプを平行投影にする](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_04.png?resize=465%2C416&ssl=1)
カメラのプロパティタブから、レンズのタイプを「平行投影」に変更します。
次にカメラをオブジェクトの正面に設置します。 N キーでプロパティパネルを開き、カメラの回転を X 90°、Y と Z は 0°にして正面を向けます。
![カメラを正面に設定する](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_05.png?resize=800%2C532&ssl=1)
次にレンダリングする画像の縦横比と寸法を設定します。 一般的には正方形が使われると思うので、出力プロパティの寸法を設定しておきます。
![寸法を調整して正方形にする](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_06.png?resize=465%2C534&ssl=1)
今回は 1024 × 1024 に設定してみました。 最後にテンキーの 0 キーでカメラ視点にして、ヘアーパーティクルを設定したオブジェクトの位置を調整します。
マテリアルを設定する
次に作業しやすいように、髪とワールドのマテリアルを設定しておきます。 ワールドの方は真っ黒にします。
![ワールドのマテリアル、背景を黒色にする](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_07.png?resize=465%2C456&ssl=1)
ヘアーパーティクルのマテリアルの方はベースカラーを白 ( FFFFFF ) にして、エミッション ( 放射 ) の色も白 ( FFFFFF ) にします。
![髪のマテリアルは放射を白色にする](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_08.png?resize=800%2C473&ssl=1)
またヘアーパーティクルのエミッターは、レンダーとビューポート表示の両方で「エミッターを表示」のチェックを外して非表示にします。
![ヘアパーティクルのエミッターの表示のチェックを外す](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_09.png?resize=465%2C617&ssl=1)
またビューポートでの表示は毛先が細い方が見やすいので、ヘアーの形状を「ストリップ」にしておきます。
![髪の形状をストリップにする](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_10.png?resize=465%2C609&ssl=1)
ヘアーの形状を「ストリップ」にするには、レンダリングエンジンを一度 Eevee に変更します。
ビューポートを Cycles レンダーにすると、下記図のようになります。
![ビューポートをCyclesにする](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_11.png?resize=800%2C522&ssl=1)
※ マテリアルを放射にしてあるのでシーンのライトは必要ありません
あとはヘアーパーティクルの粗さ、ねじれなどの各パラメータを調整して、髪の束の形を好みの形になるように調整します。 今回は下記のように髪の束を作ってみました。
![ヘアパーティクルの形状を調整する](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_12.png?resize=800%2C532&ssl=1)
髪の根本をランダムにする場合は斜めにする
ヘアーパーティクルでは髪の毛先側は調整できるのですが、根元側が直線になってしまいます。
![ヘアパーティクルの根本が真っ直ぐになる](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_13.png?resize=800%2C453&ssl=1)
僕の場合は根本側もランダムにしたかったので、オブジェクトを30°ほどカメラに対して手前に傾けてみました。
![カメラ側に少し傾ける](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_14.png?resize=800%2C530&ssl=1)
こうすると傾けた分だけ、髪の発生源の高さが変わるので、下図のように少しだけ根元側がランダムになります。
![傾けた結果、髪の根元がランダムになる](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_15.png?resize=800%2C529&ssl=1)
カメラは平行投影になっているので斜めにしても問題ありません。 斜めにした分、正面から見た場合髪の長さが短くなるので、長さを長めに調整します。
あとは同じ要領で複数の髪の束を作り、Cycles でレンダリングすれば、髪の透過マップの出来上がりです。
![髪の毛の透過マップ](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_16.png?resize=800%2C800&ssl=1)
ノーマルマップもレンダリングしてみた
ノードを変更してノーマルマップもレンダリングしてみました。
![髪のノーマルマップ](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_17.png?resize=800%2C493&ssl=1)
ノードは下記リンク先のページを参考にさせていただきました。
cycles – Bake hair particle system to textured low-poly mesh – Blender Stack Exchange
![ノーマルマップ用のノードツリー](https://i0.wp.com/3dgraph.me/wp-content/uploads/2020/01/p94_img_18.png?resize=800%2C273&ssl=1)
umaさんからのコメント
はじめまして、いつもこのサイトの記事を参考にさせていただいております。
板ポリの髪を作ろうとしているのですがblenderからdazへテクスチャをつけてエクスポートをするとき、daz側でインポートするとテクスチャがずれてしまって正常に表示されません。
Noriさんみたいなきれいな板ポリの髪を作りたいのですがなにか解決方法等あればご教授お願いいたします。
Noriさんからのコメント
umaさん、こんにちは。
コメントありがとうございます!
うーん … Blender側できちんとUVマップを設定してあれば、DAZに持っていっても問題なくテクスチャのUVマップは機能すると思うんですけどねー…
ちょっと原因もわからないです … すいません。
umaさんからのコメント
お返事ありがとうございます。
もしよろしければカーブで作った髪型に、ヘアパーティクルで作成したテクスチャを適用し(マテリアルノード等)、DAZにエクスポートする方法を教えていただけないでしょうか?
重ね重ね恐縮ですがよろしくおねがいします。
Noriさんからのコメント
Blender のマテリアルノードは、DAZ にそのまま持っていけないので DAZ 側で作り直さないとダメだと思います。
なので Blender で UV マッピングだけしっかり作っておいてから、普通に OBJ 形式でエクスポートするだけで OK のはずです。
Blender の FBX は DAZ側が未対応なので、OBJ 形式しかないかと …
DAZ側でインポートするときには、「Read UV Coodinates」にチェックがはいってるのを確認してください(デフォでチェックされてると思いますが)。