Difference between revisions of "LlSetCameraAtOffset"

From Second Life Wiki
Jump to navigation Jump to search
(Added caveats)
m (Replaced old <LSL> block with <source lang="lsl2">)
 
(17 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{LSL_Function
{{LSL_Function
|inject-2={{LSL Function/offset|offset}}
|func_id=244|func_sleep=0.0|func_energy=10.0
|func_id=244|func_sleep=0.0|func_energy=10.0
|func=llSetCameraAtOffset|p1_type=vector|p1_name=offset
|func=llSetCameraAtOffset
|func_footnote
|p1_type=vector|p1_name=offset
|func_desc=Sets the point the camera is looking at if an avatar sits on the object at '''offset'''.
|func_desc=Sets the point the camera is looking at to {{LSLP|offset}} for avatars that sit on the object.
|func_footnote=This is the point the camera looks at, not the [[llSetCameraEyeOffset|position of the camera's eye]].
|return_text
|return_text
|spec
|spec
|caveats=
|caveats=
* The change will only take effect ''next'' time the avatar sits on the prim. You can't change the offset once it has already sit down.
* Setting this will not update the cameras of seated avatars, it will only effect avatars that subsequently sit down. The camera settings have to be prepared in advance.
* If you use a sit pose rotation and want to set the camera relatively to your avatar, you must do calculations.
* The {{LSLP|offset}} is [[Viewer_coordinate_frames#Local|locally relative]] to the object, if you want it relative to the seated [[Viewer_coordinate_frames#Agent|avatar]] (which likely has a custom sit rotation and offset) or the [[Viewer_coordinate_frames#Region|region]], you must do the computation yourself.
* If you rotate the object and want to set the camera relatively to the region, you have to do calculations too.
* [[ZERO_VECTOR]] {{LSLP|offset}} will cancel any offset.
* Camera focus set by this function is a '''Prim Property'''. '''It will survive the script''' and it will survive prim taking and prim rezzing
|constants
|constants
|examples
|examples=<source lang="lsl2">// Set the seated avatar looking at an arbitrary direction
// Look over the avatar's shoulders from behind once it sits down
 
back_view(float degrees)
{
    rotation sitRot = llAxisAngle2Rot(<0, 0, 1>, degrees * DEG_TO_RAD);
   
    llSitTarget(<0, 0, 0.1>, sitRot);
       
    llSetCameraEyeOffset(<-2, 0, 1> * sitRot);
    llSetCameraAtOffset(<2, 0, 1> * sitRot);
}
 
default
{
    state_entry()
    {
        back_view( 208 );
        llSay(0, "Please sit down");
    }
}</source>
|helpers
|helpers
|also_functions=
|also_functions=
{{LSL DefineRow||[[llSetLinkCamera]]|}}
{{LSL DefineRow||[[llSetCameraEyeOffset]]|}}
{{LSL DefineRow||[[llSetCameraEyeOffset]]|}}
{{LSL DefineRow||[[llForceMouselook]]|}}
{{LSL DefineRow||[[llForceMouselook]]|}}
{{LSL DefineRow||[[llSetCameraParams]]|}}
|also_events
|also_events
|also_tests
|also_tests
|also_articles
|also_articles
|notes
|notes
|permission
|negative_index
|sort=SetCameraAtOffset
|sort=SetCameraAtOffset
|cat1=Camera
|cat1=Camera
|cat2=Sit
|cat2=Sit
|cat3=Vehicle
|cat3=Vehicle
|cat4
|cat4=Prim
}}
}}

Latest revision as of 15:02, 22 January 2015

Summary

Function: llSetCameraAtOffset( vector offset );

Sets the point the camera is looking at to offset for avatars that sit on the object.

• vector offset offset relative to the prim's position and expressed in local coordinates

This is the point the camera looks at, not the position of the camera's eye.

Caveats

  • Setting this will not update the cameras of seated avatars, it will only effect avatars that subsequently sit down. The camera settings have to be prepared in advance.
  • The offset is locally relative to the object, if you want it relative to the seated avatar (which likely has a custom sit rotation and offset) or the region, you must do the computation yourself.
  • ZERO_VECTOR offset will cancel any offset.
  • Camera focus set by this function is a Prim Property. It will survive the script and it will survive prim taking and prim rezzing
All Issues ~ Search JIRA for related Bugs

Examples

// Set the seated avatar looking at an arbitrary direction
// Look over the avatar's shoulders from behind once it sits down

back_view(float degrees)
{
     rotation sitRot = llAxisAngle2Rot(<0, 0, 1>, degrees * DEG_TO_RAD);
    
     llSitTarget(<0, 0, 0.1>, sitRot);
        
     llSetCameraEyeOffset(<-2, 0, 1> * sitRot);
     llSetCameraAtOffset(<2, 0, 1> * sitRot);
}

default
{
    state_entry()
    {
        back_view( 208 );
        llSay(0, "Please sit down");
    }
}

See Also

Deep Notes

Search JIRA for related Issues

Signature

function void llSetCameraAtOffset( vector offset );