Blenderで人の髪や動物の毛などを表現する方法を解説します。Blenderのマテリアルシェーダーには、Principled Hair BSDFやHair BSDFがあり、物理的にもある程度正確な毛髪の表現が可能です。
人間の髪や動物の毛についてもざっとまとめて、なるべくリアルな毛髪マテリアルを作れるように解説していきます。※マテリアル設定の解説のメインは人間の髪です。動物の毛についてはまた別の記事で詳しく解説していけたらいいなと思っています。
この記事は、BlenderのPrincipled BSDF, Hair BSDFの使い方とリアルな毛髪表現を解説した初心者~中級者向けの記事です。
難易度
人間の髪の構造
CGで表現する際に少し知識が必要になってくるだろうと思うので簡単に構造などをまとめておきます。
人間の髪の構造は右図のようになっていて、中心部をメデュラ、中間部をコルテックス、一番外側をキューティクルといいます。

髪の「色」:コルテックスに含まれるメラニン色素
- コルテックスは髪の毛の中心部にある層で、髪の質感・強度・色を司ります。
- ここに含まれる メラニン色素(ユーメラニンとフェオメラニン)の種類と量によって、髪の色が決まります。
- ユーメラニン:黒~茶色の色素
- フェオメラニン:黄~赤系の色素
ユーメラニンが多くメラニンの総量が多い…黒髪
メラニンの総量が少ない…ブロンド
メラニンをほとんど含まない…白髪

髪の「ツヤ」:キューティクルの状態
- キューティクルは髪の最外層にあるウロコ状の薄い細胞です。
- このキューティクルの整い方や光の反射具合が、髪のツヤ(光沢感)を決めます。
- キューティクルが滑らかで整っていると、光が一定方向に反射してツヤが出る

動物の毛
「人間の髪」と「動物の毛」は、見た目も構造もかなり違います。BlenderなどのCGにおいても、両者を同じ設定で表現するのは不自然になることが多いです。
見た目の違い
■ 太さ:犬や猫の毛は人間より細く、犬ではおよそ1/2の太さです。逆にゾウなどは人間より太い毛を持っています。
■ 色:どちらもメラニン色素の量と種類で色が決まりますが、動物は遺伝的に模様や柄があり、色の分布が体の部位によって大きく異なります。
■ 密度:ラッコのように1平方センチあたり10万本以上の密度を持つ動物もいます。動物は一般に「主毛(ガードヘア)」と「副毛(アンダーコート)」を持つダブルコート構造が多く、人間はシングルコート(1本)です。マルチーズやプードルなど一部の動物もシングルコートです。
■ ツヤ:動物の毛はキューティクルが薄く、ぱさついた質感になりやすいです。馬や短毛犬に見られる光沢は、皮脂を多く含んでいたり、毛の密度、生え方が寝ていることによるものです。


CG上の違い(Blender的な話)
マテリアルもそうですが、生え方もその動物によって適切な生え方を設定する必要があります。
人間の髪
- ツヤが重要(光が細く反射する)
- 方向がそろっている
- 色の変化は控えめ
- 反射ハイライトが長く伸びる
動物の毛
- 方向がバラバラ
- 短くて密集
- 色のグラデーションや模様が多い(しま模様、斑点など)
- 毛束ではなく「ふさふさ感」「細かな乱反射」が重要(毛束がある部分もある)
- キューティクル反射があまり目立たないことも多い
まとめ
- 人間の髪 → ストランドを整える。ツヤを出す。方向性を持たせる。
- 動物の毛 → ストランドを不規則に。長さや色をランダム化。ボリューム感を出す。
髪用シェーダー
Blenderには以下の2種類の髪用シェーダーがあります。
- Hair BSDF
- Principled Hair BSDF
どちらもCyclesでしか使えません。
Hair BSDFの方が比較的使い方が難しいです。初心者はPrincipled Hair BSDFの使用をオススメします。
以下パラメータや使い方について詳しく解説しています。
Hair BSDF
Hair BSDF ノード(Cycles専用)
Hair BSDF ノードは、髪の毛のためのシェーディングを追加するノードです。髪の反射や透過の表現に使われます。
※Cycles専用です。EEVEEでは使えません。

Component
- Component(成分)
髪の見え方を制御するための成分を選べます。通常はReflection(反射)とTransmission(透過)の両方を使い、Mix Shaderノードで組み合わせます。- Reflection(反射)
髪の表面で光が跳ね返る成分。髪のつやや光沢を表現します。 - Transmission(透過)
髪を通り抜けて反対側から出てくる光の成分。柔らかい髪や透明感を表現するのに使います。
- Reflection(反射)


