![見出し画像](https://assets.st-note.com/production/uploads/images/130596566/rectangle_large_type_2_91e7a1ee3512f2f7e588a7efd5ee2411.png?width=1200)
文系の blender 4.0 マテリアル | 布
CGは、メカニカルなものよりも不定形なものの表現が苦手だという固定概念があるせいか、きれいな皺のよった布が一枚置かれているだけで、シーンにリアリティが増す気がします。
ここでは、プリンシプルBSDFのプロパティを中心に、布/ファブリック系のマテリアルについて整理してみました。
サンプルはすべて cycles でのレンダリング。EEVEEについては、設定が大きく異なる場合のみ付記した。
環境 Blender 4.0.2 , Mac Mini M1 OS 14.2
基本
デフォルトのプリンシプルBSDF の ベースカラーを #877E77 とし、粗さ(Roughness)を 1.0 とした。これを基本とします。
![](https://assets.st-note.com/img/1707459590328-DcmdiEhJVg.jpg?width=1200)
やや単調な印象もあるが、形状のためもあり、じゅうぶん布にみえる。通常の布は表面に細かな起伏があるはずなので、粗さは 1.0 とすることが多い。
布オブジェクトは、ソリッド化(Solidify)モディファイアを適用して 1mmほどの厚さをつけ、さらに縁を若干厚くしている。
シーン(Sheen)
基本に加え、シーン > ウェイトを 1.0 とし、粗さを 1.0 とした。「粗さ」とは、表面のなめらかさではなく、チントのカラーの影響を表す数値( 1 = 100% )
チントカラー(#FFFFFF)の影響をうけて白味を帯びている。サンプルは若干布に厚みがあるものの、絹のような光沢のある質感を表現できる。
![](https://assets.st-note.com/img/1707460125626-KHInMglFNs.jpg?width=1200)
シーン(Sheen)は、表面に光沢を与える機能のひとつ。以前の名称はベルベット(Velvet)。その名称通り、絹やサテン生地のような効果を得られる。EEVEEでは適用されない。
画像テクスチャ
基本に加え、ベースカラーに、実際の布の画像テクスチャを接続した。画像データは、SketchUpTEXTUREから入手した。
![](https://assets.st-note.com/img/1707461115510-jrw9bfcSNc.jpg?width=1200)
基本的で手軽な方法だが、やはりリアリティは増している。特別なタイプの布や、布だけクローズアップするのでないかぎり、通常はこれで問題ないだろう。
画像テクスチャ + ノーマルマップ(Normal Map)
画像テクスチャのみでも不足ないことが多いが、布の種類によっては光の反射が均一でないほうがリアリティがある。
ここでは、Architextures から入手したフェルトの画像を、ベースカラーおよび、ノーマルマップ - ノーマル に接続した。
![](https://assets.st-note.com/img/1707545972850-p8JRHwA3Zq.jpg?width=1200)
![](https://assets.st-note.com/img/1707546632846-qlFhdDxF1k.jpg?width=1200)
光沢に変化が生まれ、フェルト生地のようなやや毛羽立った布の雰囲気を表現できる。
ノーマルマップは、表面の凹凸を擬似的に表現する機能のひとつ。面のノーマル(法線)を操作し、表面の光沢に変化を与える。
アルファ(Alpha)
基本に加え、ベースカラーを#EEEEEE に変更し、やや縦に引き伸ばしたノイズテクスチャを、アルファ に接続した。
![](https://assets.st-note.com/img/1707461760986-XlUB2sNRDg.jpg?width=1200)
![](https://assets.st-note.com/img/1707462726092-4JFv56XIp3.jpg?width=1200)
透明度を適宜調節することで、薄手の木綿生地や、カーテン生地などにも利用できそうだ。
アルファ に画像テクスチャを接続することで、PNG透過画像のようにマテリアルの一部を透明にできる。通常はモノトーンの画像を利用し、黒寄りが透明、白寄りが非透明になる。
EEVEE
EEVEEではデフォルトではアルファは機能しない。マテリアルプロパティの「設定」プロパティ - プレンドモードを、アルファブレンド等に設定する。
粗さ + バンプ(Bump)
布の粗さは通常あまり低くすることはないが、ここでは粗さを 0.4 とし、ノイズテクスチャを、バンプ - ノーマルへ接続し、若干の凹凸をつけた。
![](https://assets.st-note.com/img/1707523514650-jGGt7NPZ4Z.jpg?width=1200)
![](https://assets.st-note.com/img/1707547903829-Fsn4SqV185.jpg?width=1200)
鏡面反射も増えて革のような質感になる。ソファなどにも利用できるだろう。ベースカラーにはノイズテクスチャでやや濃淡をつけている。
ディスプレイスメント + バンプ(Bump)
Tiling Textures から入手したニット織りの画像テクスチャを、ディスプレイスメント - ディスプレイスメントに、および、バンプ - ノーマルに接続した。
![](https://assets.st-note.com/img/1707523664597-TkeZfl8N8h.jpg?width=1200)
![](https://assets.st-note.com/img/1707549382217-LHIxX3tC2j.jpg?width=1200)
ディスプレイスメントで厚みも増し、ニットなど編み物の雰囲気が出ている。セーターや、カーペットにも利用できそうだ。
ディスプレイスメント(Displacement)は、バンプ(Bump)のように擬似的にではなく、直接ジオメトリに影響を加え凹凸をつける。ただ、布の表面のような細かな凹凸を表現するには、極端な面の細分化が必要で処理にも負担がかかるため、負担の軽いバンプ(Bump)で細部を補っている。
cycles のデフォルトでは、ジオメトリに影響を与えるディスプレイスメントは反映されない。マテリアルプロパティの、設定 > サーフェス > ディスプレイスメントで、「ディスプレイスメントとバンプ」を選択する。
EEVEEでは、別途ディスプレイスメントモディファイアを適用する必要がある。blender 4.0 テクスチャマップの設定
パーティクルヘアー
毛布や毛皮などの表現には、パーティクルヘアー機能を使う。
ここでは具体的な作成方法は述べないが、ヘアの長さ、太さの変更と、ヘアダイナミックス > 構造 > ランダム でヘアの方向に若干の変化を加えた他はほぼデフォルトの設定。
![](https://assets.st-note.com/img/1707523757973-hOUkmlRxbq.jpg?width=1200)
下は、マテリアルに「ヘアBSDF」を適用し、ヘアをやや長くして、パーティクル編集モードでブラシがけ(グルーミング)を行った。
![](https://assets.st-note.com/img/1707523766292-P6GSywJ8G4.jpg?width=1200)
パーティクルヘアーは若干習得に時間がかかるのと、レンダリング処理に負担をかけるのが難点だが、上のような表現には欠かせない。
パーティクルヘアーは、本来はキャラクターなどの毛髪を表現する機能。毛布などの毛織物、あるいは、芝や苔などの表現に利用したりと用途は広い。
![](https://assets.st-note.com/img/1707526002113-jpob93MhgH.jpg?width=1200)
ちなみに、上は パーティクルを適用する前の、ヘアーBSDF。本来の使いかたではないかもしれないが、ちょっとおもしろい化学繊維のような質感だ。
まとめ
布は身近なものだが、CGでは、クロスシミュレータやスカルプトを使ったモデリングもやや難易度が高く、リアルな質感を表現するにもひと工夫が必要です。
それだけに、CGクリエータの腕のみせどころ、のような一面もあるかもしれません。上のサンプルは、可能なかぎりシンプルなノードで作成しているため、要素の追加や改善の余地がたくさんあるでしょう。参考になれば幸いです。