てらりんぶろぐ



 超不定期でごめんなさい><><><><>   昔のテンプレに戻してみた^^^^^^^^^



スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

君にマテリアル!

「やぁ、キャシー」
「あら、トムじゃないの!」
「今日は君の誕生日だろう? 心から祝福するよ。ハッピーバースデイ、キャシー!!」
「覚えていてくれたのね! とても嬉しいわ!」
「僕のこの祝福の気持ちはとても言葉じゃ表現し尽くせないんだ。だから、君にプレゼントを用意したよ!」
「あら、どんなものかしら?」
「それは・・・このマテリアルさ!!」
「まぁ・・・! なんて・・・ステキ!!」
 そんなマテリアル。
 というわけで、今回はマテリアルです。
 今更な感じですが、やはりマテリアルは永遠のテーマです。
 今回は画像がいっぱいで愉快な感じですが、無闇やたらと複雑に書いてあるかもしれません。
 マテリアルですから。

 Gooの英和辞書によると、Materialとは・・・
━━ a. 物質の, 物質的な; 肉体的な; 世俗[物欲]的な; 有形の; 重要な (be ~ to); 【法】判決に影響する.
━━ n. 材料, 原料; 資源; 要素; 資料 ((for)); 題材; 生地; (有望な)人材; (pl.) 用具 (writing ~s).

 だそうで。
 日本語ではよく「材質」とか「質感」なんて呼ばれたりするようです。
 モデルができてても、材質がなきゃただのよく分からない「形」ですが、材質を決めてやることでやっとそのモデルが「物」になるわけですね。

 今回はひたすら順番にマテリアルの各項目を見ていきます。
 正直つまんないです。たぶん。
 まぁ、がんばっていきましょう。

 私の自論ですが、3Dというのは芸術方面のジャンルであるように見せかけて、極めてシステマチックな側面を持っていると思っています。
 もちろん、モデルを作るだけだったら適当にちまちま作業をこなしていけば良いだけなのですが、マテリアルとなると一気に敷居が高くなります。
 設定値の意味も分からずに見た目だけを追いかけていると、設定に無駄な時間がかかるだけでなく、複雑な表現をしようと思った時に手も足も出ない・・・ということになりかねません。
 そんなわけで、今回はちょっとばかり踏み込んだ説明も入るかもしれませんが、悪しからずご了承くださいってな感じです。

 あと、リファレンスはちゃんと読みましょう。
 私個人としては、リファレンスは色々と細かいことを説明してくれていて結構重要な情報源だと思っています。
 嫌がる人は多いですが、しっかりそのソフト(Mayaに限らず)を使いたいならちゃんと慣れましょう。



 さて、リアルワールドではマテリアル(=材質)は数え切れないほどに存在します。
 プラスチック、鉄、金、ダイヤモンド、水晶、石、人の肌、麻、シルクなどなど・・・。
 とはいえ、3D世界でそれらの種類を全て用意することは当然不可能です。
 なので、Maya上ではマテリアルを大まかな種類(MaterialType)として区分けしてあります。
 タイプ別に用意された様々な項目を調整してやることで、材質を上手く表現してやるわけですね。
 今回は、標準的に用意されたMaterialTypeの中から、Lambert・Blinn・Phong・Anisotropicについてある程度書くことにします。
 他に用意された物は割と特殊なので割愛。



 長い前置きは終わりです。
 それでは、まずはLambertから。
 ちなみに、Lambertは設定できる項目がCommonMaterialAttributes(=共通アトリビュート)のみなので、結果として他のマテリアルにも継承されるものばかりです。(一部の特殊なマテリアルは除く)

 MayaのリファレンスによるとLambertとは・・・
ツヤのないサーフェス(チョーク、つや消しのペイント、光沢出しをしていないサーフェス)をスペキュラハイライトを使わず再現するマテリアルシェーダです。
 とのこと。
 要は艶のないゴムのようなオブジェクトを作るのに適しているってわけですね。
 読み方はランバート。少し洒落てランベルトってのもアリらしい。
 ちなみに、Lambertさんが考えたからLambert。安直。
 スペキュラーがない分、計算が速いのが特徴。

