« C4D ChannelShader…04 最小限とは… | トップページ | C4D ChannelShader…06 ダイアログを取り付ける… »

C4D ChannelShader…05 出力カラーにNoiseクラスを使用

最低限のチャンネルシェーダーのOutput()に…
Noiseクラスを使用して…
ポイントPの x 、y…
時間 t…
を使って、タイムラインの時間に対してもノイズが変化するようにして見ましょう…

/*
ChannelShaderPlugin
testChannelPlugin
*/


var pluginID = 1000007;


//testChannelPlugin ===============================================================
class testChannelPlugin : ChannelPlugin
{
  public:
  testChannelPlugin();//コンストラクタ

  GetName();//チャンネルシェーダ名
  GetID();  //プラグインID

  //ポイントPの色
  Output(settings , render , p , n , d , t , texflag , vd);
};

testChannelPlugin::testChannelPlugin(){super();}

testChannelPlugin::GetName(){return "testCHShader";}

// http://www.plugincafe.comから取得した、このプラグインの為のplugin idを戻す
//テストID:1000001-1000010

testChannelPlugin::GetID(){return pluginID;}

testChannelPlugin::Output(settings , rd , p , n , d , t , texflag , vd){
  return vector(1.0 , 0.0 , 0.0);//赤を返す
}



//main ============================================================================
main()
{
  Register(testChannelPlugin);
}

必要最小限になったので、Output()に渡されるsettings/rdが使用できなくなります。
vdは、今は必要ありません。

残りは全て使えますが、p と t を使います。
では、Output()を書き換えます。

testChannelPlugin::Output(settings , rd , p , n , d , t , texflag , vd){
  var niz = new(Noise);
  var sc = 0.1;
  var col = niz->Noise(p.x / sc , p.y / sc , t);

  return vector(col , col , col);
}

Noiseクラスは以前に取り上げたので、詳しくは…
http://villager-and-c4d.cocolog-nifty.com/blog/2009/06/c4d-coffee-nois.html
http://villager-and-c4d.cocolog-nifty.com/blog/2009/06/c4d-coffee-ra-1.html

Output()は見ての通りで…難しいことはありません。
nizにNoiseクラスを割り当て…
scは、ノイズ空間とテクスチャUV座標のスケール。
colは、Noise空間に座標x,y,時間tを渡した0.0~1.0の数値

後は単純にcolを各rgbに設定しています。

単純ですね。

Channelshader_12

アニメーションに対応しなくても、ノイズクラスを旨く使えば、木目や鉱石など独自の専用シェーダを作る事が… できるかなぁ…

でも、マテリアルのチャンネルシェーダには、既にノイズがあるし… 数も豊富だから…
このノイズを使って独自のシェーダを作らなくても…

|

« C4D ChannelShader…04 最小限とは… | トップページ | C4D ChannelShader…06 ダイアログを取り付ける… »