3DCGで髪の毛を作ろうとすると、何本ものカーブが必要になり、ポリゴン数が爆発的に増えてしまいます。そんなときに便利なのがヘアーカードです。ヘアーカードとは、髪の毛のテクスチャを板ポリなどのポリゴンに貼り付けて表現する手法で、ポリゴン量を大幅に減らしつつリアルな髪を作成する方法としてよく使われます。
今回は、Blenderのヘアーカーブを使った簡単なヘアーカードの作り方と、生え際を自然に見せるためのコツをわかりやすく解説します。
特に便利なのが「AOV Output」ノード。これを一度設定しておけば、髪の表現を何度でも修正しながら、テクスチャを簡単に書き出せます。「うまく髪の流れを作成できないけどやり直すのがめんどい…」と悩む方には、ぜひ使ってほしい機能です。
この記事を読めば、手軽にリアルなヘアーカードを作れるようになるはずですので、ヘアーカード作りがいつもめんどくさくて仕方がないという方に読んでいただきたいなと思っております。
この記事は、Blenderで簡単にヘアーカードを作成する方法を解説している中級者向けの記事です。
難易度
ヘアーカーブの操作方法や基礎的な使い方は以下の記事で紹介しています。↓
AOV Outputノードの使い方については以下の記事で紹介しています。↓
ヘアーカードとは?
ヘアーカードとは、板ポリ(Plane)に髪の毛テクスチャを貼って、頭に並べたり重ねたりすることで細かいリアルな髪の毛の質感を表現するものです。
髪の毛一本一本作らなくてもいいのでポリゴンを削減できるのと、ヘアーカーブやヘアーパーティクルなどの独自のシステムを使わないので、そのままゲームやアバターで使えるという利点があります。

ヘアーカード作成準備
レンダリング設定
レンダリング設定はEEVEEにして、
Cruvesの形をStrip、
Additional Subdivisionを3くらいに設定しておきます。

ヘアーカード作成
ヘアーカードは、右図のようにヘアーカーブで作ったカーブを横に寝させて、それを上から撮影し、テクスチャとして使います。
下の板ポリ(Plane)はテクスチャ画像の大きさがわかりやすいように表示しているだけです。この範囲内にカーブを並べます。

ヘアーカーブを生やす
並んでるカーブと同じものを作ってみます。
小さい板ポリを作って同じようにX軸に90°回転して配置します。
- Scale と Rotationを適用しておく
- カーブを生やす方向を板ポリの表にしておく。
そして板ポリに
Curve > Empty Hairでヘアーカーブをつけます。

スカルプトモードに移動し、1本だけでいいのでカーブを生やします。

ジオメトリノードモディファイアをつける
さきほど生やしたカーブにヘアーカーブ用ジオメトリノードをつけて形を整えていきます。
ストレートヘアの場合、つけるのは主に
- Interpolate Hair Curves
- Trim Hair Curves
- Set Hair Curve Profile
- Hair Curves Noise
です。Surface Deformは最初からついているのでそのままにしておいてください。
以下に主なパラメータと効用を書きますが、載せている数値は目安ですので各自のモデルにあったものに調整してください。

Interpolate Hair Curves
カーブの本数を決めます。
Surfaceにつけているplaneを設定する。
Densityに入れる数値でカーブの本数が変わる

Trim Hair Curves
長さを変えます。
Length Factorで基本の長さを決める
Random Offsetで長さにランダムさを出す

Set Hair Curve Profile
太さを変えます。
Radiusで太さを変更できます。
毛先の細さ:このジオメトリノードをつけるとデフォルトで毛先が細くなるように設定してあります。毛先の細さはFactor Minの値を変えることで変更できます。

Hair Curves Noise
カーブにノイズを加えます。
Distance…変形の「移動量」
Shape…曲線に沿った変形の分布。0で全体が変形する
Scale…ノイズの大きさ。
Scale along Curve…根元と毛先でノイズの細かさを変える
Offset per Curve…カーブごとにランダムなノイズのズレをつける。
いろいろ数値を変えてみてください。