Color
デフォルトのマテリアルカラーです。

 ↑すごいシンプルな説明です。
 科学的に説明すると、日本語で拡散反射光と言われるもので、オブジェクトに光が当たった際に拡散する(光の)色ということになります。
 逆に言えば「その材質が吸収しない色」ということもできます。
 どうしてこんな複雑な説明が必要かというと、複雑なプラグインシェーダなどでは吸収色を指定してやる必要がある場合もあるため、多少なりこういう理解があると取っ付き易さが違うからです。
 今は必要ありませんが。
 mat001
 左から、Colorに黒、赤黒、赤を設定したもの。他は初期値。
 これを見ると、世の中に真黒は存在しないということが良く分かりますね。
 ちなみに、ライトは以後も共通してDirectional(初期値)一灯です。

AmbientColor
デフォルトでは黒に設定されます。つまり、マテリアルのColorアトリビュートに作用しません。Ambient Colorアトリビュートを明るくすると、マテリアルにライトが照らされ、2つのカラーが混ざり合って、マテリアルのColorアトリビュートが影響を受けます。シーン中にアンビエントライトがある場合、これらの光のカラーと明るさは、アンビエントライトがマテリアルの最終的なカラーに与える影響の大きさをコントロールするのに使用されます。

 読み方はアンビエントカラー。
 日本語で周囲色や環境色と呼ばれる色。
 すごく単純に説明すると、Shade(陰)の部分の色を決めます。
 本来、純粋な意味での環境色を設定するなら、AmbientColorは設定せず、AmbientLightで表現するのが正解です。
 まぁどっちでもいいことですが。
 一般的には、強すぎる陰の色を和らげるのに使われるようです。
 人肌のマテリアルの場合、暗い茶色などを入れてやるだけでだいぶ印象が変わったりします。
mat002
 Colorを白にし、AmbientColorをそれぞれ設定。
 こんなに印象が変わります。

Incandescence
マテリアル自身から放出されるように見えるライトのカラーと輝度。Incandescence(白熱光)オブジェクトは他のオブジェクトを照らしません(光源にはなりません)。たとえば、溶岩をシミュレートする場合は、Incandescenceアトリビュートを明るい赤色に設定します。デフォルト値は0(黒)です。

 インカンディッセンスと読むらしい。
 日本語だと自己発光色と呼ばれます。
 上記の通り、自己発光しているようなオブジェクトに設定します。
 よく使われるのは蛍光灯とかね。
mat003
 で、設定してみたらAmbientと結果が一緒。
 こういうことが起こるから、AmbientとIncandescenceの使い分けが出来ない人が増えてしまうのです。
 ちゃんと違いを理解しましょう。

 AmbientColorは環境の色ということで、陰の部分(光が当たっていない場所)を置き換える色です。
 それに対し、Incandescenceは全体を底上げする色です。
 イメージ的には、Photoshopで、黒で書かれたレイヤーを塗りつぶすか、そのレイヤーの上にスクリーンで色を乗せるかの違いに近いです。
 塗りつぶしは他のレイヤーに影響しませんが、スクリーンを乗せた場合はそれ以下のレイヤー全ての色が底上げされて明るくなるってことですね。
(正確にはちょっと違いますが)
 ↑の二つが同じ結果になったのは、Colorが底上げされようのない100%白だったから、というわけです。
mat004
 Colorの値を下げて二つを比べたもの。
 こうすると違いが如実にわかります。
 こんな感じに二つを比べて、ちゃんと働き方の違いを見極めていくのが大切だと思われます。
 ちなみに、Incandescenceの裏技的な使い方として、Colorを黒にし、Incandescenceにテクスチャを割り当ててやることで、ライトに全く影響されない(シェーディングされない)表現が可能になります。
 ローポリ制作なんかでは割と重宝したりします。たぶん。

