Skip to content

Shot Recorder

The Shot Recording system allows users to record and export parameters from within Designer, ready for use in post-production workflows.

What is the Shot Recording System?

The Shot Recording system is designed as a generic system to allow users to record any fields or properties displayed in the GUI. Users can build up their own collections of parameters they want to record. In addition, the system has a quick and easy workflow for recording commonly-used sets of parameters, such as camera tracking.

Unlike device recordings, which are played back within Designer, the data recorded by the ShotRecorder Device can be used by external applications.

See How it Works

Shot recorder, hosted in YouTube

Components of the Shot Recorder

The main components of the ShotRecorder Device are:

  • The ParameterCollection containing the parameters to be recorded.
  • A TimecodeTransport used to assign timestamps to the recorded parameters.
  • Recording and export settings.

Parameter Collection

ParameterCollection is a resource that allows users to create several different collections and switch between them when deciding which parameters to record. It contains an array of ParameterSources, each of which is one parameter, e.g. field/property to record.

ParameterCollections can also contain a list of nested ParameterCollections, allowing users to build up collections in a modular way and add them all to one outer collection which is used for recording.

Some ParameterCollections are auto-created with sets of parameters which are commonly required. For example, each Camera auto-creates a tracking collection containing all the parameters commonly required for recreating camera tracking data. Similarly, each SpatialMap also creates a similar tracking ParameterCollection - the main difference is that this accounts for offsets of the world zero point in the spatial map. It also references the currently active camera if using an MR set.

Parameter Sources

ParameterSources contain a list of field ParameterSources for compound types (e.g. Vec contains x, y, and z, Resource can contain its fields). For compound types, the value of the ParameterSource is found by populating the values of its fields. By contrast, the values for basic types are populated using the expression system, which can return floats or strings. Any limitations of the expression system, or particular fields which cannot be accessed by expressions, will also be limitations of the shot recording system.

Setting up the Shot Recording system

  1. Create a ShotRecorder Device in the current Device Manager. This device will become the master of the shot recording system.
  2. Name the Slate for the current shot.
  3. Create a new ParameterCollection in the *Parameters field and add the desired parameters. ParameterCollections are a collection of different parameters that we are interested **in recording and getting the data out of i.e. camera tracking, MR set etc.
  4. Add the desired Timecode provide to the ‘Timecode’** field.
  5. The Take Snapshot and Take Screenshot options can be selected to take a project snapshot and/or screenshot at the end of each take.

To add parameters to a ParameterCollection for recording

  1. Open the ParameterCollection editor.
  2. Alt+drag from the Sources + button to any field in the UI to add it as a parameter source
  3. Several ParameterCollections are automatically created for convenience, such as camera tracking collections. These, or other user-created ParameterCollections, can be added to the ParameterCollections list in the editor to allow the parameters to be organised into smaller separate collections.
  4. Click the arrow on the right hand side of a parameter to expand it and view its fields. Resource parameters do not have their fields added by default, but they can be added by clicking the plus button on the right hand side of the parameter.
  5. Timecode can be set up inside the shot recorder in order to reference timecode in the recordings using TimeCodeTransport.

To make a recording

  1. To start a recording, click the button displaying Disengaged to engage the recorder and start recording.
  2. Click the same button again to stop the recording. The take number will automatically increment, or it can be changed manually.
  3. Alternatively, use the API commands documented at http://localhost/docs/v1/index.html to start and stop recordings externally
  4. Slates will be listed under the Recordings separator. Right-click on a slate to see the takes for that slate.

To export recordings

  1. Select the desired formats under the Export tab.
  2. Either click Export all recordings, or export recordings individually under the Recordings tab
  3. Select Auto-export to automatically export in the selected formats when each take is finished.
  4. Click Export comparison table to export a CSV table comparing the first value of each parameter for each recording
  5. You can also enable to take a snapshot or a screenshot of each recording if desired.

Recordings can currently be exported in the following formats

  • JSON: A compact JSON representation which contains the changed parameter values for each timestamp, similar to the .shot file
  • CSV (Compact): A compact CSV representation which contains only the changed parameter values for each timestamp
  • CSV (Dense): A dense CSV representation which contains all values for each parameter at each timestamp
  • FBX: An FBX file containing meshes and pose information (position, rotation, scale etc.) of all recorded objects, where available. Any additional properties not represented within the FBX specification are recorded as custom properties.

A new sub-folder will be created in the project called ‘output’. Within there we have ‘shots’ and in there will be the slate. In the slate, there will be the .shot recording in addition to the recording in the chosen format

Limitations

  • The shot recording system only writes data out of Designer. There is no capability to read recordings back into Disguise directly to replay the data. This is what device recordings should be used for.
  • The shot recording system and the device recording systems do not interact with each other. They can still both be used at the same time.
  • There is not currently an easy way to get all the recorded camera tracking data into Unreal Engine to re-render shots. Epic have outlined a workflow here to import and export FBX files which allows camera positions, rotations and FoV to be imported.