llSetCameraParams
function
Replaces deprecated llTakeCamera.
Function syntax
llSetCameraParams(list rules// A strided list of rules and data pairs configuring the camera.
);- Energy
- 10
- Permission
PERMISSION_CONTROL_CAMERA
Sets multiple camera parameters simultaneously using the list of rules. Requires the PERMISSION_CONTROL_CAMERA runtime permission.
Sets multiple camera parameters at once.
llSetCameraParams([]);Specification
Section titled “Specification”// Scripted controlCAMERA_ACTIVE, integer isActive // default FALSE// Fixed position and focusCAMERA_POSITION, vector position // region coordinatesCAMERA_POSITION_LOCKED, integer isLocked // default FALSECAMERA_FOCUS, vector position // region coordinatesCAMERA_FOCUS_LOCKED, integer isLocked // default FALSE// Following the avatarCAMERA_DISTANCE, float meters // 0.5 to 50; default 3.0CAMERA_PITCH, float degrees // -45 to 80; default 0.0CAMERA_FOCUS_OFFSET, vector meters // <-10,-10,-10> to <10,10,10>; default ZERO_VECTORCAMERA_BEHINDNESS_ANGLE, float degrees // 0 to 180; default 10.0CAMERA_BEHINDNESS_LAG, float seconds // 0 to 3; default 0.0// Lag and thresholdsCAMERA_POSITION_LAG, float seconds // 0 to 3; default 0.1CAMERA_FOCUS_LAG, float seconds // 0 to 3; default 0.1CAMERA_POSITION_THRESHOLD, float meters // 0 to 4; default 1.0CAMERA_FOCUS_THRESHOLD, float meters // 0 to 4; default 1.0
Caveats
Section titled “Caveats”- Camera control currently (server 1.38) only supported for attachments and objects on which you are sitting. An attempt otherwise will result in an error being shouted on
DEBUG_CHANNEL. - Scripted camera parameters are overriden for agents who are in Free Camera mode (Alt + Click). No error is returned if this is the case; however when the agent returns to regular camera mode, their camera will go to the scripted camera position.
- When
CAMERA_FOCUSis not defined, it is advised thatCAMERA_FOCUS_THRESHOLDis set to 0.0 - this is because when left at it’s default value, it may prevent the camera from focusing on the correct point, instead focusing just to the side of the intended point. - A
CAMERA_FOCUS_OFFSETofZERO_VECTORwill always look at the same position as returned byllGetPos()for the avatar - When seated, this is also the position of “Avatar Center” when hover height is 0
- When standing, this has a shape-dependent z-offset from “Avatar Center”. (currently investigating Tapple Gao (talk))
- Cannot be used to control the camera in Mouselook.
Examples
Section titled “Examples”You can either set the camera in region relative coordinates or you can make the camera follow your avatar.
Region relative coordinates, an example:
5 collapsed lines
lookAtMe( integer perms ){ if ( perms & PERMISSION_CONTROL_CAMERA ) { vector camPos = llGetPos() + (relCamP * llGetRot() * turnOnChair) ; vector camFocus = llGetPos() ; llClearCameraParams(); // reset camera to default llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_FOCUS, camFocus, // region relative position CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE) CAMERA_POSITION, camPos, // region relative position CAMERA_POSITION_LOCKED, TRUE // (TRUE or FALSE) ]); }}Note that Focus and Position are both locked. This first example makes the camera look at camFocus from camPos.
Camera follow avatar, an example:
lookAtMe( integer perms ){ if ( perms & PERMISSION_CONTROL_CAMERA ) { llClearCameraParams(); // reset camera to default llSetCameraParams([ CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive CAMERA_BEHINDNESS_ANGLE, 30.0, // (0 to 180) degrees CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds CAMERA_DISTANCE, 10.0, // ( 0.5 to 10) meters //CAMERA_FOCUS, <0,0,5>, // region relative position CAMERA_FOCUS_LAG, 0.05 , // (0 to 3) seconds CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE) CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_PITCH, 10.0, // (-45 to 80) degrees //CAMERA_POSITION, <0,0,0>, // region relative position CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE) CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters CAMERA_FOCUS_OFFSET, <2.0, 0.0, 0.0> // <-10,-10,-10> to <10,10,10> meters ]); }}Note that in this second example Focus and Position are NOT locked and not even set. This is appropriate for making the camera follow a pilot on a vehicle.
Known issues
Section titled “Known issues”From the issue templates included by the wiki article:
- SCR-325 (nf): Damping Parameters for llSetCameraParams()
- SCR-326 (nf): <code>CAMERA_FOCUS_TARGET</code> and <code>CAMERA_POSITION_TARGET</code> parameters for llSetCameraParams()
- SCR-327 (meta): Improvements to llSetCameraParams()
See also
Section titled “See also”Functions
Section titled “Functions”llClearCameraParamsllGetCameraPosllGetCameraRotllSetLinkCamerallSetCameraEyeOffsetllSetCameraAtOffset
Articles
Section titled “Articles”Original wiki source
Some wiki templates and tables need their original context. View this article on the Second Life Wiki. Technical wording and examples are retained from the source; historical guidance may differ from current behavior.