Volume Coordinate Modifier



座標変換(ボリューム)は、データの表示を直交座標から別の座標系へと変更をします。

カスタム変換以外には球座標への変換があらかじめ用意されています。

球座標

(x, y, z) 座標を(phi, theta, r)座標へと変換をします。言い換えれば、Z-stack された Equirectangular な平面データとみなすことになります。

R min/max

Z の範囲 (0,1) から、R への変換を (min,max) の範囲に制限します。
min が 0 以上の場合は、中空の球殻状のデータに相当します。(たとえば惑星の大気のような)

カスタム座標



(x, y, z) 座標を任意の座標へと変換をします。変換はGLSL内で呼び出されるカスタム関数を編集することで行われます。

パラメーター

カスタム関数には3つまでのパラメーター情報を送れます。
モディファイア内のパラメーターグループ "Custom" の3成分が送られます。

カスタム関数の編集

テキストエディターパネルが開かれている場合には、"編集"ボタンを押すとカスタム関数がエディタに送られます。

下は座標変換用のカスタム関数の例になります。



この関数は座標を三角関数を使って歪めています。



ここで定義されているカスタム関数
vec3 GetDeformedCoord(vec3 vecOrg){}
がメインのシェーダー内から呼ばれます。
入力の vec3 vecOrg は元の3次元テクスチャの座標になります。
関数は、射影された3次元テクスチャの座標を vec3型 として返します。

パラメーター

先に述べた3つのパラメーターは文字列 #p0#, #p1#, #p2# に代入されます。
上の例では、変数 float p0 に #p0# のパラメータが代入されています。

ボリュームシェーダー内で使用するマクロ

GTRIM

GTRIMが1に定義されている場合、[0-1]の範囲から外れた領域は破棄されて表示されません。
そうでない場合には、繰り返しとして3Dテクスチャが表示されます。

GUSEMATRIX

GUSEMATRIX が定義されていないか 0 の場合には、データの勾配が必要なときには、変形された座標での差分から直接計算をして勾配を計算します。
もし GUSEMATRIX が1の場合には、元の座標で得られた勾配にカスタム定義された配列をかけて勾配を計算します。
#define GUSEMATRIX 1
mat3 GetDeformNormalMatrix(vec3 vecOrg, vec3 deformedCoord){
	return mat3(1, 0, 0, 0, 1, 0, 0, 0, 1);
}
配列は、関数 mat3 GetFrformed Matrix(vec3 vecOrg, vec3 deformedCoord) で定義します。
ここで vecOrg はもとの3Dテクスチャ座標、deformedCoord は変形後の3Dテクスチャ座標です。

戻る
inserted by FC2 system