Translucence
マテリアルが光線を伝達、拡散させます。半透明なサーフェスに注ぐ光は最初にサーフェスに吸収された後、すべての方向に拡散されます。デフォルトの0に設定すると、オブジェクトを通して光は見えません。1に設定すると、すべてのライトが通過して表示されます。デフォルト値は0です。

 トランスルーセンス。
 半透過と呼ばれるものです。
 よく引き合いに出される例として、手のひらを太陽に透かして見れば真っ赤に流れる僕の血潮みたいな感じのアレがあります。
 不透明なオブジェクトなのに、オブジェクトの向こうにある光が見えるわけですね。
 あとは、カーテンの反対側で、カーテンの向こうにあるライトによって作られる影が見える、とか。(つまり、入浴シーンでカーテンの向こうにいるシャワーを浴びる女性のシルエットが見えるアレです)
mat005
 光の回り込みが微妙に大きくなっているのが分かるでしょうか。
 つまり、本来光が当たっていない部分にも透過(内部拡散)した光が当たるというわけですね。
 ただ、影に関する操作をしない場合、Translucenceの効果は意外と確認し辛いです。
 なお、SSSはTranslucenceをパワーアップさせたもので、サーフェイスのすぐ内側に仮想のソリッドなオブジェクトを置き、そのサーフェイス全体にTranslucenceの効果を与えてやることで拡散の距離と色を限定してやって、より具体的な効果を得るというものです。たぶん。

Diffuse
マテリアルが全方向にライトを反射できるようにします。Diffuse値はColor設定に適用されるスケーリング要素のようなものです。値が高いほど、実際のサーフェスカラーがColor設定に近づきます。有効な範囲は0~∞です。スライダの範囲は0(0は光がまったく反射しない状態を意味します)~1ですが、もっと高い値を入力できます。デフォルト値は0.8です。

 ディフューズ。
 直訳すると「発散[拡散・流布]する[させる].」らしいです。
 つまり、光の拡散(=色の出方)の強さを表すわけですね。
 私はあまりここの値を弄ったことはありませんが、本当にリアルにやろうと思ったらここを弄るのが正解なのかも。
mat006
 拡散が0だと、当然色を設定しても真っ黒になります。
 見た感じ、単純に色の出具合(=強度)を調整する物と考えて良さそうです。



 さて、次はSpecularShadingAttributeを持つオブジェクトに行きます。
スペキュラハイライトとは
サーフェスの光沢は、サーフェスの状態に応じて異なります(たとえば、濡れた魚は乾いた葉より光沢が強くなります)。サーフェスの光沢の度合いに応じて、ライトの反射の仕方が異なります。
光沢のあるオブジェクトは、光を直に反射します。つや消しのオブジェクトは、光を拡散させます。スぺキュラハイライトは、光源が一定の角度で反射されるオブジェクト上の場所を示します。オブジェクト上の反射は、その周囲にあるオブジェクトからの光を示します。云々

 つまり、ツヤです。

 Mayaには大きく三つのスペキュラ(光沢)表現が用意されています。
 Blinn、Phong、Anisotropicの三つです。
mat007
 こんな感じの三つです。
 違いがあまり無いように見えるかもしれませんが、設定の仕方は三者三様で、弄ってみると全く別素材になってきます。
 使い分けが大事。

Blinn
金属のサーフェス(たとえば真鍮やアルミ)をシミュレートするのに特に効果的で、ソフトなスペキュラハイライトを持つマテリアル(シェーダ)です。
Blinnマテリアルのアトリビュートを設定して、ハイライトのサイズおよびサーフェスが周囲を反射する効果をコントロールすることができます。

 ブリン。
 もう選択に困ったら基本的にこれを使えばいいってくらい普遍的に使えるシェーダ。
 手軽で綺麗。
 ジェームズブリンさんは偉大な人だ。

