« C4D ChannelShader…06 ダイアログを取り付ける… | トップページ | C4D 画角 »

C4D ChannelShader…07 前回の問題は保留にして… チャンネル値

マテリアル毎に設定値を変えられない状態ではあるが…
同じマテリアルでも、同じチャンネルシェーダを使うことがあるだろう…

SDKにはsettings->GetId()で読み取り…
CHANNEL_COLOR , CHANNEL_LUMINANCE , CHANNEL_TRANSPARENCY…
これらの設定値がチャンネルだと言うことらしい…
どれでもなければ-1を返すと…

本当だろうか…

最小限のチャンネルシェーダで確かめる事にします。

/*
ChannelShaderPlugin
testChannelPlugin
*/


var pluginID = 1000007;


//testChannelPlugin ===============================================================
class testChannelPlugin : ChannelPlugin
{
  public:
  testChannelPlugin();

  GetName();
  GetID();
  InitSettings(settings);

  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::InitSettings(settings){return TRUE;}

testChannelPlugin::Output(settings , rd , p , n , d , t , texflag , vd){
  var col = vector(0.0);
  switch(settings->GetId())
  {
    case CHANNEL_COLOR:
      col = vector(1.0 , 0.0 , 0.0);//カラーチャンネルは赤
      break;

    case CHANNEL_LUMINANCE:
      col = vector(0.0 , 1.0 , 0.0);//発光チャンネルは緑
      break;

    case CHANNEL_TRANSPARENCY:
      col = vector(0.0 , 0.0 , 1.0);//透過チャンネルは青
  }

  return col;
}



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

これは、カラーチャンネルでtestCHShaderを設定すると、赤になり…
発光チャンネルで設定すると緑に…
透過チャンネルでは、青になるようにしてみました…

が、実行しても全ては黒になりました…

少し嫌な予感がするのだけど…
C.O.F.F.E.E.SDKは、R6.1からずっとChannelPluginの項目に変更点がありません…
R8からR9でマテリアルエディタのインターフェイス等の構成(内部構成も…)が変わっているにもかかわらず…
ちなみに、BaseMaterialでの現バージョンでのマテリアルの取得/変更も全てが対応しているわけでは無いようで…

お手上げかも知れません…

SDKによると、カラーチャンネル値は、CHANNEL_COLORですが…
マテリアルエディタからのドラッグ&ドロップでは…
MATERIAL_USE_COLORと言う数値になっています…

だからと言って、このMATERIAL_USE_COLORを使っても黒のままでした…

もしかして、やり方が違うのか…

|

« C4D ChannelShader…06 ダイアログを取り付ける… | トップページ | C4D 画角 »