Difference between revisions of "LlSetCameraParams"

From Second Life Wiki
Jump to: navigation, search
m
Line 9: Line 9:
 
|caveats
 
|caveats
 
|examples=
 
|examples=
<lsl>
+
 
llSetCameraParams([
+
You can either set the camera in region relative coordinates or you can make the camera follow your avatar.
        CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive
+
 
        CAMERA_BEHINDNESS_ANGLE, 10.0, // (0 to 180) degrees
+
    * Region relative coordinates, an example:
        CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds
+
 
        CAMERA_DISTANCE, 3.0, // ( 0.5 to 10) meters
+
<lsl>lookAtMe( integer perms )
         // CAMERA_FOCUS, <0,0,0>, // region-relative position
+
{
        CAMERA_FOCUS_LAG, 0.1 , // (0 to 3) seconds
+
    if ( perms & PERMISSION_CONTROL_CAMERA )
        CAMERA_FOCUS_LOCKED, FALSE, // (TRUE or FALSE)
+
    {
        CAMERA_FOCUS_THRESHOLD, 1.0, // (0 to 4) meters
+
        vector camPos = llGetPos() + (relCamP * llGetRot() * turnOnChair) ;
        CAMERA_PITCH, 0.0, // (-45 to 80) degrees
+
        vector camFocus = llGetPos() ;
        // CAMERA_POSITION, <0,0,0>, // region-relative position
+
        llClearCameraParams(); // reset camera to default
        CAMERA_POSITION_LAG, 0.1, // (0 to 3) seconds
+
        llSetCameraParams([
        CAMERA_POSITION_LOCKED, FALSE, // (TRUE or FALSE)
+
            CAMERA_ACTIVE, 1, // 1 is active, 0 is inactive
        CAMERA_POSITION_THRESHOLD, 1.0, // (0 to 4) meters
+
            CAMERA_BEHINDNESS_ANGLE, 0.0, // (0 to 180) degrees
        CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <-10,-10,-10> to <10,10,10> meters
+
            CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds
    ]);
+
            CAMERA_DISTANCE, 0.0, // ( 0.5 to 10) meters
 +
            CAMERA_FOCUS, camFocus, // region relative position
 +
            CAMERA_FOCUS_LAG, 0.0 , // (0 to 3) seconds
 +
            CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE)
 +
            CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters
 +
    //        CAMERA_PITCH, 80.0, // (-45 to 80) degrees
 +
            CAMERA_POSITION, camPos, // region relative position
 +
            CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds
 +
            CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE)
 +
            CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters
 +
            CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <-10,-10,-10> to <10,10,10> meters
 +
         ]);
 +
    }
 +
}</lsl>
 +
 
 +
Note that Focus and Position are both locked. The position will only persist until the camera is given free by Esc key or in any other way. The first example, therefore, makes the camera look at a sitting avatar.
 +
 
 +
    * Camera follow avatar, an example:
 +
 
 +
<lsl>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
 +
        ]);
 +
    }
 +
}
 +
 
 
</lsl>
 
</lsl>
 +
Note that in this second example Focus and Position are NOT locked and not even set. This might be appropriate for making the camera follow a pilot on a vehicle.
 
|helpers
 
|helpers
 
|also_functions=
 
|also_functions=

Revision as of 15:56, 25 February 2010

Summary

Function: llSetCameraParams( list rules );

Sets multiple camera parameters at once.

• list rules Format is [ rule1, data1, rule2, data2 . . . rulen, datan ]

To run this function the script must request the PERMISSION_CONTROL_CAMERA permission with llRequestPermissions.