Eccentricity
サーフェス上のハイライトのサイズを調整します。有効な範囲は0(ハイライトなし)~0.999(幅の広いハイライト:サーフェスはそれほど明るくならない)です。0.1を指定すると、小さいポイントハイライトが作成され、ハイライト内のサーフェスは非常に明るくなります。デフォルト値は 0.3 です。

 エキセントリシティー。(正確には、イクセントリシティ)
 風変わり, 奇癖; 【数】離心率. ってことで、エキセントリックな値です。
 スペキュラーが出る範囲を設定することができます。
mat008
 違いが分かりやすいですね。

SpecularRollOff
斜めから見た時、サーフェスがその周囲(環境、他のサーフェス)や色を反射する効果を作り出します。スライダの範囲は0~1です。デフォルト値は0.7です。
BlinnマテリアルスウォッチでSpecular Roll Offのエフェクトをよりはっきりさせるには、Reflected Colorにテクスチャを割り当てます。

 スペキュラーロールオフ。
 要はハイライトの強さです。
 設定簡単すぎ。
mat009
 見た目そのまんま。
 原理はともかくとして、スペキュラーを弄ろうと思ったらEccentricityと合わせて大きさ・強さと捉えれば問題ないでしょう。

SpecularColor
サーフェス上のスペキュラハイライトのカラー。Specular Colorの値が黒(0)である場合は、サーフェスハイライトが生成されません。デフォルト値は0.5です。

 スペキュラーカラー。
 ハイライトの色です。
 黒=ツヤ無しということで、使おうと思えばハイライトの強さとしても使えます。
 BlinnにはRollOffがあるのでそういう使い方をする必要はありませんが、Phongの場合はこっちで変化をつけてやる必要があります。
mat010
 結果としてRollOffを弄った時と同じ感じに。
 黒だとLambertと一緒ですね。

 お次はPhongです。
Phong
鮮明なスペキュラハイライトを放つガラス状または光沢のあるサーフェス(車の成形部品、電話、バスルームの備品など)を表現するマテリアル(シェーダ)です。

 まぁ使いようによっては色々。

CosinePower
サーフェス上のハイライトのサイズを調整します。有効な範囲は2~∞です。スライダの範囲は2(幅の広いハイライト:サーフェスはそれほど明るくならない)~100(小さなハイライト:サーフェスは非常に明るい)までですが、もっと大きな値を入力できます。デフォルト値は20です。

 さいんこさいんたんじぇんとのコサインです。
 三角形のアレですね。
 Phongの場合、Specularの強さに関して触れることができるのはこの値だけです。
 シンプル。
mat011

 強さによってスペキュラーの大きさと強さが逆比例っぽく変化。
 プラスチックっぽい。

 最後はAnisotropicです。
Anisotropic
CD、羽毛、あるいはベルベットやサテンといった布地など、溝のあるサーフェスを表現するマテリアル(シェーダ)です。Anisotropicマテリアルのスぺキュラハイライトの外観は、これらの溝の特性や溝の方向に依存します。Specularシェーディングアトリビュート(光沢のあるハイライト)は溝の方向性や特性を定義します。
等方性マテリアル(PhongやBlinnマテリアルなど)は、スペキュラライトを全方向にまったく同じように反射します。等方性の球体を回転しても、スペキュラハイライトは静止したままです。
異方性マテリアルは、それぞれの方向に別々にスペキュラライトを反射させます。Anisotropicマテリアルの球体を回転させると、溝の方向に応じて球体のスペキュラハイライトが変化します。
Anistropicマテリアルのアトリビュートを設定して、ハイライトの外観をコントロールし、溝の方向と広がりを決定し、粗さと反射率を設定し、球面の不自然さ(Fresnel index)を減少させることができます。

 アナィサトラピックって読むっぽい?
 つまりアレです、普通の丸いスペキュラーじゃ満足できなかった時にどうぞってことで。
 髪の毛とかに便利かな。

Angle
溝の方向を決定します。値の範囲は0.0(デフォルト)~360.0です。均一でないスぺキュラハイライトに対するXおよびYの方向を決めます。

 これに関しては動画を用意しました。
 矢印に合わせてAngleが変化します。
 最初が1で最後が360ですね。
