« C4D ChannelShader | トップページ | C4D CamMapClibの正式IDを取得しました… »

C4D ChannelShader…02

前回は、自分でも何を打ち込んでいるのかわからない状態で…

わからないまま、ですが…
続けてみます。

前回の、フレームワークを、プラグインフォルダに入れても、マテリアルのダイアログに現れるだけで、選択しても何も起こりません。

/*
ChannelShaderPlugin
testChannelPlugin
*/


var pluginID = 1000007;

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

  GetName();
  GetID();

  GetInfo(settings);

  InitSettings(settings);
  InitRender(settings);

  Message(settings , message);
  EditData(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;}

// CHANNEL_DIRECTBUMPとCHANNEL_RAYTRACINGのコンビネーションを戻す
testChannelPlugin::GetInfo(settings){return;}

// シェーダーセッティングを初期化
testChannelPlugin::InitSettings(settings){return;}

// rdとしてOutput()機能に渡される何かを戻す
testChannelPlugin::InitRender(settings){return;}

//ハンドルC4Dメッセージ
testChannelPlugin::Message(type , data){return;}

// ユーザがシェーダーをダブルクリックする時に呼ばれる
// ダイアログなどを表示する

testChannelPlugin::EditData(settings){return;}

//指定されたポイントで色を戻す
testChannelPlugin::Output(settings , rd , p , n , d , t , texflag , vd){return;}



//main ============================================================================
main()
{
  //C4Dへシャーダーの登録
  Register(testChannelPlugin);
}

Channelshader_02

テクスチャのポプアップから「testCHShader」を選択しても、上の様に何も表示されません。
念の為、クリックしましたが、ファイル選択ダイアログが開かれます。
全くの、無選択状態。

message()とか?

取り合えず、選択できたときの為に、ポイントPの色を返すOutput()で適当に赤を返すことにしました。

//指定されたポイントで色を戻す
testChannelPlugin::Output(settings , rd , p , n , d , t , texflag , vd){
  return vector(1.0 , 0.0 , 0.0);//赤を返す
}

引数は沢山ありますが、無視して赤(1.0 , 0.0 , 0.0)を返してみました。

では、プラグインを再読み込みして、同じようにテクスチャのポップアップから…
何も起こりませんなぁ…
最低限必要な事は、何だろうね…

では、マテリアルが変更されたり、作成されたときに呼ばれる…
Settings()を変更…

// シェーダーセッティングを初期化
testChannelPlugin::InitSettings(settings){
  return TRUE;
}

成功が戻る…
と言う事なので、引数を無視してTRUEを返してみる。

実行、実行…

Channelshader_03

「testCHShader」が表示されました…
マテリアルのプレビューに赤枠が表示されたまま…
この状態で、オブジェクトを追加してみましたが、オブジェクトマネージャには表示されるものの、ビューには現れず…
テクスチャをクリアすると、ビューにオブジェクトが表示されました。

無謀すぎだね…

ま、壊れたら再インストールで… ガンガン行きましょう…

では、カラーを決めるOutput()にrdを渡すInitRender()…
rdは独自のクラスとあるね…
通常の変数では、ダメなのか?

// rdとしてOutput()機能に渡される何かを戻す
testChannelPlugin::InitRender(settings){
  var rd = 0;
  return rd;
}

これで実行すると…
先ほどと同じで、選択はできるけど…
Channelshader_03

やはり、rdはクラスではないと、ダメなのか?

とりあえず、クラスを追加…

class test
{
  public:
    var test;
}

コンストラクタとか、必要だろうか…?
とりあえず、InitRender()を変更…

// rdとしてOutput()機能に渡される何かを戻す
testChannelPlugin::InitRender(settings){
  var rd = new(test);
  return rd;
}

これで、更に実行…

Channelshader_04

ようやく、プレビューにも反映されました…
オブジェクトに適用してレンダリングしてみます。

Channelshader_05

問題なくレンダリングされました… 本当に問題ないのだろうか…?

残りは、Message()とEditData()とGetInfo()…
ダイアログは、マテリアルエディタ内に構築されないんだよね…きっと
モーダルダイアログなんだよね… そんな事も無いのか…?

残りは、後ほど… それともOutput()を少しやってからか…?

今回は、なんだか、扉を叩きまくって無理やり入ったような感じだね…
取りあえず、色を付ける事ができました…

|

« C4D ChannelShader | トップページ | C4D CamMapClibの正式IDを取得しました… »