FC2ブログ
   
12
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
   

スポンサーサイト

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

ContourShader φ(・・。)ゞ メモメモ

* 輪郭格納
レンダー設定→mental rayタブの設定
→輪郭→カスタムシェーダ→格納シェーダへ割り当て
パラメータ無し

o contour_store_function
交差ポイント
法線
マテリアルタグ
オブジェクトタグ
三角形のインデックス
カラー
屈折レベル
反射レベルを返す

o contour_store_function_simple
マテリアルタグを返す
※アウトラインのみの描画、または簡易的な輪郭の描画時はこれでおk


* 輪郭コントラスト
レンダー設定→mental rayタブの設定
→輪郭→カスタムシェーダ→コントラストシェーダへ割り当て

o contour_contrast_function_levels
zdelta = 輪郭を描画する時の最小深度(座標単位)
ndelta = 輪郭を作成するときの最小角度(度数単位)
deff_mat = onにした場合は、2つのマテリアル間に輪郭を描画する(普通に輪郭描画される?)
deff_label = onにした場合は2つのオブジェクトラベル間に輪郭を描画する(普通に輪郭描画される?)
deff_index = onにした場合は2つの三角形の間に輪郭を作成する(分割に関係なく三角形のワイヤフレームの輪郭を描画)
contrast = onにした場合はコントラストのしきい値を超えるカラー間に輪郭を作成する
  半透明の場合、他のオブジェクトによって発生するコントラストが影響する
min_level↓
max_level↓
レイの生成を制限する
反射と屈折は1レベルとみなされる
(反射や、屈折の周囲の輪郭を描画させない場合はmax_levelを0に設定する)

o contour_contrast_function_simple
アウトラインのみ描画、または簡易的な輪郭描画時はこれでおk
パラメータ無し


* 輪郭シェーダ

o contour_shader_simple
contour_shader_sinple.jpg
単色、一定幅の輪郭を表示
width
color

o contour_shader_silhouette
contour_shader_silhouette.jpg

オブジェクトのシルエット輪郭を描画する。
color
width

o contour_shader_maxcolor
contour_shader_maxcolor.jpg
輪郭の両側の2つのマテリアルカラーの最大値を取得
輪郭の接地する面の色が違う場合、
その2色の色が混ざった色で輪郭を描画する
width

o contour_shader_curvature
contour_shader_curvature.jpg

面の角度によって線幅が変わる
角度が急なほど幅が太くなる
曲率がndelta(度)よりも小さい場合は輪郭が描画されない(輪郭コントラスト機能)
計算式 : ½(W-w)(1-cosφ)+w
w はパラメータ min_width、W はパラメータ max_width)
max_width = 法線が反対方向を向いている状態
min_width = 法線の角度が0になる場合(幅はmin_widthと同じになることはない。)
color

o contour_shader_widthfromcolor
contour_shader_widthfromcolor.jpg

マテリアルカラーの彩度によって幅が変わる
※半透明の物体の場合 背後のオブジェクトカラーも考慮されてしまうので注意
暗→太い 明→細い
min_width = 明るいカラー
max_width = 黒

o contour_shader_factorcolor
contour_shader_factorcolor.jpg

明るさに応じて線の色が変わる
暗い→黒 明るい→マテリアルカラー
※いくら明るくても線は白くならない 半透明の物体の場合は背後のオブジェクトカラーが考慮
factor = 0の場合は全て黒
1の場合は一番明るい部分がマテリアルカラーと同じ色となり暗くなるにつれて黒へグラデーションがかかる
width

o contour_shader_depthfade
contour_shader_depthfade.jpg

カメラから見た二点間の距離間を元に、カラーと線幅がリニア補間される
near_z = 一番近い所までの距離
far_z = 一番遠い所までの距離
near_color = 一番近い所のカラー
far _color = 一番遠い所のカラー
near_width = 一番近い所での線幅
far_width = 一番遠い所での線幅

o contour_shader_framefade
フレーム数の変化に比例してカラーと線幅を変更する
線を描いたり描かなかったりする時に使える?
frame1 = スタートフレイム数
frame2 = エンドフレーム数
width1 = スタート時の幅
width2 = エンド時の幅
color1 = スタート時のカラー
color2 = エンド時のカラー

o contour_shader_widthfromlight
contour_shader_widthfromlight.jpg

線幅が法線と光源に対応して変化する
計算式 : ½(W-w)(1-cosφ)+w
(w はパラメータ min_width、W はパラメータ max_width)
min_width = 線の最小幅・法線がライトの方向を向いている時
max_width = 線の最大幅・法線がライトと反対方向を向いている時
light = 対応させるライト
color