こちら
 拡張子はm1vでお願いします。

Spread X/Spread Y
これは、X方向とY方向にどの程度、溝が広がっているかを決定します。X軸方向は、U方向を反時計回りに、指定した角度回転したものです。Y方向は、UV空間でX方向と垂直に交わります。
Spread Xの場合、値の範囲は0.1~100.0でデフォルトは13です。Spread Yの場合、値の範囲は0.1~100.0でデフォルトは3.0です。
大きな値は、X方向あるいはY方向に滑らかに変化するサーフェスに対応します。小さな値は、精巧な構造を持つサーフェスに対応します。値を大きくするとX方向あるいはY方向にスペキュラハイライトのサイズが収縮し、値を小さくするとスペキュラハイライトは拡散します。
Spread Xの値とSpread Yの値が等しい場合、サーフェスは等方性(すなわち、全方向に対して同等にスムーズな性質)になります。Spread Xの値がSpread Yの値より大きい場合、サーフェスはX方向で滑らかで、Y方向で粗くなります。
たとえば、繊維がX方向に走る布地をレンダリングすると、Y方向に沿ってより多くのハイライトを発しながら不均一に拡散します。

 スプレッド、つまり広がり。
 まぁつまり、ハイライトの強さと向きを同時に決めるってことでしょうかね。
 これも結構調整が微妙です。
mat013

 Xを極端に高くするとハイライトは線上になり、XとYを同じ値にするとハイライトは異方性を失う、と。

Roughness
サーフェスの全体的な粗さを決定します。範囲は0.01~1.0です。デフォルトは0.7です。この値を小さくすると、サーフェスはより滑らかになり、スぺキュラハイライトは一部に集中します。この値を大きくすると、サーフェスはより粗くなり、スペキュラハイライト部分は拡散したように広がります。

 ラフさってことで、これが高いとハイライトがぼけます。
 粗くなっちゃうわけですね。
 こういう部分の調整が結構重要だったりします。
mat014

 見たまんま。

FresnelIndex
フレネルとは、球面の異常を減少させるため、いくつもの同心円状のリングで構成されている、平面的なレンズです。Fresnel Indexアトリビュートの値は、反射光の波を入射光の波にコネクトするフレネル係数の計算に使用されます。たとえば、水のFresnel Indexは1.33です。1.0~20.0の間で値を指定します。

 いまいちよく分かりませんねー。
 今後使う機会があったら研究してみます。
mat015

 パッと見はただの強さに見えます。
 そもそもAnisotropicというのが目に見えない(あるいはサーフェスで表現しきれない)細かな表面を擬似的に再現するためのものなので、それらによって起こされる乱反射的なものを制御する値なのでしょう。
 本気で弄るなら押えるべきなのかも。



 というわけで、終了。
 超長い。
 面倒くさかったなぁ。

 次回は気が向いたらレイトレースとかそこらへんをやっていくつもり。
スポンサーサイト

テーマ:3DCG - ジャンル:コンピュータ

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

http://westside.blog21.fc2.com/tb.php/193-f215034d
この記事にトラックバックする(FC2ブログユーザー)

 | HOME | 

FC2Ad

プロフィール

おなまえ:てらりん
うまれたひ:秘密
せいべつ:攻め
しょくぎょう:ぐらひっか

人間ってのは気を抜くと漫然と生きてしまう、ということをブログで痛感。
気付くと放置してるもんなー。
あれやるこれやると言っておきながら、何もやってないね。

リンク

このブログをリンクに追加する

うさちゅん

 

ブロとも申請フォーム

この人とブロともになる

ぶろぐないけんさく

カレンダー

08 | 2017/09 | 10
- - - - - 1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

最近の記事

最近のコメント

最近のトラックバック

カテゴリー

イロイロ☆


人気blogランキングへ



・BLOOG-RANKING【投票】

 

RSSフィード

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。