株式会社デジタル・フロンティア-Digital Frontier

Header

Main

  • TOP
  • DF TALK
  • |砂箱|~ Softimage & Mentalray Shader ~

|砂箱|~ Softimage & Mentalray Shader ~

2011/12/26

Tag: ,,

皆さんお久し振りです。

ここ最近の寒さに早くも縮み上がっている開発室ゴトー[@jackybian]です。
さて今回は、『砂箱』のご紹介!

過去ネタで”maya用にコンパイルされたShaderの移植術”をやった訳ですが
si2011以降で実装されたsandboxのダイナミックシェーダービルド機能のおかげで
siもspdlから解放され移植なしでシェーダを使えるようになりやした!ヽ(゚∀゚)ノワーイ

2010まではSI独自の.spdlと.dllというファイルでシェーダが定義されていたのですが、
このsandboxより通常のmentalrayシェーダ(.miと.dll)がほぼそのまま使えるだけでなくシェーダコードの編集もできちゃったりします。
なのでmayaやmax用に作られたmentalrayシェーダもSIで使えちゃうわけです。
という訳で今回のこのsandbox(砂箱)について紹介しようと思います。
使い方は至ってシンプル!*基本的にはファイルコピーだけで以下の通りです。

①【シェーダファイル(.mi, .dll)の準備】
使用したいシェーダを用意します。今回はMy Mentalrayにあるctrl.studioさんのctrl_occlusionシェーダーを試してみましょう。

【フォルダの作成】
次にFactory, Users, Workgroupのいずれかに以下のフォルダを作成します。
■Application\mi
■Application\bin\nt-x86-32 ・・・・・ (32bit用)
■Application\bin\nt-x86-64 ・・・・・ (64bit用)

【シェーダファイルの配置】
.miファイルはmiフォルダへ、.dllファイルはnt-x86-32もしくはnt-x86-64フォルダへコピーします。 

【SIの起動】
Softimage2011を起動します。RenderTreeにてmentalray — Material カテゴリー内に、ctrl_occlusionシェーダーがあるはずです。もしない場合はUpdateボタンを押してみてください。
ctrl_occlusionをRenderTreeにD&Dしてマテリアルにコネクトします。

