User:Rev Eponym/nPose
nPose documentation
Warning: If you're reading this, it is unofficial. Testing and composition only! |
nPose is a system for coordinating animations between several avatars seated on the same object (linkset), such as a couch or bed, as well as rezzable, coordinated props. Unlike previous systems, nPose does not use poseballs to accomplish this.
nPose Quick Start
Are you familiar with Second Life building methods, prim inventories, and such? Have you set up a posing system using another type such as MLP or XPose? Here's the most basic process:
- Rez the object you're going to set up with nPose.
- Ideally, the object's root prim should be empty.
- Copy the nPose core scripts into the object: Core, Menu, Dialog, Slave
- Copy the nPose Adjuster Prim into the object
- Copy the animation files you want to use into the object
- Create and copy in notecards that define poses for the animations (see that section below)
- Reset scripts in the object
- Set up positions:
- Sit on the nPose object to access the menu
- Click the Admin button
- Choose Adjust from the submenu
- The Adjuster Prim will appear
- Edit the Adjuster Prim and position it where you want your avatar to be sitting, relative to the object
- The Adjuster Prim will say its position in local chat each time it moves
- Copy the appropriate line of text from the chat window
- Edit the notecard for the animation pose, and replace the existing text with the Adjuster's location info
- Save the position notecard
- Click Stop Adjust from the Admin menu
- Repeat this process for each animation pose
- That's it! At least for an object that will seat one avatar only.
=Configuration notecards
Adjusting positions
nPose has a built-in 'smart prim' tool that's used to define the relative position and rotation of an animation. So you don't have to do the complicated math that would be necessary for this otherwise. This tool is known as the Adjuster, and looks like a three-dimensional axis, similar to that seen in SL's building tools.
- ChangeSeat
- When a multiple-pose animation set is active, this button shows the other positions available. Clicking an empty position will place your avatar in that position; when that position is occupied, avatar positions will be swapped.
- Sync
- Restarts the animations in a set, so that avatar animations will be in sync.
- Offset
- Activates the position adjustment menu for your avatar. These settings are saved in script memory for your avatar, until the scripts are reset or nPose is restarted.
- -> or <-
- 'Next page' or 'Previous page' button, active when a menu has more than 12 buttons.
- ^ (up caret)
- 'Up' menu button, goes back to the previous menu from a submenu.
The admin menu is only available to the owner of the nPose object. The 'Admin' button will bring up a submenu with the following buttons:
- Adjust
- Rezzes the adjuster prim used to edit the position of the seat positions.
- StopAdjust
- Removes the adjuster prim.
- PosDump
- 'Dumps' the positions of avatars and props in the current pose into local chat. This text can be copied into SET notecards.
- Unsit
- Brings up a submenu with the names of all seated avatars. Click the name of the avatar and they will be unseated.
- Options
- Activates the Options submenu, with the following commands:
- Menuonsit
- Brings up a submenu to allow the option of having a menu pop up when an authorized avatar sits on the nPose object to be turned on or off.
- ToDefault
- Clicking this button will bring up a submenu to turn on or turn off the option of having nPose return to the DEFAULT pose when all seated Avatars have stood.
- Permit
- Brings up a submenu for restricting permissions for who can use the nPose object. The current setting will be displayed at the top of the Permit menu. The buttons on this submenu are:
- Public
- Permissions set so that anyone is allowed to use the nPose menus.
- Locked
- Permissions set so that only the owner is allowed to use the nPose menus.
- Group
- Permissions set so that anyone with their active group set to the same as the nPose object is allowed to use the nPose menus.
Notecard types
nPose uses different types of notecards to define its customized menu functions. Each of these notecards has its type spelled out in capitals at the beginning of its name, like so: style="text-size:75%;" style="background:#E8F1F8;"
Notecard Type | Function | ... | Example name |
---|---|---|---|
DEFAULT | Animations | .. | DEFAULT:Sitting |
SET | Animations | .. | SET:Lounging |
BTN | Script messaging | .. | BTN:Colors |
SEQ | Sequences of Sets | .. | SEQ:Line Dance |
Important: The type name must be in all caps, with no spaces, with a colon(':') before the rest of the name. Without this, the scripts won't be able to find the notecards, and the item will not appear in the menu. |
- DEFAULT
- Used as the default pose set when nPose is initialized, and there can be only one with this type. Otherwise, it's the same as SET below. If no DEFAULT notecard is included in the contents of the nPose object, nPose will use the first SET notecard in the contents (alphabetically) as the DEFAULT.
- SET
- Used to define a group of animations which will appear in the nPose menu with the name after the colon in the notecard name. The notecard contains one line for each sitter, listing animation name and position. There can also be other lines, for functions that will be triggered along with the animation set. The -keywords- section defines the different function types available.
- BTN
- Used for internal functions, or to send messages to other scripts within the linkset or to rezzed props.
- SEQ
- Used to setup sequences of pose sets. It communicates to the modified Rygel sequencer script. Details are provided later.
Notecard commands
Each line of a notecard begins with a command in all caps, similar to notecard type names. Supported commands are as follows:
Command | Function | Data format |
---|---|---|
ANIM | Animation name, position and rotation | ANIM|animation-name|<vector (x,y,z) position>|<vector (x,y,z) rotation> |
LINKMSG | Message to other scripts | LINKMSG|msg-number|user-string|some-key |
SATMSG | Activated when an avatar sits | (need code sample) |
NOSATMSG | Activated when an avatar stands (unsits) | (need code sample) |
PROP | Rezzes a prop in the position specified | (need code sample) |
Group the notecard names.
not used yet
where msg-number is some number set by convention (see the LINKMSG messages notecard) and the remaining (optional) fields are defined by the message number.
The most common thing to put in BTN notecard is LINKMSG lines. These have the general format (again without leading spaces):
LINKMSG|msg-number|user-string|some-key
ANIM|meditation|<-0.3,0,0.8>|<0,0,0>
where ANIM says that this line describes an animation, and "mediation" is the name of the animation (which must be included in the nPose object), and the rest is a position offset and rotation. There is one ANIM line for each avatar who can sit on the nPose object. You can put <0,0,0> for both position and rotation, and use the nPose adjustment tool to find the proper values. We'll describe how later. You can also include LINKMSG and other types of lines in the SET notecards, and those will be described later also.
<lsl>
default
{
state_entry() { llSay(0, "Hello, Avatar!"); } touch_start(integer total_number) { llSay(0, "Touched."); }
} </lsl>