« C4D スクリプトマネージャのメニューの状態。 | トップページ | artist side/C4Dコミュニティ 「キャラクタを1フレーム毎にobj形式でXPressoでの保存」?-01 »

C4D 全てのライトオブジェクトの明るさを0.0にすると…レンダリング設定の自動照明

アニメーション中に全てのライトの明るさを0.0にして真っ暗にするつもりが…
レンダリング設定のオプションの自動照明の値がOnになっていると、真っ暗になりませんね。

静止画を作成している場合は、全てのライトの明るさを0.0にすることは、皆無に近いと思いますが…

さて、この設定を操作するスクリプトを作ってみましょう。
ここ数回の記事、レンダリング設定とメニューの状態を読んでくれた人は、すぐに作れると思います。

さて、R11では、こんな感じになります。

/*
レンダリング設定/オプション/自動照明の操作 R11
2009.7.11
*/


main(doc , op)
{
  renderdata()#RDATA_AUTOLIGHT = !renderdata()#RDATA_AUTOLIGHT;
}

SDKを見ると、自動照明の定数RDATA_AUTOLIGHTは、R9.5と共通ですね。

では、メニューの状態です。
レンダリング設定の自動照明の値がOnの場合は、スクリプトのアイコンはハイライト状態にしましょう。

それ以外は可視状態。ま、常に可視状態ですね。

ENABLE = TRUE;
CHECK = renderdata()#RDATA_AUTOLIGHT;

これで、レンダリング設定の値をアイコンのクリックだけで操作ができます。
勿論、現在の設定状態もアイコンの状態から知る事ができます。

R11用、自動照明On/Off切り替えは、「autolightR110.ZIP」です。

では、R9.5です。

/*
レンダリング設定/オプション/自動照明の操作 R9.5
2009.7.11
*/


//現在のレンダリング設定
GetActiveRenderData(doc)
{
  if(!instanceof(doc , BaseDocument))return;
  var rd = doc->GetFirstRenderData();

  if(!rd->GetBit(BIT_ARDATA))rd = rd->SearchNext(BIT_ARDATA);

  return rd;
}


main(doc , op)
{
  var ard = GetActiveRenderData(doc);
  var ctn = ard->GetContainer();

  ctn->SetData(RDATA_AUTOLIGHT , !ctn->GetData(RDATA_AUTOLIGHT));

  ard->SetContainer(ctn);
}

ActiveRenderDataを取得する関数がないのと、設定値を直接適用できない分、R11よりも行数が増えます。

ではR9.5のメニューの状態です。

var ard = doc->GetFirstRenderData();
if(!ard->GetBit(BIT_ARDATA))ard = ard->SearchNext(BIT_ARDATA);

ENABLE = TRUE;
CHECK = ard->GetContainer()->GetData(RDATA_AUTOLIGHT);

これで、R9.5も自動照明の設定が操作でき、アイコンの状態から自動照明の設定状態がわかります。

R9.5用、自動照明On/Off切り替えは、「autolightr95.ZIP」です。

|

« C4D スクリプトマネージャのメニューの状態。 | トップページ | artist side/C4Dコミュニティ 「キャラクタを1フレーム毎にobj形式でXPressoでの保存」?-01 »