Region Renderして確認してみると。。。(´゚Д゚`)エッ!? 真っ黒!
でも実はそれほど驚く必要はナシ。dllのロードエラーなど出てるわけではないので。。。
単にパラメータのデフォルト値が正しく設定されていないだけです。
このシェーダーが作られたのはかなり前のようでmentalrayのバージョンアップと共にデフォルト値設定の記述に変更があったようです。
そのため全パラメータが0になっていたからです。
ではそのあたりを修正するとしましょう。シェーダノード上でRMBを押し出てきたメニューからEdit Shaderを選択します。
するとShader Code Editorに.miファイルが開かれ編集できるようになります。
 
この.miファイルでは

color		"basecolor",		#: default 1.0 1.0 1.0

    (データ型)    (パラメータ名),     (#: デフォルト値)
というような記述になっていますが現在のmentalrayでの記述は

color		"basecolor"			default 1.0 1.0 1.0,

    (データ型)    (パラメータ名)      (デフォルト値),          (#: コメント行)
という記述が正しいようです。下記が全パラメータを修正したものです。

min version "3.6.0.8"

declare shader
	color	"ctrl_occlusion" 
	(
		color		"basecolor"			default 1.0 1.0 1.0,
		color		"occolor"			default 0.0 0.0 0.0,
		
		boolean     "blocker"			default 0,
		boolean     "useProbes"			default 1,
		boolean  	"useAlpha",
		
		integer		"nearSamples"		default 128,	#: min 1 softmax 256
		integer		"farSamples"		default 64,		#: min 1   softmax 256
		scalar      "nearDistance"		default 0.1,	#: min 0.0 softmax 10
		scalar      "farDistance"		default 20.0,	#: min 0.0 softmax 320
		boolean     "distEQfalloff"		default 1,
		boolean     "dSamples"			default 0,
		integer     "nSamples"			default 32,		#: min 0 softmax 256
		
		scalar  	"angle"				default 88.0,	#: min 0.0 max 180.0
		scalar  	"minFalloff"		default 0.001,	#: softmin 0.0 softmax 5
		scalar  	"maxFalloff"		default 2.0,	#: softmin 0.0 softmax 20
		
		vector		"normalCamera"		default 0.0 0.0 0.0,
		vector		"basisVector"		default 0.0 0.0 0.0,
		scalar  	"dBlend"	   		default 0.0,	#: min 0.0 max 1.0
		boolean     "dReflect"    		default 0,
		
		scalar  	"gamma"				default 1.0,	#: min 0.0 softmax 2.0
		scalar  	"bias"				default 0.5, 	#: min 0.0 softmax 1.0
		scalar  	"gain"				default 0.5, 	#: min 0.0 softmax 1.0
		
		integer  	"useEnv"			default 1,
		scalar  	"kEnv"				default 0.5,	#: min 0.0 max 1.0
		scalar  	"eHue"				default 0.0, 	#: min -1.0 max 1.0
		scalar  	"eSat"				default 0.0, 	#: min -1.0 softmax 1.0
		scalar  	"eLum"				default 0.0,	#: min -1.0 softmax 1.0
		scalar		"eXpandDynRange"	default 1.0,	#: softmin 1.0 softmax 2.0
		scalar		"eDynRangeStartLum" default 0.5,	#: min 0.0 softmax 1.0
		scalar		"eDynRangeExponent" default 2.0,	#: softmin 1.0 softmax 4.0

		boolean  	"bentNormals",
		boolean		"doBent",
		integer     "spaceBent",		#: min 0 max 7
		boolean		"normalDifference",

		boolean		"useFG",	
		boolean		"owFG"				default 1,
		integer		"fg_rays"			default 220,	#: min 1 softmax 4000
		scalar		"fg_max_radius"		default 1.0,	#: min 0.0001 softmax 10.0
		scalar		"fg_min_radius"		default 0.1,	#: min 0.0001 softmax 1.0
		boolean		"fg_view"			default 1,
		integer		"fg_filter"			default 1,		#: min 0 max 3
		
		boolean		"lightEnable",
		boolean		"secInvs",		
		boolean		"selfocc",
		array light	"light"		
	)

	#: nodeid 708080114

	apply material
	version 1
end declare

この内容で.miを上書きした後、RenderTreeをUpdateし再度、ctrl_occlusionをコネクトしなおしてRegion Renderすると
今度はちゃんとOcclusionが計算されています。(゚∀゚)ノ

これでmaya,max用に作られたmentalrayシェーダーもそのまんまSIで使えるようになりやす~♪
以前お伝えした”maya用にコンパイルされたShaderの移植術”よりずいぶんと簡単に使えますね。
これを機にmaya,maxのmentalrayシェーダで便利なものを探してみてはいかがでしょ?
という訳で「砂箱」もといsandboxのご紹介で・・・・

ちょ、ちょっとまったーーーーーー!!
オイっよく見りゃシェーダのパラメータがズラズラズラズラ・・・しかも意味のよくわからん名前のまんまじゃねーかー!ゴラァ!!って声がっ(汗

ですよねー。こんなんじゃとてもじゃなく使いづらくて洒落になりません。という訳で次回はこの辺りのUIについてご紹介する予定です。
ではまた~ (´∀`*)ノ アディオス

Some shaders are taken from the following Web sites.
○MyMentalray: http://www.mymentalray.com/
○Jan Sandstrom: http://www.pixero.com/downloads_mr.html
○AFK team: http://www.antiflash.net/mfacetglass/images.html
Special Thanks ctrl.studio, jan sandstrom, AFK team! 😀
Pocket

コメント

[…] 前回紹介した『砂箱』ですが、シェーダーUIのとこで終わってましたのでその辺りのことを今回お届けします。 […]

1 thought on “|砂箱|~ Softimage & Mentalray Shader ~”

コメントフォーム

コメントは承認制ですので、即時に反映されません。ご了承ください。

*