How to Create an Avatar or Object Movement Sequence
What is a Mover?
In the previous section we used animation sequences as a way of changing an avatar's posture- such as rotating hips, extending arms, bending legs, etc. These motions can make an avatar move up to 5 meters in any direction, but oftentimes you will want to move a dancing , walking, or flying avatar much farther distances.
There are many ways to move avatars greater distances but many of them have drawbacks when used in performances where synchronized timing with music, animations, and special effects is desired.
- Using a viewer to manually walk avatars around can be inaccurate and difficult to control during a crowded, laggy, or demanding performance.
- Similarly, using traditional vehicles often are difficult to control in confined spaces and can be subject to unwanted errors from the Second Life physics engine.
The better solution is to have an avatar sit on an non-physical object, and then use various scripted controls to move the object around, all the while playing animations to make it appear that the avatar is standing, dancing, or otherwise naturally moving under their own power and not sitting.
This type of object is called a "Mover" is is a core component of choreographed scenes in Second Life. As a side benefit, it can be used for moving general objects around with high precision, not only avatars.
MST Movers allow you to define a series of movement waypoints that you can use to move both avatars and objects around your performance area in very precise, smooth, and repeatable ways.
What's Cool About the MetaHarper Show Tools Movers
MST Movers can perform typical mover functions, but also have some advanced capabilities not found elsewhere. They are particular useful for their ability to hold an almost unlimited amount of movements paths that can cover an entire region, while also allowing design teams to share design access and permissions, even interoperate with each other's equipment.
Other typical features include:
- Smooth movement and rotation even when you are zoomed in tight to head or torso levels where the feet are not visible.
- Movers rez "ready to go". No initialization, reseting, notecard reading, or waiting time is require, even when using different notecards containing movement sequences.
- This mover can allow movement to any waypoint, in any order. It is not restricted to a single playback path.
- This mover can go anywhere within a single region. it’s not limited to size constraints.
- This mover can allow scripted movement sequences even if you have not defined waypoints in advance.
- This mover may be placed in different choreography groups while it is running, without having to edit notecards.
- You may allow or disallow other avatars to control the mover.
- Allows specific waypoints to be named. This tactic can result in re-using waypoints for less memory, easier edits, and more readable timelines.
- Integrates easily with MST Performance Engines as well as third party systems
- Does not require a separate designer piece, all of your movement details are kept in the same object.
- Waypoints are searchable with the viewer's area seach if you choose, making it easier to find them quickly.
Known Limitations
- Movement of objects only works with “convex-hull” type objects with a rating of 64 physics equivalent or less. To see the physics equivalent of your object, select it, open the build window, and click the “more info” little text link next to where it prints the Prim Equivalent(PE) weight.
- Crossing sims on a mover may be unreliable. This is an SL limitation.
- Due to limitation in SL's physics engines, extremely fast or extremely slow types of movement are not supported. If you try to move too fast or too slow, your movement might result in a script 'velocity' error, move you to the wrong location, or not move you at all.
- When using some movement modes, timing may be affected by sim physics lag. This means by the end of a very long running movement sequence, there may be some timing drift. This is a known issue with LSL’s “llSetKeyframedMotion” function. See the section on “moveto” for possible ways to mitigate this effect.
How to Create a Movement Sequence using Waypoints
The following will walk you through creating a very simple movement sequence to demonstrate the overall technique using a series waypoints. More complex scenarios including ways to use movers without waypoints are described later. In the below examples we often use the technique of clicking the mover and choosing options from a popup menu. If you would instead prefer to use chat commands to control your mover, or include it timelines automatically such as MST Performance Engines, these options are explained in later sections.
Rez and Rename your Mover
Go to your performance area or work area where you can rez objects. You may wish to rez a stage template and stage props to get a feel for your performance space.
From your the unpacked MetaHarper Show Tools folder in your inventory, drag the object "MST_Mover_rename_me" onto the ground. It will look like a colored square with some chevrons on the top and it will have the mover's name 'MST_Mover_rename_me" in hovertext above it. Rename it something to represent the avatar or object that you are trying to move. For example “arrehnMover” or “elephant”. Try not to use punctuation or spaces- this can make troubleshooting harder than it needs to be later.
After renaming the mover, click it to pull up its menu, which will also cause its hovertext name to change. You can close the window safely without choosing anything. Ensure that your new name shows up in floating text above the mover object before continuing further.
The mover will also change color whenever its name changes. This is a normal feature to help you be able to distinguish different movers from each other at a glance. Don't like the auto-assigned color? You can either change the mover's name slightly or set a custom color as described in the customization section later.
You may ask 'Why is the mover the size it is?' The MST mover has been intentionally sized so that you can see how much space a typical avatar will take up when standing on the mover. You will be better able to plan movement sequences for avatars and not have them clip doors, walls, or other avatars. If you would like to customize your mover, this is possible and will be explained in the customization section.
Set the Mover's “Home” Position
The MST Mover has a concept of its “home” location within a particular region. Whenever it is told to start moving, it will go to this location first. Whenever it is told to stop all movement, it will also return to its home location.
To set the home location, move and/or rotate your MST mover to the place on the region you want it to start. Then, click it and choose “set home” from the popup menu.
Note: when you rez your MST mover, it will automatically set its home position to where it was rezzed. If you want the home to be some other location, follow the above procedure after rezzing. Setting a new home position will replace any previous one.
Create a Movement Waypoint
You are ready to start creating a movement path! One typical way to accomplish this is to create a series of “waypoints” at particular locations. The mover prim will travel to these waypoints in order with smooth motion.
To create your first waypoint, click your MST mover and choose “New Waypnt” from the pop-up menu. You will see a round waypoint marker with ah hollow triangular cutout appear a short distance in front of your MST mover.
There will be some new hovertext on top of your waypoint. It may look like the following:
w1
testMover #1
[move:0.2 arrive 0.2 wait 0.0]
It is not important to understand all of this information right now, but you might be curious what this text means. Briefly, the top text "w1" is the name of the waypoint. The second line is the name of the mover this waypoint belongs to, and what order this waypoint is in the mover's sequence. The last line contains a number of timings.
For the timings, "move:" is "how many seconds should the mover take to move from its last waypoint to this one", with lower numbers meaning faster speeds. The "arrive" number tracks what time the mover will show up at this waypoint, once it starts moving from its home position. Finally the "wait" time determines how long the mover will rest at this waypoint doing nothing, before continuing on its way to the the next waypoint you may create.
All of this information -- the name of the waypoint, its position in the sequence, and all of the various timings, can be adjusted.
You'll also notice that the color of the waypoint marker matches the color of your mover. As you create waypoints from the same mover, waypoints become progressively darker versions of the same hue. If you create enough waypoints, the brightness will repeat. These colors help you see at a glance which waypoints go with each mover, and in what order. Later on in this documentation you will see how you can draw particle paths to connect the waypoints for an even clearer picture.
Set the New Waypoint’s Position and Rotation
You can right-click the waypoint, edit it, and use the build window tools and arrows to move and/or rotate it around your performance area. Place it in the location where you want to MST mover to travel to, starting from its home position.
If you have more complex movement paths in your mind, such as movement involving multiple steps, going around corners, going in curves, etc.. You will create these later by using a series of waypoints. However, for now just pick one single location, move your waypoint there, and rotate it is needed.
You can move your waypoint up, down, or anywhere in the same region. Be careful not to cross into other parcels unless you have access to do so.
After you move your waypoint it may change color to red and tell you that it is “unsaved”. You can ignore this for now, we will cover saving in a later step.
Edit Waypoint Name, Movement Speed, and Wait Time
Waypoint Names
Next, you may click your waypoint and optionally set some simple parameters. By default, waypoints are given a generic name such as “Waypoint 1”. You can rename them if you choose, this can move using them later easier in some cases. Rename a waypoint by clicking on it and choosing “rename” from the popup menu.
Hint: Renaming your waypoints also let you find them in your viewer’s area search easier!
Travel Speed
You can also set the “travel speed”. Movement speed is a measure, in seconds, of how long your mover should take to travel from it’s last postion (in this case, the home) and the waypoint. The lower the number of seconds, the faster it will move. You can set the travel speed by clicking a particular waypoint marker and choosing “speed” from the popup menu. This is a value only used by Simple Playback mode, and the minimum number of seconds is 0.2.
Wait Time
Finally you can set the “wait time”. Wait time is a measure, in seconds, of how long the mover should pause after reaching this waypoint before it moves on to anywhere else. Wait time is only used for Simple Playback mode.
Saving Waypoint to memory
When you are happy with the way your waypoint is configured, click the waypoint and choose “Save” from the menu. Always make sure to save unsaved waypoint markers before adding a new waypoint. When you save, you will see your waypoints briefly disappear and then return. This is how you know they were saved properly.
Create a few more Waypoints!
Using the above steps create, edit, and save a few more waypoints. Once you have created two or three additional waypoints, we'll save them as described below, and practice playing back the sequence.
Saving Waypoints Permanently to a Notecard
The above waypoint “save” is only a temporary save. It will last until the MST Mover’s inventory changes or its scripts are reset. To save your waypoints permanently, first double-check that you have saved all red "unsaved" waypoints to memory as decribed above, then click the MST mover once and choose “Printmove”. This will print out a number of lines in nearby chat. This list will look something like this:
Example:
WAYPOINT=home,<0.000000, 0.000000, 0.000000>, <0.000000, 0.000000, 0.000000, 1.000000>, 0.200000, 0.000000 WAYPOINT=w1,<0.000000, 0.000000, 12.630370>, <0.000000, 0.000000, 0.000000, 1.000000>, 1.000000, 0.000000 WAYPOINT=w2,<-0.687103, 0.000000, 0.906403>, <0.000000, 0.000000, 0.000000, 1.000000>, 8.000000, 0.000000 WAYPOINT=w3,<-0.780853, -0.493500, 4.047516>, <0.000000, 0.000000, 0.000000, 1.000000>, 3.000000, 0.000000 WAYPOINT=w4,<0.000000, -1.618942, 3.736115>, <0.000000, 0.000000, -0.972370, 0.233445>, 1.000000, 0.000000 WAYPOINT=w5,<2.004822, 0.025909, 2.606476>, <0.000000, 0.000000, -0.052336, 0.998630>, 2.000000, 0.000000
You should copy all of the lines that start with “WAYPOINT” into your clipboard, then open up the “~MOVELIST” notecard inside the mover, and paste these lines into the end of the notecard, replacing all existing "WAYPOINT=" lines. The mover will automatically load the new notecard as soon as you save it. After the notecard reloads, any waypoints shown will disappear. You can show them again by clicking on the mover and choosing “Show waypnts” and they should all come back in the correct positions, demonstrating that your notecard was saved correctly.
You may notice that there is a waypoint at the beginning called “home” that you may not have added. This waypoint always exists, to mark the mover’s home position. Even if you leave it out of the notecard, it will silently be added back. This waypoint is not shown when showing waypoints because the floating text would make the mover difficult to read.
You may optionally remove the timestamps before the “WAYPOINT” lines, but if you forget it is ok. The mover will ignore the timestamps.
More Waypoint Options
Showing and Hiding the Waypoint Markers, and Optional Particle Trails
At any time you can hide the waypoint markers by clicking the MST Mover and choosing “Hide waypnts” from the popup menu. If you want to make them visible again. click the MST Mover, choose “Stop Move” to ensure it is in its home position, then choose “Show waypnts”.
Is is normal for the waypoint markers to all share a similar color hue. The color of the waypoint markers will grow darker as the sequence of them increases, so you can visuallly get an idea of their order.
Some people find it helpful to see particle trails that connect each waypoint to another, so you can see the pattern of travel. To see these, use the “Show trails” and “Hide trails” menu options when clicking the MST mover, similar to “Show waypnts” and “Hide waypnts”.
This option will show the waypoints connected by particle trails. Note: Make sure you have particles enabled in your viewer to see them.
Deleting Waypoints
If you want to delete a waypoint, you can click that waypoint and choose “Delete”, or simply remove the line for that waypoint from your ~MOVELIST notecard and resave it.
Inserting New Waypoints into the Middle of a Movement Sequence
If you wish to insert new waypoints, click the wayoint before or after the place where you desire to insert a new waypoint, and click the appropriate menu choice- either “insert before” or “insert after”.
If you wish to completely rearrange the order of your existing waypoints, you might be able to save time by opening the mover’s ~MOVELIST notecard and rearranging or relabelling the lines inside. Experiment with changes, save, and choose “Show trails” to see if you have the desired behavior.
Simple Playback: How to play your Movement Sequence
After defining and saving some waypoints, you might want to test your mover to see if the movement path looks right. There are many ways that you can tell a move to start its sequence, such as chat commands, or integration with choreography timelines, but the simplest way is just to click on the mover and choose 'Start Move' from its menu. We will describe this process and typical variations below.
Stopping and Starting the Waypoint Movement Sequence from the Mover's Menu
To see what your movement sequence will look like, you can use the mover to activate “Simple Playback Mode”.
First, click your MST Mover and choose “Stop Move”. This will reset your mover to its home position and is always a good practice to get into before starting a test.
Next, click the MST Mover again and choose “Start Move”. You should see the mover begin to travel to each of the waypoints you have created, in sequence, with speeds and pauses that match the parameters you have set for each waypoint.
When your movement sequence finishes, you may click the MST mover again and select “Stop Move”, and it will reset back to its home position.
Note: The MST mover will not appear to move if you have it selected with the build tool. Make sure the mover is deselected before telling it to start movement. You do not need to sit on the mover to test its movement.
At this point you can make adjustments to the waypoints as needed to satisfy your vision, such as increasing the speed of certain segments, adjusting the pauses, position, rotation, or adding more waypoints. Remember to “save” each waypoint after making a change, and remember to use “printmove” and save the new movement sequence into the MST Mover’s notecard when you’re happy with the waypoints.
How to move your own Objects around a stage
You might be already thinking about how you could sit on your mover and ride it around, and we will discuss this in the next section. However for now we'll show you how to do something simpler, which is link your mover to a typical rezzed object to make it move and turn.
Not every object can be moved. Sometimes you will run into an object that needs special steps to get it to move, but the vast majority of object s can be linked to your mover using the below steps:
- Rez, rename, create waypoints, and save those waypoints to your mover's ~MOVELIST notecard as described in the preceding sections.
- Rez the object you wish to move. It might be a toy airplane, or a UFO, or a bicycle, or something like this. Make sure your object has "modify" permissions.
- Disable the hovertext and other mover properties which can look ugly when you link them to other objects. You do this by adding the line "@nofx" to the top of your mover's ~MOVELIST notecard
- Use the build window to link the object to be moved to your MST mover. The mover should be the "root" object. After this is done, you can adjust the position of the mover to be in the center, bottom, or top of your combined object, and also make the mover piece transparent.
- Finally, you can now click the object to access its mover menu and test the playback like usual.
How to Move Avatars around a Stage
Invisible-on-Sit
You can have your avatar “sit” on the mover to ride it as it travels through it’s movement sequence. When you do so, your MST Mover will also become invisible while you sit on it. This is normal. It will become visible again after you stand up.
Check your height
While sitting on a mover, you should check to see if your avatar's feet touch the ground. Different avatars may appear to have different heights depending on their body type, shape, shoebase, foot-style, or shoes that they are wearing-- so always check. You may use the ‘pageup’ and ‘pagedown’ keys, or the ‘e’ and ‘c’ keys to adjust your avatar up and down so that your feet touch the floor properly.
Test the Movement
There are a few ways you can start the movement sequence after sitting on a particular mover. You can use a chat command such as "/8 startmove MyMoverName", or you can click the invisible thin column the music turns into after using "show transparency" in your viewer, or you can use a HUD or performance engine to tell the mover to start (more on this later).
How Combine Avatar Movement with Animations to Create Choreography
After sitting on a mover and watching it move through a path, you might already be imagining how it might look better if your avatar was animated at the same time as the movement to look like the avatar is walking, flying, or dancing. Luckily this is easy to do! You will need your own choreography engine to do this step. These instruction assume you are using the "MST Performance Engine" to run your choreography, although other engines can be used.
Locate your MST Performance Engine
This should be the same engine you rezzed when you created your workspace. See Prepare Your Workspace for MST for details.
Add Your Choreography Timeline to the Engine
You should create a choreography sequence, as described in How to Create Animation Sequences. When complete, print out the choreography sequence and add it to the Performance Engine's "~EVENTLIST" notecard. As an example, your ~EVENTLIST notecard might look like this:
@group animations|ALL|waiting animations= 0.00|Figure Eight 20.00|standing dance 40.00|The Robot 60.00|STOP
4. Integration with MST Eventlist Timelines
MST Movers are specifically optimized to work with the eventlists of MST Performance Engines or ChoreoHUD Director. When you are using either of these tools below are some important steps to perform. 4a. Group membership
Ensure that your mover name is listed in at least one group definition line in the eventlist. For example, if you want your mover to be used in group “dancers” and your mover is named “arrehnMover” your group definition should look something like:
@group dancers|arrehnMover,someOtherMover,yetAnotherMover|waiting
4b. Pair the Mover to a Specific Eventlist
If there are multiple MST performance engines or ChoreoHUDs around, you should ensure your movers only respond to a particular one, for predictability and safety. To accomplish this edit your mover’s “~MOVELIST” notecard and add the name of the performance engine or ChoreoHUD after the ‘MSTCONTROLLER=’ option. For exampe, if your performance engine is called ‘arrehnFlamenco’, the line would look like:
MSTCONTROLLER=arrehnFlamenco
4c. Use the Optmimized Event Actions
While you can use mover chat commands in section 5 in your eventlists for maximum flexibility, the following event action commands are optimized to perform well in crowded, stressed regions:
MOVESTART
This can be used to start the simple playback sequence, using the speed and wait times you have specified at each waypoint. If you use MOVESTART within a group, it will apply to every mover in that group. You can also specify a specific group, movername, or “all”. For example:
MOVESTART MOVESTART:arrehnMover MOVESTART:backupDancerGroup MOVESTART:ALL
MOVESTOP
This command will stop all movement and reset MST Movers to their home positions. If you use MOVESTOP within a group, it will stop and reset every mover in that group. You can also specify a specific group, movername, or “ALL”, similar to MOVESTART above.
MOVEPAUSE
This command will immediately pause movement. It can be restarted again using “MOVESTART”. Be careful when using this command, as using it more than once during the same movement sequence can be unreliable. It takes the same optional group and mover options as MOVESTOP and MOVESTART.
MOVETO
The “MOVETO” command is sophisticated and can be used to bring the mover to any waypoint, at any speed, in any order. When using MOVETO you specify a waypoint name and a speed, and the speed and/or wait times you set on the waypoints are ignored. MOVETO also has the side effect of being more resistant to region lag than MOVESTART, but as a tradeoff it requires using many separate commands in your eventlist instead of only one.
If you set the speed to ‘0’ or leave it blank, the movement will be near instant. We will discuss the nuances of using this command later in this document. When used in the event list, it will move all movers in the current group to the specified waypoint at the specified speed. It can also be used with specific movers, as shown in the following examples:
MOVETO:waypoint1 MOVETO:arrehnMover waypoint2 3.5 MOVETO:backupDancerGroup waypoint3 2.0w MOVETO:ALL home 2.0
4.d Using MST Movers in a Rezzer, such as the MST Performance Engine
The MST Mover is made to fully support being rezzed on demand, as part of an act, the same as any other prop that would show up on stage. It does not need long initialization times after rezzing, it’s ready to go. Packing your MST movers in your rezzer system is the recommended approach if you have planned enough time to rez your set and get your avatars on movers, before your act is due to start.
Not every show allows enough time for props to rez and avatars to find their place, before the show is due to start. For example, If your internet connectivity is very slow or sporadic, it may take you too long to see the results of rezzing props and movers. In cases like this, you may wish to leave your MST mover outside of a rezzer, in its home position backstage.
In these cases where you are leave the mover backstage, you way also wish to pack the mover in a rezzer as normal, but use a “NOREZ” line in in your PACKLIST notecard. This allows you to keep all of your work in a single location and gives you a backup in case your backstage mover is missing, out of place, or not behaving as you expect. You may also wish to read the secion on using private waypoints along with private groups to handle your pre-show and post-show setup movement. 4.e Cameras are Built In
The MST Mover already contains a camera client. An avatar riding the mover does not need to wear a camera HUD to see scripted camera movement. Do not wear a camera HUD and ride the mover at the same time, or you will see all scripted camera motion twice and this can cause stuttering-like effects. 5. (OPTIONAL) How to Control the MST Mover using a Traditional Chat Command
Chat commands are sometimes helpful for achieving rare special effects or integrating with other tools. Every action that the MST mover can perform via the blue dialogs, plus many more, can also be performed via chat commands. Below we will show some examples of chat commands that can used to trigger simple playback movement, similar to what you used to test in section 3.
To stop movement, returning an MST mover to its home position, you can shout the “/8 stopmove arrehnmover” command to send a stop command on channel 8. You should replace “arrehnmover” with the name of your specific MST mover object. Below are some examples of how to use this chat command:
/8 stopmove movertest (This will stop the movement sequence only for the mover named "movertest"
To start movement, you can use the command “/8 startmove arrehnmover”, replacing “arrehnmover” with the name of your specific MST mover object, similar to how you stopped movement above.
/8 startmove movertest (This will start the movement sequence only for the mover named "movertest"
In general when you use chat commands you will need to specify the name of the mover right after the command. The movers are designed to share a channel but look for their name for each command. If you want to see a full list of mover chat commands you can shout “/8 help”. The full list can be found below:
How to read the syntax:
< > means “this parameter is required”, and you do not have to type the “<” and “>” characters. [ ] means “this parameter is OPTIONAL”, and you do not have to type the “[” and “]” characters. <something>|<somethingelse> means that you can choose EITHER the “something” parameter, or the “something else” parameter, but not both at once. You do not type the “<“, the “|” or the “>” characters.
startmove [<mover_name>|<group_name>] [start_waypoint] [end_waypoint] [loop|rev|pingpong] stopmove [<mover_name>|<group_name>] pausemove [<move_name>|<group_name>] moveto <mover_name>]|<group_name> (<pos> <rot>|<waypoint>) [seconds] newwaypoint [movername] printmove [<mover_name>|<group_name>] setmovehome [<mover_name>|<group_name>] hidewaypoint <mover_name> [waypointname] showwaypoint <mover_name> [waypointname] deletewaypoint <mover_name> [waypointname] newwaypoint <mover_name> precache <mover_name> camon <mover_name> camoff <mover_name> hidemove <mover_name>|<group_name moveranim <move_name>
You may see the above like by typing “/8 helpmove“ 6. Advanced Movement – How to Make Movement Timing More Precise with MOVETO 6.a What Causes Movement Lag?
Movement sequences are affected by your region statistics. If your region is very busy, full of avatars and scripts, it is very possible for movement to take longer than it is supposed to last. For example, if you have created a movement sequence that moves to five waypoints for a total movement time of 30 seconds, this may take longer on a busy region. It may take 31 seconds, or 35 seconds, etc. In general, the longer the sequence, the more of a drift effect that can be seen when the region is under stress. This behavior is a consequence of Second Life’s physics engine and is difficult to predict.
This movement lag can make it very difficult to tightly choreograph avatar animations, music, and effects that you wish to trigger at the same time as movement.
One way to compensate for this is to change how he mover plays back a sequence. Normally you would tell the mover to “start” and accept that it may be affected by lag. An alternate command to start is “MOVETO”. This command can be used to tell the mover to move to particular waypoints at particular exact times. This method requires more chat commands overall, but in exchange for more chat commands you gain tighter timing.
MOVETO can be used either as an MST Eventlist command (preferred) or as a generic chat command. 6.b When to Use MOVETO
Use the “moveto” methods in the following situations:
When you need movement to perfectly match animations near the end or middle of your act, which might otherwise be affected by movement lag. When you need to move from point A to point B near instantaneously, faster than 0.2 seconds. When you want to wish to move to waypoints in a dynamic, changeable way that isn’t pre-programmed in advance. Waypoint order and movement speed can be changed on the fly. When you regularly move to the same location and you’d rather use a single waypoint for it than have many waypoints on top of each other.
SPECIAL NOTE: When you use the “moveto” commands, the speed and pause times you defined for a waypoint in the sequence builder are both ignored. The speed you specify with the moveto command replaces the speed you set on the waypoint in the sequence builder. Instead of specifying a pause time, you simply wait the right amount of seconds before sending the next moveto command. 6.c Precautions when Using MOVETO
When you use MOVETO, you have to send a MOVETO command for each waypoint you wish to visit. For example if you have five waypoints, you could use “MOVESTART” and watch the mover visit all five in order. However if you use MOVETO, you need to tell it to go to each one. Example:
0.0|MOVETO:MyGroup1 waypoint1 2.0 2.1|MOVETO:MyGroup1 waypoint2 4.5 6.7|MOVETO:MyGroup1 waypoing3 3.0 9.8|MOVETO:MyGroup1 waypoint4 10.0 19.9MOVETO:MyGroup1 waypoint5 5.5
Notice in the above example I have left about 0.1s of padding between each movement. It is a good idea to leave some padding but not required.
Because MOVETO requires so many extra commands , you have to take care not to send too many commands during the same moment of time, or some may be delayed or even lost. To avoid this, try use MOVETO with groups whenever possible instead of individual movers, so you are moving many movers with a single command. If you must move your movers individually, avoid moving them at the exact same time. 7. Advanced Movement Patterns – Other Waypoints Tricks 7.a Movement Playback Segments
You may optionally decide to use the Simple Playback Mode only a certain segment of your larger movement sequence, by specifying startWaypoint and endWaypoint arguments to the “/8 startmove” command. For example:
/8 startmove movertest waypoint2 waypoint5
(This will start the movement sequence only for the mover named “movertest” and perform the movement only from waypoints2 through waypoint5. Please note that there are spaces between the name of the mover, and each of the waypoints.)
As with other startmove commands, you should specify a group or movername.
NOTE: You should move your mover to the desired starting location for the above sequence first, before using “/8 startmove…”. This can be done by using a moveto command if your mover doesn’t start at the correct place already. 7.b Movement Playback Loops
When using simple playback mode, you may optionally decide to play all or some of your movement sequence in a loop, by specifying either “loop” “rev” or “pingpong” after your “/8 startmove” command. For example:
/8 startmove movertest waypoint2 waypoint5 loop
(This will loop the movement sequence between waypoint2 and waypoint5)
/8 startmove movertest waypoint2 waypoint5 rev
(This will play the movement sequence between waypoint2 and waypoint5 in reverse)
/8 startmove movertest waypoint2 waypoint5 pingpong
(This will loop movement sequence between waypoint2 and waypoint 5 back and forth.. first playing it forwards, then backwards, then forwards again, etc.) 7.c Using “moveto” with Coordinates instead of Waypoints
The chat moveto commands are very flexible, and do not even require you to set up a waypoint ahead of time. You may pass position and rotation values directly with the moveto command, for example:
/8 moveto movertest <1.0,0.0,0.0> <0.0,0.0,0.0,1.0> 5.0
The above command would slowly cause the mover named “movertest” to slide 1 meter forward over the course of 5 seconds. Most people will probably not use this functionality, but it can be very handy when the list of specific waypoints cannot be known in advance, or there are so many waypoints required that they cannot all be added to the ~MOVELIST notecard and fit into memory.
NOTE The positions and rotations specified should be relative to the mover’s home position. 7.d Private Waypoints
Sometimes you wish to use simple playback mode with MOVESTART, but also at the same time want to have waypoints that are not part of the MOVESTART sequence. These can be useful for making waypoints that are intended to be used before or after the main part of the show. This is particularly useful for people who leave their movers rezzed semi-permanently backstage.
If you want to make a waypoint “private” and ignored by MOVESTART, rename it so that it starts with a “!” character. When you do this the color of the waypoint will change to white, and you will be unable to set a speed or wait time, because this waypoint now can only be used by MOVETO commands. The main MOVESTART command will ignore it. 8. Advanced Movement Patterns – Using multiple mover notecards (Beta 2021 Feature) 8.a Why multiple movement cards may be desired
When using a very large number of waypoints you may need to split your movement up between two or more movement notecards. Each notecard can typically hold around 50-70 waypoints depending on how you name them. Shorter waypoint names use a little less memory. You may also wish to use multiple movement notecards even when you are not low on memory, if you wish your mover to have two or more distinct travel sequences. For example, if you wished to keep travel from backstage onto centerstage while the theater curtain is down, seperate from stage movement sequence that happens while the stage curtain is up. 8.b How to use different movement cards
First, create a new notecard (typically by copying a default ~MOVELIST notecard) and place it in the mover’s inventory. Be sure to name this new notecard something unique so you will not confuse it with the usual ~MOVELIST card.
Second, for each notecard you add to the mover (beyond ~MOVELIST), add both a “~moveReaderN” and “~moveMgrN” script. These scripts can be found in your MST Box in an item called “MST – Optional Scripts for more dancers and longer movers”. “N” will be a number, and you should be careful to add them in order. For example, if you wish to use a total of three movement notecards (~MOVELIST, and then two others), you should add the following scripts to your mover: “~moveReader2″ ,”~moveMgr2″ ,”~moveReader3″,”~moverMgr3”.
Once the new scripts have been added, and notecards configured you can change notecards for designing the waypoints by clicking the mover and choose “Select Card”.
When playing back movement, you can use an EVENTLIST command “MOVECARD:NameOfYourMovementCard” to change cards. Or you use a chat command “/8 setnotecard yourMoverName yourNotecardName”.
Example:
0.0|SAY:0:Starting VLP Example 1. Starting movement of first notecard 0.0|ANIM:The Robot 0.0||MOVESTART 9.0|SAY:0:Starting movement of second notecard 9.0|MOVECARD:A_Different_Notecard 9.5|MOVESTART 9.5|ANIM:Figure Eight 25.0|STOP
Note: When changing movement notecards, the previous notecard’s movement will automatically be stopped.
9. Advanced Feature – Using multiple animation engines with the same mover (Beta 2021 Feature)
8.a Why multiple animation engines may be desired
Sometimes you have a very long animation sequence that cannot fit in any single MST Performance Engine or ChoreoHUD. In this case, you can tell your mover to accept animation control from multiple sources. You can do this by editing the mover’s ~MOVELIST notecard and adding additional “MSTCONTROLLER=” lines, each line specifying a different engine.
Some choreographers also wish to use multiple animation sources just to provide redundancy or allow staff members to share duties. If the animation engines are owned by different people, make sure to also add an ALLOW= line in your ~MOVELIST notecard for each other animation engine owner, other than yourself.
Example:
- Set the name of your MST Engine or ChoreoHUD below. Setting this will improve performance.
- If you are using the ChoreoHUD to run your movers, you MUST use the choreoHUD's name here.
MSTCONTROLLER=arrehnPE_cabaret MSTCONTROLLER=johndoeChoreoHUD_cabaret ALLOW=Johndoe Resident
NOTE: When multiple animation engines are paired to a mover, anyone sitting on that mover will receive animation permission requests from each engine listed. To avoid permission request spam, it is suggested the the animation engines be configured to to use the “MetaHarper Immersive Theater” land experience, if possible, by edited each engine’s “MST_CONFIG” notecards and setting “USE_EXPERIENCE=YES”.
10. Addtional Features / HowTos 10.a Easy Ways to Select Movers and Waypoints, even while Riding the Mover
If you are looking for a way to select the mover and access it’s click menu without using your viewer cameras, there are a few methods available.
Method 1 is “Area Search”. Pull open your viewer’s Area Search window (usually accessed under “World”) and search for the name of your mover or the name of your waypoint. From the list of results you may right-click any line and select “touch”.
Method 2 is “chat commands”. Most commands to manipulate your mover can be accomplished via chat commands. For a list of all commands you can type “/8 help” when standing near your mover, or find examples on this documentation page.
Method 3, if you own the “MST Choreo HUD Director Edition” is to use the Mover Tab in your choreoHUD. From this tab you can select movers in the area and click the edit icon to access that mover’s click menu. 10.b How to Change the Message Sent when Avatars Sit on the Mover.
When you first sit on the mover it will send you a welcome message in your chat. You can change this message by adding a line to your ~MOVELIST notecard that starts with “WELCOME=”. For example, you could add this line to your ~MOVELIST notecard:
WELCOME=Make sure to tell the director you're ready to go and set your home position here.
10.c How to Move Objects instead of Avatars
By default, the mover is a good size and shape for avatars to ride. If you want to move an object instead of an avatar, here’s what to do.
First, turn off some of the special effects that only apply to avatars by adding this line in your ~MOVELIST notecard:
@nofx
At this point you can make the MST mover transparent, resize it if needed, and link it it with the object you wish to move. If you link the mover to other objects keep in mind that the MST mover must be the “root” object, and that the prim accounting type should be set to “Convex Hull”, and the PE value should be less than 64. 10.d How to Create a New Movement Sequence that is a Left-Right Mirror Image of an Existing Sequence.
It’s fairly common for people to want to make movement on the left of their performance area be a mirror image of movement on the right of their performance area. The MST mover supports this concept.
To mirror movement, first create the waypoints for the left or right side and save the waypoints to the ~MOVELIST notecard. Next, make a copy of the MST Mover and rename it something new. Finally, click the newly copied mover and choose the “Mirror” option from the pop up dialog. After doing this, print out the waypoints and re-save the new values to the ~MOVELIST notecard. 10.e How to Hide Empty Movers During a Show
Sometimes you may want to make the green MST viewers temporarily invisible.
To hide the MST Mover you can simply make it transparent, or pick it up. You can also click the mover and choose ‘hide’ from its menu to toggle whether it is hidden or not.
You also can send a special command to tell movers to hide themselves.
/8 hidemove NameOfYourParticularMover
This command is temporary– The mover will reset to its normal state whenever its scripts reset or an avatar riding on it stands up. 10.f How to Give Other Avatars Control of your MST Mover for Collaboration
You may optionally allow other avatars to collaborate with you and send chat commands to your MST mover or make changes to waypoints. To do this add “ALLOW” lines to your “~MOVELIST” notecard with the names of the avatars you wish to share with. For example:
ALLOW=Arrehn Resident
Note: You can use full names, usernames, or UUIDs, but you cannot use “Display Names” because Display Names are able to be impersonated. Make sure the spelling and capitalization is exact, and if the avatar you are sharing with doesn’t have a last name make sure to add “Resident”.
In addition to adding this line, you may need to check the “share with group” box in the viewer build window for your MST mover, and/or grant “allow object rights” to your collaborators, in order to allow the avatar to make direct edits to your ~MOVELIST notecard. 10.g How to Disable the Built-in Scripted Camera Feature
You can add the line:
@nocam
to the ~MOVELIST notecard to disable the scripted camera feature. 10.h How to Change the “Sit Here” Floating Text
In the ~MOVELIST notecard, you can use the FLOATTEXT option to set the floating next above the mover to something other than “Sit Here”. Example:
FLOATTEXT="Arrehn's Set"
10.i How to Disable Animation Invites when Avatars Sit on the Mover
If you have linked your mover to something that has its own animation poses, you might not want someone sitting on the mover to receive an animation invite from a metaharper performance engine or ChoreoHUD. If this is the case you can use the following option in the ~MOVELIST notecard:
@noanim
10.j How to Disable the Default “page-up / page-down” Height Adjustment Feature
If you have linked your mover to an object that already captures the page up/pagedown/e/c keys, you might not wish the mover to try and use these button presses to adjust a rider’s height. In this case you can disable the mover’s default behavior by using the ~MOVELIST notecard option:
@noadjust
10.j How to make visually smooth movement between waypoints, automatically (auto time)
If you have want to make your mover appear to travel at the same rate between many waypoints, some which are close together and some further apart, this can be accomplished automatically. Sometimes this is called also called a “normalize time” function. This can be accomplished by clicking your mover, using the [>> More] button, and selecting “Auto Time”. You can feed it the waypoint to start from, waypoint to end with, and total travel time in seconds. It will automatically compute the arrival times of all the waypoints in between for you. Be sure to save re-print your movelist list after using this feature so you can update the MOVELIST notecard.