入力項目
それぞれReflection(反射)とTransmission(透過)で違う値を入れてもいいですが、以下の画像は全て二種類で同じ値を入れています。
Color(カラー)
髪の毛の色を指定します。

Offset(オフセット)
光が髪に当たったときの反射や透過の角度(光の回転・ずれ具合)をコントロールします。
髪にできる輪のツヤの位置が変わる感じです。

Roughness U/V(ラフネス U/V)
髪の表面で光がどのくらい散乱するかをコントロールします。
U方向: 光の進む方向に沿ったラフネス
V方向: それに直交する方向のラフネス
髪の「つや感」や「柔らかさ」に影響します。
光が上から当たってる通常の場合は、Uの方向に値が増えると光沢の輪の幅が広がり、Vの方向に値が増えると光沢が輪になるように広がるみたいな感じです。

Tangent(接線)
髪の流れの方向(接線)を入力します。
Principled Hair BSDF
Principled Hair BSDF ノード(Cycles専用)
Principled Hair BSDF は、髪や毛皮をリアルにレンダリングするための 物理ベースのシェーダー で、自然な髪の表現を簡単に作れます。
以下の3つの要素を設定でき、細かくリアルな表現が可能です。
- 色の指定(Direct / Melanin / 吸収係数)
- 反射や透過の粗さのコントロール(Chiang/Huangモデル)
- 自然に見えるランダム化(Color / Roughness)
髪は一本一本の違いが最小限である方がリアルに見え、このノードでは Random Color と Random Roughness を使って、髪の「色」と「粗さ」にランダム性を与えられます。※髪色のランダムさはMelanin Concentrationモデルにしかない。
髪色の決め方を3種類から選ぶ + 反射・透過のモデルを2種類から選ぶ + ランダム化 という組み合わせで調整できるノードです。(選択肢が多いので複雑に見えますが、大体使うモデルは限られているので、あとでオススメを紹介します。)
※Cycles専用です。EEVEEでは使えません。

反射・透過のモデル(光学挙動の計算方法)
- Chiang Model
- 髪の流れ方向と直交方向でラフネスを別々に設定できる
- ハイライト(グリント)の鋭さや拡がりを調整しやすい
- コート(毛の表面のつや)も表現可能
- Huang Model
- 髪の断面を楕円形として計算
- マイクロファセットベースで反射・透過を計算
- 楕円断面のアスペクト比で髪質の違いを表現

初心者でも使いやすいのはChiang Modelです。
色の付け方(どのように髪色を決めるか)
- Direct Coloring
- 単純に RGB 色を指定
- 直感的でわかりやすい
- Melanin Concentration(メラニン量)
- 髪の色素の量と種類で色を決める
- よりリアルな髪色を表現可能
- Tint で染色も可能
- Absorption Coefficient(吸収係数)
- 光学的な減衰率を直接指定
- 文献や論文に基づいた数値で正確に表現したい場合用

初心者でも使いやすくリアルな髪質を表現できるのはMelanin Concentrationです。
入力項目
共通
IOR(屈折率)
屈折率(IOR)は光線がどれだけ方向を変えるかを定義します。1.0では透明な物質のように光線がまっすぐ通過し、値が高いほどより強い屈折が生じます。デフォルト値は1.55です。
屈折率を強くするとどんどん色が薄くなります。

Offset(オフセット)
キューティクルの角度を変えることで、ハイライト(グリント)の傾きを調整。人間の髪は低めが自然。

Random Roughness(ランダムラフネス)
髪のラフネスにランダムさを追加。光の反射に微妙な違いを作る。

Random
ランダム値のソース。未接続なら Curves Info → Random を自動で使用。
※Curves Infoノードはヘアーパーティクルがメインで使われていた昔はHair Infoノードでした。

モデルの種類
Chiang Model(チアンモデル)
髪の反射を「髪の流れ方向」と「直交方向」のラフネスでコントロールするモデル。

Roughness(縦方向の粗さ)
小さいと金属っぽくギラつく、大きいとマットになる。

Radial Roughness(横方向の粗さ)
小さいとハイライトが集中し、大きいと光が髪の1本の幅全体に広がる。

Radial Roughnessが大きくなると光沢以外の部分はほぼ光が無くなります。

Coat(コート)
最初の光の反射だけを強調して、毛皮のようなつやを再現。
値が大きいと髪の色味も変わることがあります。

Huang Model(ホアンモデル)
- 髪の断面を楕円形として計算
- マイクロファセットベースで反射・透過を計算
- 楕円断面のアスペクト比で髪質の違いを表現
「髪の断面が楕円形」であることを考慮したモデル。
※ヘアーパーティクルシステムには完全には対応していません。

