Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Components Documentation

...

  • Number of Cameras:
    Type: Integer | Default Setting: (4,5,6)
    The amount of cameras that will be created by this camera system (doubles this amount for 3D)

  • Camera Name:
    Type: String | Default Setting: UnityCam
    Prefix of the NDI/Spout stream when it is created.

  • Render Width:
    Type: Integer | Default Setting: 8000
    The width in pixels of the stream output. 8000 is standard for Igloos.

  • Player:
    Type: Game Object | Default Setting: null
    - Depricated - Will be removed in a future release

  • Third Person Camera:
    Type: Game Object | Default Setting: null
    - Depricated - Will be removed in a future release

  • Camera Prefab:
    Type: Game Object | Default Setting: null
    This allows you to define a camera that contains extra components or variables that you would like to use for all Igloo Cameras that are created by this script.
    This is very useful for camera based effects, as most are only applied to the main camera and not globally to all cameras in the scene.

  • Use Camera Prefab:
    Type: Boolean | Default Setting: false
    Should the camera prefab defined in Camera Prefab be used as the base for creating the camera system.

...

  • Clear Flags:
    Type: Enumeration | Default Setting: Skybox
    This enum specifies what clear flags the cameras will have when they are created. This is not used if you have useCameraPrefab set to true.
    1. Skybox
    2. Color
    3. Solid Color
    4. Depth
    5. Nothing
  • Clipping Planes:
    Type: Vector2 | Default Setting: x=0.1 y=100
    The minimum and maximum clipping range of the created cameras. The camera will not render outside of these distance values.

  • Igloo Field of View:
    Type: Enumeration | Default Setting: Standard
    This enum specifies the FOV of the entire camera system
    1. STANDARD:
      FOV is defined by the amount of cameras, using a 8:1 aspect ratio for 99% of igloo installations, this is correct.
    2. WIDE:
      Sets the FOV and output to reflect a verticle pixel output of 1200. Used when you're using projectors with a 1920x1200 resolution
    3. SUPERWIDE:
      - Depricated - Will be replaced in a future release.
    4. UHD:
      Sets the FOV and output to reflect a verticle pixel output of 2000. Used when you're using projectors with a 3840x2160 resolution

  • Igloo Stream Sender:
    Type: Enumeration | Default Setting: Standard
    This enum specifies how the cameras will emit their texture stream:
    1. Spout:
      A Local machine only based texture streaming service.
      Use this if you are running your application on the same computer as the Igloo software, which for most projects is applicable.
    2. NDI:
      A Local area network based texture streaming service. Use this if your project meets or exceeds the following conditions:
      • It's extremely detailed, in excess of 5 million polygons in the scene.
      • You're using a VR Headset device as the main source of input and control.
      • You want a high framerate output, and therefore as much of the graphics card as possible (First person shooter, or racing game, for example) and the 360 output is used as a spectator device.

  • Rotation Offset:
    Type: Float | Default Setting: -144
    The amount the camera system will rotate itself on creation. This makes sure that one camera is pointing directly forward in an Igloo.

  • Background Colour:
    Type: Color | Default Setting: Black
    The background the camera's will draw if they are set to Color or Solid Color(no alpha) within the Clear Flags variable.

  • Culling Mask:
    Type: Mask | Default Setting: Everything
    This defines what will be culled or not by the cameras when they draw. For more information on this please visit this link.

  • Auto Start:
    Type: Boolean | Default Setting: false
    If this is enabled the camera system will start up by itself. This is set to true by the IglooCameraCreator if you are using the Igloo prefab.

  • Culling Mask 3D:
    Type: Mask | Default Setting: Mixed
    This defines what will be culled or not by the 3D cameras when they draw. We choose to not make the UI layer 3D by selecting this to not get drawn.

Camera Control 3D

This handles OSC messages related to 3D. It then activates the 3D capability by activiating the second set of cameras, and adjusting their spacing to suit.

Image Added

  • Eye Spacing:
    Type: Clamped Float | Default Setting: 0.0213
    The distance between the cameras in a camera 3D pair. 

  • Lens Shift:
    Type: Clamped Float | Default Setting: 0.053
    The rotation between the cameras in a camera 3D pair.

  • Eye Spacing Max:
    Type: Float | Default Setting: 0.3
    The maximum distance allowed between cameras in a camera 3D pair.

  • Lens Shift Max:
    Type: Float | Default Setting: 0.1
    The maximum rotation allowed between the cameras in a camera 3D pair.

  • Is Inverted:
    Type: Boolean | Default Setting: false
    This is for debug use and is set by code, depending on the values given for lens shift and eye spacing.
    Changing this does not alter anything.

