MetaHarper Show Tools – Creating Camera Angles, Zooms, Pans, and Fades


  1. Overview
    1. What Can Scripted Cameras Do?
    2. What Camera Limitations Exist?
  2. Preparation
    1. Planning Specific Camera Views
    2. Planning Camera Timing
  3. Defining the Camera Views
    1. Create a New Camera View.
    2. Save Camera Views with a Name.
    3. Update the ~CAMERAS notecard.
    4. Verify your Saved Camera Views.
  4. Test Camera View Transitions
    1. Use the MST Theater Seat or MST Camera HUD to Test Camera Views.
    2. Test Transitions and Timing.
  5. How to Add Scripted Camera Transitions to your Choreography.
    1. Notify Audience that you are using Scripted Camera.
    2. Insert Camera Chat Commands to your Choreography System with Timings.
    3. Clear Camera Control at the End of your Performance.
    4. Avoid Pointing the Camera at the Audience.
  6. Other Commands
    1. Showing and Hiding Camera View Placeholders.
    2. Printing out the Full List of Cameras Views for Notecard Saves.
    3. Deleting Camera Views.
    4. Automatically Rotating to Face an Avatar.
    5. Fade to/from Black Camera Effects
    6. “Rumble” Shaking Camera Special Effects
  7. Advanced Technical Tunings
    1. Frame delay.
    2. Track cam tunings.



1.a  What Can Scripted Cameras Do?

MST Show Tools lets you take control of your audience and performer’s cameras, so that you can add a cinematic-like experience to your performance with moderately smooth camera pans and zooms. Camera control can also be useful for making machinema, or showing off close up or unusually dramatic shots that the audience would be unlikely to find on their own at specific times.

1.b  What Camera Limitations Exist?

  • In order to take over camera control of audience members, the audience must be seated on a specific scripted chair or sittable object. You can use the include MST Theater Seat or read the Performance Venue Setup documentation for how to make your own.
  • Panning and zooming is not perfectly smooth, it is “moderately smooth”, and is affected by sim or network lag. For best results keep crowd sizes manageable and keep your “scripts run percentage” sim statistic over 50%.
  • Camera views can be affected to some degree by viewer customizations, including “fish-eye mode” or even screen size. For best results remove any fish-eye or zoom customizations in your viewer by pressing “Control-9” before working with cameras.


2. Preparation

Before you start, you should have a MST Venue Centerpoint rezzed and configured nearby. You should also have  rezzed a MST Performance Engine on the ground (which may be already running pieces of your act) and ensure that it centers properly on top of the MST Venue Centerpoint prim.

2.a Planning Specific Camera Views

If this is the first time you’ve worked with camera views, you want to start simple. It takes a little while to train your eye to think about dramatic angles and how they can flow from one to the other. The first thing to do is complete your performance without cameras.  Then, start by watching your fully completed act all the way through a few times. Use your viewer snapshot tool to take screen pictures of perspectives or viewpoints you want the audience to see and note the time (in minutes and seconds from the start of your act) when this view should be used. If this is your first time, keep the number of snapshots you use small, such as 3-5 snapshots. You can always add more later. The camera views you need should contain at a minimum:

  1. Where you want the camera to be right after the curtain opens or the performance starts.
  2. Where you want the camera to be at the end of your performance, right as the curtain comes down.
  3. Where you want the camera to be at one or more dramatic moments in the middle of your performance.

2.b  Planning Camera Timing

For all of the snapshots you take above, you want to write down *when* during your act they should be used, in seconds from the beginning. For example, if your act is 3 minutes long (180 seconds), your opening camera angle will start at 0 seconds,  your ending camera angle at perhaps around 170 seconds, and one or more middle camera viewers somewhere in between. It makes sense to figure out these rough timing now because you will use them later. Do not worry about being precise at this point in the process– You can always ajust the times later.


3.  Defining the Camera Views

3.a  Create a new Camera View

When you’ve finished all your snapshots and timings, use your viewer to move your camera into the position to match one of the snapshots you have taken. When you have moved your camera into position, either click the MST Performance Engine and choose “<more cam>” and then “newcam” from the menu, or run the chat command “/8 newcam”.

This will bring up a permission dialog box asking you to allow your camera to be tracked. Click to accept. When you do so, a camera prim will be moved around your current view. You will see the corners of it and a dot in the center. These are just visual aids to help your center your view if needed– the audience will not see these corners or center dot. You can adjust your viewer camera a little and the camera guide will follow you. When you have the view you wish to keep, move on to the next step.

3.b  Save the Camera View with a Name

When you want to save your current camera focus as a View, use the chat command “/8 savecam <name_of_view>”. OR you can click the MST Performance Engine and choose “save cam” from the popup menu. An example of the chat command would be:

/8 savecam curtainup

This command will make the camera marker disappear, and will print out a “CAMERA=….” line of text you should copy into your clipboard for pasting into the CAMERAS notecard later.

If you want to make the camera marker that is following you go away without saving the position, you can use “/8 stopcam”.

If you screw up and save the camera in the wrong place, do not worry. You can repeat these steps and re-save the camera view, using the same name as previously. The new save will overwrite the previous one.

After you’ve saved the camera view, go on to the next step.

3.c  Update the ~CAMERAS Notecard

After using the “/8 savecam” command above, copy the line that it prints for you that starts with “CAMERA=” into your clipboard. Next, open the notecard “~CAMERAS” in your MST Performance Engine and paste in this line after the other lines that start with “CAMERA=”.

NOTE: If you’ve previously added lines to this notecard, you may wish to delete any of your own added lines that are no longer in use.

Finally, save the notecard and wait for the MST peformance engine to tell you that all cameras are loaded and ready.

3.d  Verify your Saved Camera Views

After saving your notecard, you should make sure that your new camera waypoints are saved properly. Either click the MST Performance Engine, go to “more cam” and choose “listcams”, OR  use the chat command:

/8 listcams

This should show you all the cameras loaded by the MST Performance Engine. You should see your newly added camera views in this list.


4. Test Scripted Camera Transitions

4.a  Use the Seat or HUD to Test Camera Views

After you’ve saved all the camera views using the methods described in section [2], you can try testing them. In order to do this you must do one of two things. EITHER rez a camera enabled seat (such as MST Theater Seat) and configure it to work with your venue centerpoint, OR wear the “MST Camera HUD” tool and click the transparent camera icon in the upper-right of your screen until it tells you “Camera control enabled.”

Special note about the MST Camera HUD: It will tell you “Listening to …..” when you wear it and it detects a centerpoint nearby. If you don’t see this message, make sure that you have the MST centerpoint rezzed.

4.b  Test Transitions and Timing

Once you are sitting on the camera-enabled seat or using the MST Camera HUD, test each of your camera views by using the command “/8 setcam <viewname>”. For example:

/8 setcam curtainup

Change the “curtainup” part to a name that matches one of your saved camera views from step [2.2]. After you type this command your camera view should immediately switch. You may need to press the “Escape” key a few times for this to take effect. You can use your viewer camera controls, stand up, or remove your hud to regain control of your camera at any time. Test each one of your saves cameras before continuing further.

After you’ve tested all your camera views, now try smooth transitions. Test these using the format “/8 setcam <name> <frames>”. For example:

/8 setcam curtainup 100

This is almost identical to the earlier command, except it has a number at the end. The number is the number of transition frames.. The larger this number, the slower the transition. Experiment with different numbers and different camera names to get a feel for how these transitions can work.


5.  How to Add Scripted Camera Transitions to Your Choreography

5.a Notify the Audience that You Use Scripted Cameras

When you use scripted camera control in your performance, you may wish to make your audience aware of this before the performance starts. Let them know they will need to sit down in order for the camera effects to work, and that they should reset any viewer camera customization by pressing “control-9”. Let them know that they can “break out” of the camera control at any time by using the viewer camera controls, and can also get back to the scripted camera view at any time by pressing the “Escape” key.

5.b  Insert Camera Chat Commands to your Choreography System with Timing

You will need to add the various “/8 setcam <name>” commands you tested in step [3.2] to your choreography system. For example if you are using MST Performance Engine, and want to add a camera transition to a camera named “centerzoom” that happens 40 seconds after the start of an act, you might add a line:

40|SHOUT:8:setcam centerzoom 100

to the appropriate group in your ~EVENTLIST notecard. You may have to add a similar line if you are different choreography system, such as Spoton Performance Director, or Barre HUD. For the Barre HUD your camera commands may look like this syntax:

[NAME]do_camera|[SHOUT:8]|setcam centerzoom 100|10.0|[N]

5.c   Clear Scripted Camera Control at the End of your Performance

At the end of your performance, it is very important that you remove camera control, so that the following performances after yours do not get stuck in your last camera position. To clear camera control run the following command:

/8 clearcam

You should add the above command to the end of your choreography timeline, before you derez or box your MST Performance Engine.
NOTE: If you are part of a show where one act is supposed to flow smoothly into the next without a break, you should NOT clear the camera. Ask your director if you are unsure.

5.d  Avoiding Pointing the Camera at the Audience

Be aware of what is in the camera’s field of view. IF you make a camera view that points the camera at a crowd of avatars, this will make users try and draw those avatars all at once. This can cause lag and/or crashes in the extreme case. Don’t do it, keep the cameras pointed at your set.


6.   Other Commands