Aspect Ratio(アスペクト比)
髪の断面を 楕円 としたときの「短軸 ÷ 長軸」の比率。
- アジア系の髪: 0.8 ~ 1.0(ほぼ円形)
- 白人系の髪: 0.65 ~ 0.9(やや楕円)
- アフリカ系の髪: 0.5 ~ 0.65(強い楕円)
長軸の向きはカーブの法線(Curve Normal)に揃えられる。
ただし、この制御は Geometry Nodes で作ったヘアカーブに対応していて、古いパーティクルヘアではサポートされない。
あまりに専門的な見方すぎて素人だと違いがよくわかりません…。

Roughness(ラフネス)
マイクロファセットモデルによる反射と透過の粗さ。

Reflection / Transmission / Secondary Reflection
反射・透過・二次反射の強さ(基本的に 1.0 にして物理的に正しいままが推奨)。
それぞれのプロパティの詳細
Reflection(反射)
髪の表面で 最初に反射する光の成分。
この反射は常に白色(色はつかない)。
物理的に正しく表現したいなら、値は 1.0 のまま にしておくのが推奨。
Transmission(透過)
髪の中を通り抜ける光の成分。
髪の内部の 色素(メラニンなど)の色 を拾って見える。
これも物理的に正しくするなら、1.0 のまま が推奨。
Secondary Reflection(二次反射)
光が
- 髪の中に入る →
- 髪の裏側で反射する →
- 再び外に出てくる
…という 内部反射の成分。
この光も内部の色素の色を拾い、見た目としては 入射方向に近い角度 に出てくる。
こちらも物理的に正しくするなら、1.0 のまま にするのが推奨。
Color Parametrization 色指定の方法
Direct Coloring(直接指定)
RGB色をそのまま指定。簡単。

Melanin Concentration(メラニン量)
実際の髪の色素をベースに色を決定。リアル志向に最適。MelaninとMelanin Rednessで色を調整する
- Melanin(ユーメラニン:黒〜茶色の色素)
- Melanin Redness(フェオメラニン:赤〜黄系の色素)

- 白 → ユーメラニン無し、フェオメラニン無し
- 金髪 → ユーメラニン少なめ、フェオメラニン少なめ
- 茶髪 → ユーメラニン中程度、フェオメラニン少なめ
- 赤毛 → ユーメラニン少なめ、フェオメラニン多め
- 黒髪 → ユーメラニン多め、フェオメラニン少なめ
+ Tint で染色が可能。
Tintで元の地毛に色を染めたような表現ができます。白にすると染色効果が無しになります。
髪を染めるとき、発色を良くするには脱色するのと同様に、メラニン量を低くしてTintで色をつけると発色が良くなります。

Random Color(ランダムカラー)
髪のメラニン量にランダムさを追加。一本一本の色のバリエーションを作る。

Absorption Coefficient(吸収係数)
- Absorption Coefficient(吸収係数) は光学的な数値を直接入力する欄で、専門的な用途向けです。
- 入力は 上から R、G、B の順 で、それぞれ その波長の光がどれだけ吸収されるか を表します。
- 値が大きいほど光が吸収される → その色は髪色として残らなくなる
- 値が小さいほど光は吸収されず → その色が髪色として出やすくなる
- RGBノードをそのままつないで比率を指定することも可能で、その場合は直感的に補色が髪色として表現されます。

まとめ・オススメ設定とポイント
Principled Hair BSDF は、
- 色の指定(Direct / Melanin / 吸収係数)
- 反射や透過の粗さのコントロール(Chiang/Huangモデル)
- 自然に見えるランダム化(Color / Roughness)※髪色のランダムさはMelanin Concentrationモデルにしかない。
を一つにまとめた「髪専用シェーダー」です。
リアル系の髪や毛皮は Melaninモード+Chiangモデル が扱いやすいです。
例えば右図の髪の設定はこんな感じです。
Melaninモード+Chiangモデル
- Melanin 0.859 Melanin Redness 0.145で髪の色 黒 (Tintは無し)
- Roughness 0.223 Radial Roughness 0.355 で光沢幅を少し狭くしてツヤっとさせる
- Random Color 0.227 Random Roughness 0.200で髪色とツヤのランダムさを少しだけ入れる。(綺麗な髪にしたかったのでなるべく少なく)
ちなみに髪の太さは0.0002m

また、Curves Infoノードを使うことで、生え際を透明シェーダーとミックスして自然にすることもできます。

Curves InfoノードのInterceptは毛先1、根本0の数値を出力しているので、生え際、毛先だけに違う色や他のシェーダーを適用することが可能です。

ヘアーカーブガイド
ヘアーカーブ記事をまとめて、どこから読めばいいか導線を書いたガイド記事です。ヘアー、ファー、ヘアーカード作成まで。
参考サイト・記事
参考にさせていただいたサイトや記事です。



