« C4D 「ターゲットカメラ」の様に「カメラターゲットオブジェクト」を追加しない「ターゲットカメラ」ユーザスクリプト | トップページ | C4D R11.5 Demo 日本語ヘルプをインストール »

C4D 「ターゲットライト」の様に「ライトターゲットオブジェクト」を追加しない「ターゲットライト」ユーザスクリプト

前回の「ターゲットカメラ」と同じです。

ライトオブジェクトバージョンです。

/*
ターゲットライトの改良 SDK R11
2009.10.27
*/


main(doc , op)
{
  //オブジェクトの割り当て
  var lit_obj = new(LightObject);
  var tgt_tag = AllocTag(Ttargetexpression);
  var tgt_obj = object(0);

  //ライトの設定
  lit_obj->SetName("ターゲットライト");
  lit_obj#LIGHT_TYPE = RT_LT_SPOT;
  lit_obj->InsertTag(tgt_tag);

  //ターゲットオブジェクトの設定
  if(!tgt_obj){
    tgt_obj = new(NullObject);
    tgt_obj->SetName("ライトターゲット");
    doc->InsertObject(tgt_obj , NULL , NULL);
  }

  //ターゲットエクスプレッションの設定
  tgt_tag#TARGETEXPRESSIONTAG_LINK = tgt_obj;

  //カメラの追加
  doc->InsertObject(lit_obj , NULL , NULL);
}

ターゲットカメラのコードを少し変更し、すっきりしました。
前回のターゲットカメラも上の様に変更すると分かり易いかも…

以下が、ライトのタイプです。

RT_LT_OMNI 全方向
RT_LT_SPOT スポット(丸)
RT_LT_SPOTRECT スポット(角)
RT_LT_DISTANT 無限遠
RT_LT_PARALLEL 平行
RT_LT_PARSPOT 平行スポット(丸)
RT_LT_PARSPOTRECT 平行スポット(角)
RT_LT_AREA エリア

SDK R9.5の場合

/*
ターゲットライトの改良 SDK R9.5
2009.10.27
*/


main(doc , op)
{
  //オブジェクトの割り当て
  var lit_obj = new(LightObject);
  var tgt_tag = AllocTag(Ttargetexpression);
  var tgt_obj = doc->GetFirstObject();

  //選択オブジェクトの取得
  if(tgt_obj){
    if(!tgt_obj->GetBit(BIT_AOBJ))tgt_obj = tgt_obj->SearchNext(BIT_AOBJ);
  }

  //ライトの設定
  lit_obj->SetName("ターゲットライト");
  lit_obj#LIGHT_TYPE = RT_LT_SPOT;
  lit_obj->InsertTag(tgt_tag);

  //ターゲットオブジェクトの設定
  if(!tgt_obj){
    tgt_obj = new(NullObject);
    tgt_obj->SetName("ライトターゲット");
    doc->InsertObject(tgt_obj , NULL , NULL);
  }

  //ターゲットエクスプレッションの設定
  tgt_tag#TARGETEXPRESSIONTAG_LINK = tgt_obj;

  //カメラの追加
  doc->InsertObject(lit_obj , NULL , NULL);
}

これで、無駄にターゲットオブジェクトをシーンに追加しません。

|

« C4D 「ターゲットカメラ」の様に「カメラターゲットオブジェクト」を追加しない「ターゲットカメラ」ユーザスクリプト | トップページ | C4D R11.5 Demo 日本語ヘルプをインストール »