o contour_shader_widthfromlightdir
contour_shader_widthfromlightdir.jpg

先ほどのシェーダの変化形です
暗黙的に方向を示すライトの代わりに、方向を直接取得します。
color = 輪郭線のカラーです。
min_width = 輪郭の最小幅です。
max_width = 輪郭の最大幅です。
light_dir = 主光源に対する方向です。

o contour_shader_layerthinner
この輪郭シェーダでは、マテリアルの上部に何レベルのマテリアルが存在するかによって輪郭の幅が変化します。
一番上にあるマテリアルでは、輪郭の幅はパラメータで指定した幅になります。
何らかのマテリアルの下にあるマテリアルでは、パラメータによってコントロール可能な係数によって幅が細くなります。
color = 輪郭線のカラーです。
width = 最上位のレイヤにおける輪郭線の幅です。
factor = 輪郭線の幅をレイヤごとに細くしていくための係数です。

o contour_shader_combi
contour_shader_combi.jpg

depthfade、layerthinner、widthfromlightの合わさったシェーダ
輪郭の幅はカメラから遠くになるにつれて細くなる
レイがレイヤーを通過するたびに、線幅に係数が加算されていくが、係数を使用しない場合はレイヤーに幅は関係しない
ライトを指定すると、線幅はライトと面の法泉の方向に対応して変化する、
※ライトとレイヤー両方からの変化もかけられる
near_z = カメラからの最短距離
far_z = カメラからの最長距離
near_color = 最短距離のカラー
far_color = 最長距離のカラー
near_width = 最短距離の幅
far_whidth = 最長距離の幅
factor = レイヤーにそって線幅を変化させる場合に入力する
light = ライトにそって線幅を変化させる場合に入力する
light_min_factor = ライトに対応して線幅を変化させる時の最小係数を入力する


* 輪郭出力
カメラのアトリビュート→mental ray→レガシー出力シェーダ→出力シェーダに割り当て
※レンダリングの最後に呼ばれる
 レガシー出力シェーダが見つからない場合はmelで割り当てる
 connectAttr 輪郭出力ノード名.outValue カメラの名前.miOutputShader ;

o contour_only
最終的に輪郭のみのを描画する
background = 背景色(デフォは黒)
glow = onに設定した場合、ボケる
maxcomp = onに設定した場合、輪郭同士が重なった時に2つのカラーの最大値を使用する
 offの場合は普通のアルファ合成

o contour_composite
通常レンダリングの上に輪郭画像を普通にあわせる
glow = onの場合、ボケる
maxcomp = onに設定した場合、輪郭同士が重なった時に2つのカラーの最大値を使用する
 offの場合は普通のアルファ合成

o contour_ps
黒い輪郭のポストスクリプトコード(.ps)を作成する
絵には作用しない
印刷用
paper_size = サイズ
0→レター 1→エグゼクティブ 2→リーガル 3→A3 4→A4 5→A5 6→A6 7~9→B4~B6
paper_scale = デフォルト→1 ポストスクリプト出力のスケールを決定。
paper_transform_b↓
paper_transform_d↓
ポストスクリプト座標を変換 行列(1b) ここで、b,dはそれぞれのパラメータ
                             0d
若干ずれた位置に出力されるプリンタを使用する場合に補正する事が出来る
title = onにした場合は、ファイル名とフレーム番号、イメージの周囲のフレームを書き込む
landspcape = onにした場合は横書きで出力される(offは縦書き)
ink_stroke_dir = 0以外を設定した場合はそれぞれの輪郭セグメントの太さがベクトルの向きによって決定され、インクペンの様な外観が形成される
    輪郭幅はストロークと同じ方向になったとき最大に成る
ink_min_frac = ink_stroke_dirに対して垂直な角度になったときインクペンのような輪郭線の太さ(最大値)を指定
file_name = ファイル名を指定

ソースの場所はー・・・
C:\Program Files\Autodesk\Maya2010\devkit\mentalray\shaders\contour
スポンサーサイト

プロフィール

トキ杉崎

Author:トキ杉崎
Sound Horizon Kingdom 国民。

CG科にてプログラムのお勉強中。
就職できるかドッキドキなお年頃。

夏と冬のオタクの祭典に出現中。
漫画描きたいし
コスプレしてみたいし
やっりたいこといっぱい。

今欲しいアビリティは
時間を最大限有効活用できる程度の能力。

最新コメント

月別アーカイブ

カテゴリ

トキさんの呟き。

count

メールフォーム

名前:
メール:
件名:
本文:

RSSリンクの表示

QRコード

QR

ブロとも申請フォーム

この人とブロともになる

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