Rule Parameter Default Value Range Description
CAMERA_ACTIVE 12   integer isActive FALSE TRUE or FALSE Turns on or off scripted control of the camera.
CAMERA_BEHINDNESS_ANGLE 8 float degrees 10.0 0 to 180 Sets the angle in degrees within which the camera is not constrained by changes in target rotation.
CAMERA_BEHINDNESS_LAG 9 float seconds 0.0 0 to 3 Sets how strongly the camera is forced to stay behind the target if outside of behindness angle.
CAMERA_DISTANCE 7 float meters 3.0 0.5 to 10 Sets how far away the camera wants to be from its target.
CAMERA_FOCUS 17 vector position n/a n/a Sets camera focus (target position) in region coordinates.
CAMERA_FOCUS_LAG 6 float seconds 0.1 0 to 3 How much the camera lags as it tries to aim towards the target.
CAMERA_FOCUS_LOCKED 22 integer isLocked FALSE TRUE or FALSE Locks the camera focus so it will not move.
CAMERA_FOCUS_OFFSET 1 vector meters <0.0,0.0,0.0> <-10,-10,-10> to <10,10,10> Adjusts the camera focus position relative to the target.
CAMERA_FOCUS_THRESHOLD 11 float meters 1.0 0 to 4 Sets the radius of a sphere around the camera's target position within which its focus is not affected by target motion.
CAMERA_PITCH 0 float degrees 0.0 -45 to 80 Adjusts the angular amount that the camera aims straight ahead vs. straight down, maintaining the same distance; analogous to 'incidence'."
CAMERA_POSITION 13 vector position n/a n/a Sets camera position in region coordinates.
CAMERA_POSITION_LAG 5 float seconds 0.1 0 to 3 How much the camera lags as it tries to move towards its 'ideal' position.
CAMERA_POSITION_LOCKED 21 integer isLocked FALSE TRUE or FALSE Locks the camera position so it will not move.
CAMERA_POSITION_THRESHOLD 10 float meters 1.0 0 to 4 Sets the radius of a sphere around the camera's ideal position within which it is not affected by target motion.

Caveats

Permissions
  • The PERMISSION_CONTROL_CAMERA permission is automatically revoked when the avatar stands up from or detaches the object, and any scripted camera parameters are automatically cleared.
All Issues ~ Search JIRA for related Bugs

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:

<lsl>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_BEHINDNESS_ANGLE, 0.0, // (0 to 180) degrees
           CAMERA_BEHINDNESS_LAG, 0.0, // (0 to 3) seconds
           CAMERA_DISTANCE, 0.0, // ( 0.5 to 10) meters
           CAMERA_FOCUS, camFocus, // region relative position
           CAMERA_FOCUS_LAG, 0.0 , // (0 to 3) seconds
           CAMERA_FOCUS_LOCKED, TRUE, // (TRUE or FALSE)
           CAMERA_FOCUS_THRESHOLD, 0.0, // (0 to 4) meters
   //        CAMERA_PITCH, 80.0, // (-45 to 80) degrees
           CAMERA_POSITION, camPos, // region relative position
           CAMERA_POSITION_LAG, 0.0, // (0 to 3) seconds
           CAMERA_POSITION_LOCKED, TRUE, // (TRUE or FALSE)
           CAMERA_POSITION_THRESHOLD, 0.0, // (0 to 4) meters
           CAMERA_FOCUS_OFFSET, ZERO_VECTOR // <-10,-10,-10> to <10,10,10> meters
       ]);
   }

}</lsl>

Note that Focus and Position are both locked. The position will only persist until the camera is given free by Esc key or in any other way. The first example, therefore, makes the camera look at a sitting avatar.

   * Camera follow avatar, an example:

<lsl>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
       ]);
   }

}

</lsl>

Note that in this second example Focus and Position are NOT locked and not even set. This might be appropriate for making the camera follow a pilot on a vehicle.

See Also

Events

•  run_time_permissions Permission receiving event

Functions

•  llGetPermissions Get the permissions granted
•  llGetPermissionsKey Get the agent who granted permissions
•  llRequestPermissions Request permissions
•  llClearCameraParams
•  llGetCameraPos
•  llGetCameraRot

Articles

•  Script permissions
•  FollowCam

Deep Notes

Search JIRA for related Issues

Tests

•  llSetCameraParams Test

Signature

function void llSetCameraParams( list rules );