他にも様々なヘアーカーブ用ジオメトリノードがあるので、パーマや縮毛、房などいろいろな表現ができます。ジオメトリノードについては以下の記事で詳細に解説しています↓
複数種類のカーブを作っておく
1つカーブができたら、ついている板ポリとカーブを一緒に複製して隣にならべていき、ジオメトリノードの数値を変えて多様なカーブを作ります。

ヘアーカード用テクスチャを出力する
マテリアル設定
ヘアーカーブにコンポジットで出力するためのマテリアルを設定します。
AOV Outputノードを設定して以下の値を出力していきます。
Curves Infoノードから
Intercept(value)
Random(value)
Geometryノードから
Normal(color)
Ambient Occlusionノードから
AO(value)
※Randomは毛に自然な色ムラを作るためのものです。Interceptは根本から先端までを0~1に正規化したような値です。

AOV Outputノードの使い方については以下の記事に書いていますので、使ったことない方は読んでみてください。↓
撮影準備
カメラのタイプをOrthographic(平行投影)にして解像度サイズをテクスチャサイズに設定します。(4092×4092、2048×2048など)
カメラでカーブの全体が入るように調整し、背景の板ポリを不可視化します。
背景を透過したいので、レンダープロパティでTransparentにチェックをいれます。
EEVEEのまま撮影します。

コンポジット設定
コンポジットの設定です。AOV Outputノードで出した値と、デフォルトで出力できるAlphaの値、合わせて5つのテクスチャを出力します。
設定としてめんどくさそうに見えるかもしれませんが、一回これを設定しておくと、毛の流れが気にいらないな、と思ったら何度でもやり直して、一回クリックするだけで全てのテクスチャを作り直してくれるので本当に便利です。

これも細かいことはAOV Outputノードの記事に書いていますので、なんでMap Rangeノードがあるのかわからない、と言う方はAOV Outputノードの記事を一回読んでみてください。
①Alpha Overノードについて:背景を透過したので、テクスチャにしたときの背景を仮につけておこうということでノーマル出力にAlpha Overノードで背景の色をつけています。色はRGBA(0.5,0.5、1,1)にしています。
File Outputノードの出力プロパティ設定
②画面右のFile Outputノードの出力プロパティ設定について:
大体の出力値が1つの値なので、Color をBW(白黒)にして、Color Depth 16、View を Standardにしています。

normalの出力だけは、下の③Use Node Formatのチェックを外して、ColorをRGBにして出力を上書きしておきます。(Use Node Formatにチェックがついていると、その上で設定したプロパティがそのまま適用されます)
これで、レンダリング(Render Layersノードの④のレンダーボタンを押してもできる)すると、Base Pathに設定したフォルダにテクスチャが5枚書き出されます。(パスのあとにまだ存在しないフォルダ名を書くと、フォルダを新規作成してその中に入れてくれます)

テクスチャとして使う
板ポリ配置のポイント
細長い板ポリを変形できるように割って、UV展開して、テクスチャ画像に合わせます。
板ポリは、真ん中部分で盛り上げて立体感を出すと、頭に並べたときに簡単にペラペラ感が消えていいと思います。
ひねるとか、他にもいろいろな方法で立体感を出せると思いますので、並べるときは立体感に注意して並べてみてください。
ヘアーカードは結構並べるのが難しく手間がかかります。ヘアーカーブシステムを使って簡単に頭部に並べるジオメトリノードセットの解説・無料配布などやっている記事を以下に書きましたのでよければ見てみてください

髪の毛テクスチャマテリアル
マテリアル設定
板ポリに髪の毛テクスチャマテリアルをセットします。
Principled BSDFノードを選択して、
Ctrl + Shift + T
でテクスチャファイルを選択できる画面が出ます。カーブテクスチャを全種類選択して、
Principled Texture Setupをクリックすると、自動的にテクスチャをセットしてくれます。(全ファイルを選択しろって言ったけど、interceptとかrandomはBlenderは理解してくれないのでセットしてくれません。あとで自分で手動でImage Textureノードでセットしてください。)

