使用バージョン: Blender 2.81
ポリゴンメッシュで髪を作る場合は、下図のような髪の毛を抜くマスク用の透過マップテクスチャが必要になります。
このような透過マップテクスチャを作るには Substance Painter を使えば簡単にできそうなのですが、まだ僕は持ってません …。 なので今回は Blender のヘアパーティクルを使って髪の毛の透過マップテクスチャを作ってみました。
ヘアーパーティクルで髪の束を作る
まずはヘアーパーティクルを使って髪の毛の束を作ります。 ヘアーパーティクルを発生させるために、平面や円オブジェクトを追加します。 今回は円を追加して面を貼って、それにヘアパーティクルを設定してみました。
この髪の束をベースに、髪の毛の流れを調整していくのですが、その前に視点を固定するためにカメラを設置しておきます。
正面から撮影するカメラを設定する
カメラは正面に設置するのですが、レンズは通常のパースの効いたものではなく「平行投影」に設定します。
カメラのプロパティタブから、レンズのタイプを「平行投影」に変更します。
次にカメラをオブジェクトの正面に設置します。 N キーでプロパティパネルを開き、カメラの回転を X 90°、Y と Z は 0°にして正面を向けます。
次にレンダリングする画像の縦横比と寸法を設定します。 一般的には正方形が使われると思うので、出力プロパティの寸法を設定しておきます。
今回は 1024 × 1024 に設定してみました。 最後にテンキーの 0 キーでカメラ視点にして、ヘアーパーティクルを設定したオブジェクトの位置を調整します。
マテリアルを設定する
次に作業しやすいように、髪とワールドのマテリアルを設定しておきます。 ワールドの方は真っ黒にします。
ヘアーパーティクルのマテリアルの方はベースカラーを白 ( FFFFFF ) にして、エミッション ( 放射 ) の色も白 ( FFFFFF ) にします。
またヘアーパーティクルのエミッターは、レンダーとビューポート表示の両方で「エミッターを表示」のチェックを外して非表示にします。
またビューポートでの表示は毛先が細い方が見やすいので、ヘアーの形状を「ストリップ」にしておきます。
ヘアーの形状を「ストリップ」にするには、レンダリングエンジンを一度 Eevee に変更します。
ビューポートを Cycles レンダーにすると、下記図のようになります。
※ マテリアルを放射にしてあるのでシーンのライトは必要ありません
あとはヘアーパーティクルの粗さ、ねじれなどの各パラメータを調整して、髪の束の形を好みの形になるように調整します。 今回は下記のように髪の束を作ってみました。
髪の根本をランダムにする場合は斜めにする
ヘアーパーティクルでは髪の毛先側は調整できるのですが、根元側が直線になってしまいます。
僕の場合は根本側もランダムにしたかったので、オブジェクトを30°ほどカメラに対して手前に傾けてみました。
こうすると傾けた分だけ、髪の発生源の高さが変わるので、下図のように少しだけ根元側がランダムになります。
カメラは平行投影になっているので斜めにしても問題ありません。 斜めにした分、正面から見た場合髪の長さが短くなるので、長さを長めに調整します。
あとは同じ要領で複数の髪の束を作り、Cycles でレンダリングすれば、髪の透過マップの出来上がりです。
ノーマルマップもレンダリングしてみた
ノードを変更してノーマルマップもレンダリングしてみました。
ノードは下記リンク先のページを参考にさせていただきました。
cycles – Bake hair particle system to textured low-poly mesh – Blender Stack Exchange
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」にチェックがはいってるのを確認してください(デフォでチェックされてると思いますが)。