MA3D
The MA3D and MA3 Visualiser from MA Lighting are compatible with the EVO workflow.
NDI setup
- Once the machine with the MA onPC and MA3D is ready, run NDI Scan convertor. This app will convert the outputs of the GPU in video streams over IP.
- Open the NDI studio monitor and check that screen with the MA3D is working as an NDI stream.
Disguise setup
- Open a new project file, remove the projector out of the stage and create a new virtual camera.
- Right-click on Devices > Video input patch. Navigate to video.in1 > input configuration and select the NDI stream of the MA3D. Click on Start preview to check the stream, then stop the preview.
- Create a DMX device, and use the IP address of the MA onPC or MA desk, and check the data with the DMX monitor.
- Create a PositionReceiver Device and build new expressions to control the position x,y,z and rotation x,y,z of the virtual camera within Designer using the data coming from the MA lighting desk.
Expressions
Expressions are used within Designer to calculate the mathematical values needed to align the virtual worlds of both visualizers. The information that follows will be used in the expressions that need to be created within Disguise:
- The MA camera controller has a range from -1000m to 1000m for the x,y,z positions and a range of -720 to 720 degrees for the pan and tilt.
- The position x,y,z of the MA camera control has a resolution of 24bits for the x,y,z, pan and tilt. Expressions within Designer only support 16bits, meaning that the camera movement in Disguise will be smooth using 16bit data.
- The ‘position y’ of the MA camera controller is the ‘offset z’ value of the virtual camera within Designer; The ‘position z’ of the MA camera controller is the ‘offset y’ value of the virtual camera within Disguise.
These are the expressions you need to build:
Camera offset x
Camera offset y
Camera offset z
Camera pan (rotation y)
Camera tilt (rotation x)
If the expressions are correctly built the new virtual camera within Designer will move to the same x,y,z position location of the MA3D camera.
- Create a new Video layer, map it to surface 1, and add some media.
- Create another Video layer, change the blend mode to Add, and select video-in 1 as media; the thumbnail will display the MA3D NDI stream with a checkerboard. Make a new direct mapping for your new virtual camera.
- Go to Stage > Visualizer Camera and assign to the new virtual camera.
- Confirm that the Disguise camera and the MA3D camera is aligned.
- Open the virtual camera properties editor and change the background colour to black.
Once you have finished all the steps you can make the stage plane in MA3D invisible; it will not be needed once the alignment of the cameras is completed. You can start patching lights on the grandMA2 and add screens in Disguise to create your show.
Controlling the Disguise camera from MA3D
General Information
The MA 3D world is scaled between -1000m and +1000m, and rotation between -720 and +720°. DMX values for control are output as 24 bit control signals, using 3 DMX channels (bytes). Disguise only supports the input of 8 or 16-bit values, so we take the most significant bits from these values.
Using these real world values, we are then able to plug them into the following formulas to create the expressions needed to connect an external visualiser camera to the internal camera within Disguise:
{world centre offset in meters/degrees}+(dmx16:universe.address/65536)*{world size in meters/degrees}-{world size in meters/degrees}
GrandMA 3D Camera Control Expressions
Property | Expression |
---|---|
Position X | 1000+(dmx16:1.1/65536)*2000-2000 |
Position Y | 1000+(dmx16:1.7/65536)*2000-2000 |
Position Z | 1000+(dmx16:1.4/65536)*2000-2000 |
Rotation X | 720-(dmx16:1.13/65535)*1440-1440 |
Rotation Y | 720+(dmx16:1.10/65536)*1440-1440 |
Rotation Z | No expression (GrandMA 3D does not support Rotation Z via DMX) |
Note: Y and Z are flipped in GrandMA 3D, so we pick up opposing DMX values for Position Y.
Field of View
Set this manually.
MA 3D measures field of view as half horizontal value compared to Designer (eg if MA 3D is 22.5°, Designer field of view is 45°.
In the above expressions, the constants 1440 and 2000 are derived from the world scale of the GrandMA 3D scene.
- 2000 is the scale factor between the GrandMA 3D world positions into meter scaling.
- 1440 is the scale factor between the GrandMA 3D world rotations and degrees.
- The above constants can be modified for integration with other visualisation systems.
- Note that these expressions are only reading the top two bytes (16-bits) of the 24-bit values.
- At this point when you move the external visualiser camera, Designer visualiser camera will move too.
Using Disguise to control the MA3D camera
Disguise only supports the sending of 8 bit values from the DMXLightsControl layer, so we need to use expressions to split the 24 bits into separate bytes:
DMX Channel Assignments for Camera Control
Property | DMX Channel | Expression |
---|---|---|
High Byte Position X | 1 | (((camera.offset.x+1000)*8388.608)/65536) |
Mid Byte Position X | 2 | (((camera.offset.x+1000)*8388.608)%65536)/256) |
Low Byte Position X | 3 | (((camera.offset.x+1000)*8388.608)%256) |
High Byte Position Y | 4 | (((camera.offset.y+1000)*8388.608)/65536) |
Mid Byte Position Y | 5 | (((camera.offset.y+1000)*8388.608)%65536)/256) |
Low Byte Position Y | 6 | (((camera.offset.y+1000)*8388.608)%256) |
High Byte Position Z | 7 | (((camera.offset.z+1000)*8388.608)/65536) |
Mid Byte Position Z | 8 | (((camera.offset.z+1000)*8388.608)%65536)/256) |
Low Byte Position Z | 9 | (((camera.offset.z+1000)*8388.608)%256) |
High Byte Rotation X | 10 | ((((camera.rotation.x*-1)+720)*((256*256*256)/1440)/65536) |
Mid Byte Rotation X | 11 | ((((camera.rotation.x*-1)+720)*((256*256*256)/1440)%65536/256) |
Low Byte Rotation X | 12 | ((((camera.rotation.x*-1)+720)*((256*256*256)/1440)%256) |
High Byte Rotation Y | 13 | ((((camera.rotation.y*-1)+720)*((256*256*256)/1440)/65536) |
Mid Byte Rotation Y | 14 | ((((camera.rotation.y*-1)+720)*((256*256*256)/1440)%65536/256) |
Low Byte Rotation Y | 15 | ((((camera.rotation.y*-1)+720)*((256*256*256)/1440)%256) |
High Byte Zoom | 16 | - |
Mid Byte Zoom | 17 | - |
Low Byte Zoom | 18 | - |
Note: Y and Z are flipped in MA 3D world. Y is inverted in MA3D so we invert the expression with the negative conversion on the bytes.
Constants
-
In the above expressions, the constants are derived from the world scale of the GrandMA 3D scene.
-
Position constant: 8388.608 is the scale factor between the GrandMA 3D world positions (-1000m to +1000m = 2000m) and the 24-bit DMX value (256 x 256 x 256) / 2000 = 8388.608.
-
Rotation constant: ((256256256)/1440): 11650.84444444 is the scale factor between the GrandMA 3D world rotations (-720 to +720 degrees = 1440 degrees) and the 24-bit DMX value (256 x 256 x 256) / 1440 = 11650.84444444
-
The above constants can be modified for integration with other visualisation systems.
You will need to patch these same values in the external visualiser.
At this point when you move the Disguise camera, the external visualiser camera will move.
The only final adjustments that need to be set manually are field of view.