6.a  Showing and Hiding Camera View Placeholders

You can see visual markers where all the camera views are by clicking the MST Performance Engine and choosing “show cams” or by running the chat command:

/8 showcam

NOTE: Do not attempt to move the displayed camera markers, they aren’t “real”, they are just visual aids.  If you want to point the camera view somewhere else, instead use the “newcam” command as described earlier, and save a new camera view with the same name as the marker you want to update.

The camera markers will disappear if you reload the ~CAMERA notecard, or by running the complementary command:

/8 hidecam

6.b   Printing out the Entire List of Camera Views for Notecard Saves

You can get a complete print out of all the saved camera views by clicking the MST Performance Engine and choosing “printcams” OR by using the following chat command:

/8 printcams

You can copy the printout from the above command into your clipboard and paste it into the ~CAMERAS notecard, replacing any existing lines that start with  “CAMERA=”.

6.c   Deleting Camera Views

If you wish to delete a camera waypoint, you can either use the command  “/8 deletecam <name>”, or simply edit the ~CAMERAS notecard and delete the line(s) containing the camera you no longer want.

6.d  Automatically Rotating to Face an Avatar

It is possible to tell a particular camera waypoint to rotate in place, without moving, to always face at a particular avatar. There are some limitations to this. It works best when the camera is further away, so that rotations are relatively small. Up close it will not work well. If you want to try this functionality, first use a “/8 setcam <name>” command like in section [3.2], then run the command “/8 trackcam <avatar_uuid> ” where <avatar_uuid> can be copied from a particular avatar’s profile. For example, to track the motions of avatar “Arrehn Oberlander”, you would use the following command:

/8 trackcam 3c637a3e-370e-4bca-b18e-92b4692a685a

Tracking will automatically stop if you use another “/8 setcam <name>” command or if you use “/8 trackcam stop”

6.e   Fade to/from Black Camera Effects

/8 fadeoutcam 20

This will fade the currently set scripted camera position in 20 steps.
NOTE: if you switch camera views after the fade, the black-out blind will move to your new camera location, but due to timing this may result in a split-second where the view is not 100% black. If you want to move the camera while it is faded out without any visual flickers, the recommended practice is to rez a hollow, black tube or tunnel that covers the line from your starting point to your ending point, then derez this tube after the camera movement ends.

/8 fadeincam 20

This will fade the currently set scripted camera position in from black in 20 steps.

6.f  “Rumble” Shaking Camera Special Effects

You can make the user’s scripted camera shake by using the command:

/8 shakecam

After first setting the camera to a position. You can also add floating point numbers to specify the strength and duration in seconds. For example:

/8 shakecam 2.0 5.0

Would shake the camera with 2x as much the default strength, for 5 seconds.


7.  Advanced Technical Tunings

7.a  Frame Delay

By default there is a “0.03” second delay between each frame during transitions. This number has been chosen as the best compromise between lag and smoothness and will work best in most situations. However, if you choose you can increase this value to cause slower, choppier transitions that will work better in heavy lag, or decrease the value to cause faster, smoother transitions if there is no lag and small crowds. To experiment with the frame delay add an additional number after the setcam transition command. For example:

/8 setcam centerzoom 100 0.1

will cause a slower and chopper, but more reliable zoom effect. This can be useful when you know there are going to be 90+ avatars in the audience. Conversely:

/8 setcam centerzoom 100 0.01

will cause a faster, smoother zoom effect that will only behave well if there is zero lag.  This may be good for machinema while you are alone.

There’s no support for reducing the frame delay less than 0.01

7.b  Track Cam Tunings

By default the auto-tracking camera feature is tuned to be smooth when used from a moderate distance away from the target. It can be further tuned by adding numbers after the trackcam  command in the following format: “/8 trackcam <avatar> <track steps> <frame delay> <poll interval>”

<track steps> is the number of frames that will be send every time rotation is needed to keep the target avatar in the center. It defaults to “20” frames increasing the number may make rotation smoother but cause the tracking to fall behind the avatar’s current movement. Decreasing the number will make the camera react faster but appear more bursty. or choppy.

<frame delay> is the save as the frame delay value described in step  6.1 and defaults to “0.02” seconds.

<poll step> is how much time should pass before the camera checks to see if an avatar has moved. this value defaults to “0.6” seconds. Changing this number upwards can cause the camera be slow to notice when an avatar has moved. Changing this number download can make unable to keep up with an avatar’s movement and start to fall behind if tracking has been left on too long.

An example may be:

/7 setcam trackcam 3c637a3e-370e-4bca-b18e-92b4692a685a 20  0.2 0.6

You can need to experiment a lot with these values to get a feel for how they work. It’s advised to only use the “trackcam” command for limited duration when needed.