BlackSheep-LSL@Wiki

llGetCameraPos

最終更新:

mizcremorne

- view
メンバー限定 登録/ログイン

llGetCameraPos

vector llGetCameraPos()

カメラの位置を取得する。
この関数を実行するにはPERMISSION_TRACK_CAMERAの取得が必要。

llGetCameraRot関数と組み合わせて使うことで、アバターがどこを見ているかを調べることができる。

以下の例はカメラ位置と注目点を表示するアタッチメントである。
llSetCameraAtOffset関数やllSetCameraEyeOffset関数に指定する値を調べるのに有用。
key avatar=NULL_KEY;
vector pos;
vector look;

get_permission(){
  key permkey = llGetPermissionsKey();
  if (permkey != avatar || avatar == NULL_KEY){
    llRequestPermissions(avatar, PERMISSION_TRACK_CAMERA);
  }else{
    integer perm = llGetPermissions();
    if (! (perm & PERMISSION_TRIGGER_ANIMATION)) {
      llRequestPermissions(avatar, PERMISSION_TRACK_CAMERA);
    }else{
      llSetTimerEvent(1.0);
    }
  }
}

default {
  state_entry(){
    if (llGetAttached() != 0){
      avatar = llGetOwner();
      get_permission();
    }
  }
  
  run_time_permissions(integer perm){
    if (! (perm & PERMISSION_TRACK_CAMERA)) {
      llRequestPermissions(avatar, PERMISSION_TRACK_CAMERA);
    }else{
      llSetTimerEvent(1.0);
    }
  }
  
  attach(key id){
    if (id != NULL_KEY){
      avatar = llGetOwner();
      get_permission();
    }else{
      llSetTimerEvent(0.0);
    }
  }
  
  timer(){
    vector p2 = llGetCameraPos();
    vector l2 = <1.0, 0.0, 0.0> * llGetCameraRot();
    if (p2 != pos || l2 != look){
      llOwnerSay("EyeOffset=" + (string)p2 + "\n"
        + "CameraAtOffset=" + (string)(l2 + p2));
      pos = p2;
      look = l2;
    }
  }
}

名前:
コメント:
記事メニュー
目安箱バナー