Principled BSDFの各パラメータ値について
髪の毛のツヤの表現、主に光沢のために調整しています。
Metallic…少し入れるとよく反射するようになる。入れすぎると色が濃くなる
Specular
IOR Level…光沢が強くなる
Anisotropic…髪の毛の天使の輪っかのような、ある方向に集中した光沢が出るようになるのでMaxにしとくといいです。
(ここらへんは別にこれがベストだと思っているわけではないので、各自好きなように調節してください。)


Alpha, Normal
Alpha, NormalはそのままPrincipled BSDFの入力につないでいます。

Random, AO
AO出力はMixノードのMultiplyを使って、陰影をつけつつ好きな色を設定できるようにしています。
Random出力は色相を変化させる値にしています。Map Rangeで出力範囲を狭めて、ランダムさを小さく調節しています。

これらをPrincipled BSDFのBase Colorにつなぎます。

MixノードのMultiplyモード、Bのカラーが髪の毛のベースカラーになります。
Intercept
Intercept出力はカーブの根本から先端まで0~1の値が出力されます。

これを利用して根本部分を透過するために使います。

Mix shaderのFactorにして、Color Rampで範囲を調節して、根本部分にTransparentシェーダーを当てて透過させます。生え際などの表現に使えます。ヒゲやもみあげなどにも。

髪の毛テクスチャ板ポリの裏面処理
もう一つMix Shaderを使い、GeometryノードのBackfacingをFactorにして、裏面もマテリアルを設定します。
裏面も表面と同様、Intercept出力値を使って根本をTransparentノードで透過しています。表面との違いは、透過してない箇所は、TranslucentBSDFを使って、半透明にしていることです。色はBase Colorにつないだのと同じものにしてください。

生え際作りのコツ
以上で大体のヘアーカード作りの基礎的な説明は終わったんですが、おでこでの生え際などを作成するコツを考えてみたのでご紹介します。
今まで作ったヘアーカードでも生え際ってInterceptで根本を透過してある程度作れるんですが、オールバックのキャラとかだと、もうちょっと綺麗に表現したいですよね。ちょっとジグザグした感じで作った方が自然でかっこいいので、このような表現のコツを解説してみます。

ポリゴン
このモデルでは髪はオールバックで、ほぼ1つのポリゴンでできています。(周りのおくれ毛は複数のヘアーカードを追加しています。)
生え際部分の頂点は、面へのスナップを使っておでこにくっつけています。

生え際を作るときのヘアーカーブの層
どんな髪型かにもよるんですが、とりあえず一枚で奥の髪も表現して、生え際も表現したいよってときのヘアーカーブの配置の一例です。
3つのヘアーカーブを使っています。
- 透けないように、奥にも髪が詰まっていることを表現したいために置いてあるヘアーカーブです。今までのヘアーカードの作成法と同じで、横に倒した板ポリにただヘアーカーブを生やしているだけです。
- 生え際を表現するためにカーブ間を少しランダムに開けて(DensityブラシでDistance Min0.03からモディファイアで増毛)カーブを生やしています。板ポリを地面に平行にして、そこにカーブを生やしてブラシで横に流れをつけていますが、そのときになるべくカーブ同士を重ならないようにするのがコツです。
②のコピーをSeedを変更して間にはさんでいます。①と②の境界がはっきりしすぎるときにはコピーをもっと増やしてください。
※他にもいい方法があるのかもしれませんがヘアーカーブは少しでも重なるとカーブがぶつぶつ切れたように見えてしまうので、なるべくカーブが重ならないようわざわざヘアーカーブを3層重ねています。

これを上から撮影して髪のテクスチャを出力しています。
ヘアーカーブガイド
ヘアーカーブ記事をまとめて、どこから読めばいいか導線を書いたガイド記事です。ヘアー、ファー、ヘアーカード作成まで。
参考にさせていただいた動画
参考にさせていただいた動画です。細かい作業工程が違いますがおおまかな流れを参考にさせていただきました。
AOV Outputノードを使ってテクスチャ出力をしたり、少しマテリアルにメタリックを入れるところを参考にさせていただきました。








コメント