Follow Object Transform

A critical part of the camera system is how it can follow and maintain aspects of its position, rotation, and scale at the same time.

This Script allows you to follow any object in the scene, including all aspects of its transform data. The advantage of also being able to follow only certain aspects of this transform data is also extremely useful.

e.g: Following a 3rd Person camera, with X,Y,Z movement, but only following Rotation Y, allowing for slight tilt in the camera to make it seem more.

Image Added

  • Object Transform:
    Type: Transform | Default Setting: null
    The transform of the object you wish the camera rig to follow.

  • Follow Position:
    Type: Boolean | Default Setting: true
    Should the camera rig follow the ObjectTransform's position?

  • Follow Rotation:
    Type: Boolean | Default Setting: false
    Should the camera rig follow the ObjectTransform's rotation?

  • Follow Scale:
    Type: Boolean | Default Setting: false
    Should the camera rig follow the ObjectTransform's scale?

  • Position Vector:
    Type: Enum | Default Setting: XYZ
    This is what position axis the camera rig will follow. Other options are:
    • XYZ
    • X
    • Y
    • Z
    • XY
    • XZ
    • YZ
  • Rotation Vector:
    Type: Enum | Default Setting: XYZ
    This is what rotation axis the camera rig will follow. Other options are:
    • XYZ
    • X
    • Y
    • Z
    • XY
    • XZ
    • YZ

  • Scale Vector:
    Type: Enum | Default Setting: XYZ
    This is what scale axis the camera rig will follow. Other options are:
    • XYZ
    • X
    • Y
    • Z
    • XY
    • XZ
    • YZ
  • Position Offset:
    Type: Vector3 | Default Setting: 0,0,0
    Sometimes you will want to offset the position that the camera rig is following. This is usually when the camera rig is not high enough as it follows the pivot of an object, not it's center.
    This allows you to offset the position permanently.

Igloo Camera Controller

This is the main receiver of OSC messages for the camera system, and it also sends OSC messages directed to the Igloo software to update the status of the camera rig (it's 3D status, eye spacing values, etc)

It's not designed to be adjusted, as it's almost hard coded to work as a heartbeat messenger for our igloo servies.

Of course it could be expanded to include extra messages if required.

Image Added

  • Send Message Interval:
    Type: Float | Default Setting: 50
    The milleseconds interval between heartbeat messages getting sent.

  • Max Clip Distance:
    Type: Clamped Float | Default Setting: 1500
    Scales input value by maxClipDistance and Sets the far clip distance for all cameras in the Igloo Camera Array.

Igloo Save Controller

This saves the state of the igloo camera system into an XML format that is saved in the application's location folder.

It has a debug bool to Auto-Load the last saved status in the editor.

Image Added

  • Auto Load In Editor:
    Type: Boolean | Default Setting: false
    Load last created save, in Editor Mode.

Unwrap Camera Rig

This camera system is a little different to the 4,5,6 Camera system. Instead of sending n camera feeds, it sends a single canvas of 8000x1000 (or a specified size) over NDI or Spout.

90% of its variables are similar to the other camera rigs, so only the differences will be listed here.

Image Added

It creates:

  • 4 Cameras
  • Rotated at 90 degrees from eachother.
  • Emitting 1 stream of content at 8000 x 1000 resolution.

It contains the following components:

Igloo Unwrap Camera

This is the main camera creation C# script, and inherits the IglooCamera3D.cs script. Only the differences will be explained here.

Image Added

  • Num Walls:
    Type: Integer | Default Setting: 4
    The amount of cameras that will be created by this camera system, overwrites the Number of Cameras variable.

  • Spout Sender Left:
    Type: SpoutSenderShaderPass | Spout Sender Shader Pass Left
    This is a custom script that is given the render texture generated from the camera's combined Left views.

  • Spout Sender Right:
    Type: SpoutSenderShaderPass | Spout Sender Shader Pass Right
    This is a custom script that is given the render texture generated from the camera's combined Right views.

Spout Sender Shader Pass

This converts a render texture to an NDI or Spout and sends it. It also applies a fisheye effect to the entire texture by passing it through a custom shader via Blit.

Image Added

This is a set and forget system, the only occasional problem is the Unwrap material shader may become corrupt due to unity upgrading, in which case it will either need rebuilding or re-assigning to a material.

  • Cam Texture:
    Type: Render Texture | Default Setting: CylinderTextureLeftEye
    This is purely a placeholder, as the texture that gets sent will be constantly generated in memory and will never be a saved asset.

  • Unwrap Mat:
    Type: Material | CylindricalUnwrapMaterialLeft
    This is a custom script that is given the render texture generated from the camera's combined Left views.