« C4D XPresso付きヌルオブジェクトを追加するユーザスクリプト | トップページ | C4D 「ターゲットライト」の様に「ライトターゲットオブジェクト」を追加しない「ターゲットライト」ユーザスクリプト »

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

タイトルが紛らわしいですが…
既存のターゲットカメラを追加すると、カメラ.ターゲットと言うヌルオブジェクトも追加されます。
既にシーンに追加されているオブジェクトをターゲットにする場合は、カメラターゲットをオブジェクトの位置に移動させなくてはいけません。
もしくは、カメラオブジェクトに取り付けられた、ターゲットエクスプレッションのターゲットオブジェクトにターゲットとなるオブジェクトを設定する事になります。

面倒ですね… そんなに面倒だろうか?
クリック一つでターゲットカメラが追加され、ターゲット設定済みだったら便利ですよね。

どんな風に?

選択オブジェクトがあれば、選択オブジェクトをターゲットにします。
複数選択されていれば、選択のトップのオブジェクト。
選択されていなければ、ターゲットオブジェクトを追加。

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


main(doc , op)
{
  //オブジェクト等の割り当て
  var cam_obj = new(CameraObject);           //カメラオブジェクト
  var tgt_tag = AllocTag(Ttargetexpression); //ターゲットエクスプレッションタグ
  var nul_obj;                               //ターゲットオブジェクト用変数

  //カメラオブジェクトの設定
  cam_obj->SetName("ターゲットカメラ");        //名前の変更
  cam_obj->InsertTag(tgt_tag);               //ターゲットエクスプレッションの取り付け

  if(object(0))//選択オブジェクトがあれば、ターゲットエクスプレッションのターゲットオブジェクトに設定
  {
    tgt_tag#TARGETEXPRESSIONTAG_LINK = object(0);
  }else{

    //選択オブジェクトが無ければ、ヌルオブジェクトの操作
    nul_obj = new(NullObject);                 //ヌルオブジェクトの割り当て
    nul_obj->SetName("カメラ.ターゲット");       //名前の変更
    tgt_tag#TARGETEXPRESSIONTAG_LINK = nul_obj;//ターゲットエクスプレッションのターゲットオブジェクトに設定
    doc->InsertObject(nul_obj , NULL , NULL);  //シーンに追加
  }

  doc->InsertObject(cam_obj , NULL , NULL);    //カメラをシーンに追加
}

コメントを付けましたので、説明はしません。

SDK R11以前だと…

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


main(doc , op)
{
  var cam_obj = new(CameraObject);
  var tgt_tag = AllocTag(Ttargetexpression);
  var tgt_obj = doc->GetFirstObject();
  var nul_obj;

  cam_obj->SetName("ターゲットカメラ");
  cam_obj->InsertTag(tgt_tag);

  if(tgt_obj)
  {
    if(!tgt_obj->GetBit(BIT_AOBJ))tgt_obj = tgt_obj->SearchNext(BIT_AOBJ);
  }

  if(tgt_obj)
  {
    tgt_tag#TARGETEXPRESSIONTAG_LINK = tgt_obj;
  }else{
    nul_obj = new(NullObject);
    nul_obj->SetName("カメラ.ターゲット");
    tgt_tag#TARGETEXPRESSIONTAG_LINK = nul_obj;
    doc->InsertObject(nul_obj , NULL , NULL);
  }

  doc->InsertObject(cam_obj , NULL , NULL);
}

|

« C4D XPresso付きヌルオブジェクトを追加するユーザスクリプト | トップページ | C4D 「ターゲットライト」の様に「ライトターゲットオブジェクト」を追加しない「ターゲットライト」ユーザスクリプト »