background

マップによるマテリアルの切替とか。

2010年07月13日(Tue)

前回のForum3Dのお題でレンダに投稿した死神の鎌みたいなやつ、一応テクスチャを起こしたので配付用に梱包してUPしました。ダウンロードはフォーラムのダウンローダから。

アップにするとこんな感じ。

100713-02

レンダ時にディスプレイスメントを有効にすると、ちょろっとだけ浮いてるように見える。

はたして。

以前、一つのマテリアルグループ内でまったく異なる材質を切り替えることは可能か、というような質問を頂いた。通常マテリアルが異なるところは、マテリアルグループが分けられているのが大半である。けど、中にはマテリアルグループが一つだけで、テクスチャで色だけを変化させてるようなジオメトリがあったり、製作者の意図よりも細かいところで材質を切り替えたい、というようなケースも発生する。

材質を分けたい部分がポリゴン単位で分かれているのなら、Poserのグルーピングツールを使ってマテリアルグループを新しく作成してしまえばいい。けど、複雑な模様のように材質の切替を画像で制御したい、という場合はそうもいかない。

まだPoserを始めたばかりの頃、マテリアルを切り替える場合の考え方を簡単な式に直してみたことがある(過去記事のこの辺り)。この数式の働きを一つのノードで行うのがブレンダー(Blender)ノードだ。

たとえば、以下の二つのようなまったく異なる材質があったとする。基本小道具の球を使っているので、マテリアルグループは一つしか存在しない。

100713-03

そこで、ブレンダーノードを使って下記のようにシェーダを組んでみる。アルファマップというのは適用具合を制御する画像のことで、だいたい透明度を制御するトランスマップの意味でも使われてたりする。ソフトによってはTiffやPNGのアルファチャンネルを読み出してくれるものもある。Poserの場合モノクロ256階調の画像または0~1の値を持つノードならなんでもアルファマップになる。

100713-04(クリックで倍サイズ)

すると、アルファマップの値が1となる部分(白い部分)には入力2のマテリアルBが適用され、0となる部分(黒い部分)には入力1のマテリアルAが適用される。

100713-05

ノードとノードの間を繋ぐと、その間は掛け算になる。この場合だと、ブレンド(Blending)の1に画像が黒のところは0が乗算されて0に、画像が白の部分は1が乗算されて1になる。したがって、ブレンドの値は0から1まで画像によって変化することになる。もしブレンドの値が0.5だったとすると、値は0から0.5までしか変化しないことになる。

この「ノード間は乗算される」ということが頭でわかってくると、最終的な値を自由にコントロールできるようになる。

たとえば鏡面値を、強いところは2.0、弱いところは0.4にしたいと考える。普通に白黒の画像を繋いだだけでは、値は0から1までしか変化しない。そんな時は数値演算(Math Functions)ノードを使って下図のようにシェーダを組んでみる。

100713-06

数値演算ノードは値1と値2を数値演算引数(Math Argument)の指定通りに計算するノードだ。今、1.6という値を持つ値1に、0から1までの値を持つ白黒のタイルが入力されて乗算される。すると、タイルの黒い部分は0に、白い部分は1.6になる。そこに、値2の0.4が加算されて結果黒い部分は0.4、白い部分は2.0になるわけだ。それをさらにルートノードのPoserサーフェスの鏡面値に接続して、設定値の1が乗算されて結果はこんな感じ。

100713-07

変化しているのは鏡面反射値だけである。

ここで、さらにハイライトサイズも変化させたいと考える。ハイライトサイズは鏡面値の弱い部分で0.02、強い部分で0.16に変化させるとすると、ノードの接続は下記のようになる。

100713-08

結果はこんな感じ。タイルの白黒の境界部分で、テカリの強さだけでなくハイライトサイズも変化しているのがわかる。

100713-09

こんな風に数値演算やブレンダーノードを使用すれば、1枚のアルファマップで色だけでなく鏡面値やバンプなど、さまざまな値を好きなように変化させることができる。

100713-10100713-11

適当に材質を組んでみた例。

シェーダが複雑になればその分計算はちょっと遅くなるかもしれないが、上手く工夫すれば必要な画像の枚数を減らすことができる。読み込む画像を減らせるなら多少の負荷低減にはなるわけで、覚えておいて損はないかな、と。

で、今回の鎌はそういう感じでマテリアルを作っていた、という話。



Comments

ナゼこの世界に数式がッ!!

↑(この辺り)のroseさんのコメントですが私も同意です(^^;
場合によってだと思いますが、まず数式でマテリアルの設計図みたいなのを書いてそれを当てはめていかれるんですね。
それがその通りの結果を出すのだから驚きです。
死神の鎌をようやく頂きましてマテリアルを見てみましたが、どうやればこんな複雑な設定が出来るのか秘密が少し分かったような思いです。
私は真似をするしかないです(^^;

Name
sannzi #u2lyCPR2
Site
URL
Post Date
2010-07-19
Post Hour
00:00:00

Edit

ぱそこんは計算機です(笑)

>sannziさん
あはは、同意ですか~(^^; Poserも中では計算式がうごめいているはずなんですがー(笑)
マテリアルは、たとえば鏡面値とかならこっちは0.2ぐらい、こっちは1.5ぐらい……とだいたいの数値を決め打ちしてからノードを繋いでいきます。
全部頭で考えると混乱してしまうので(笑)、最初に根元の1つのノードを作ってから順番に細分化していくことが多いですね。それか末端からちょっとずつ足していったり。できるだけ単純化して考えて、それを積み上げていくという感じです。
死神の鎌、DLありがとうこざいました^^

Name
Kyotaro #NWbyPjWY
Site
URL
Post Date
2010-07-21
Post Hour
00:00:00

Edit

Post Comment

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


Trackback

※このブログにトラックバックを送信する場合、お手数ですが本文中にブログ該当記事へのリンクを含めてください。

トラックバックURL:http://rutenshikai.blog63.fc2.com/tb.php/428-f632c6c6



Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

07 | 2017/08 | 09
- - 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 31 - -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。