Class VolumeCamera
Specifies the portion of the scene to render in a volume window. A volume window is similar to a standard computer window with the addition of a third dimension. Every volume camera has an associated volume window.
Inherited Members
Namespace: Unity.PolySpatial
Assembly: Unity.PolySpatial.dll
Syntax
[Icon("Camera Gizmo")]
[DisallowMultipleComponent]
public class VolumeCamera : MonoBehaviour
Remarks
In bounded mode, a "volume camera" captures content within an oriented bounding box (OBB) and transforms this content to a "canonical volume," similar to the canonical view volume of a regular camera: a unit box centered at the origin. Typically, this content is then displayed on a host by a corresponding "volume renderer", by mapping this canonical volume out to the host volume renderer's own, distinct OBB. The effect is that 3D content within the volume camera's bounds is transformed, rotated, stretched and/or squashed to fill the volume renderer's bounds.
In unbounded mode, everything works similar, except that the volume camera and volume renderer each define an unbounded 3-space rather than a bounded 3-space volume.
In metal mode, most of the properties of the VolumeCamera are not used. Instead, the scene is rendered by the main scene camera (in stereo).
You can only have one volume camera in unbounded or metal mode at the same time. You can have multiple bounded volume cameras in addition to a volume camera in unbounded or metal mode.
Fields
OpenWindowOnLoad
If true, a window is automatically opened for this volume camera when loaded. If false, the window must be opened manually via OpenWindow().
Declaration
[Tooltip("If true, a window is automatically opened for this volume camera when loaded. If false, the window must be opened manually via OpenWindow().")]
public bool OpenWindowOnLoad
Field Value
Type | Description |
---|---|
bool |
ViewpointChanged
An event that is triggered when the user changes position, with respect to the volume's position. Granularity is limited to the 4 sides of the volume - left, right, forward, and back. The event is only triggered when the user is facing the volume.
Declaration
[Tooltip("An event that is triggered when the user's viewpoint of the volume changes.")]
public UnityEvent<VolumeCamera.Viewpoint> ViewpointChanged
Field Value
Type | Description |
---|---|
UnityEvent<VolumeCamera.Viewpoint> |
WindowStateChanged
An event that is triggered when this volume camera's window changes state. Changing states can mean window actions such as the window opening or the window becoming unfocused.
Declaration
[Tooltip("An event that is triggered when this volume camera's window changes state.")]
public UnityEvent<VolumeCamera, VolumeCamera.WindowState> WindowStateChanged
Field Value
Type | Description |
---|---|
UnityEvent<VolumeCamera, VolumeCamera.WindowState> |
Properties
CullingMask
Only objects in the selected layers will be visible inside this Volume Camera.
Declaration
public LayerMask CullingMask { get; set; }
Property Value
Type | Description |
---|---|
LayerMask |
Dimensions
Defines the (unscaled) size of the camera's bounding box. The box is centered at the position of the VolumeCamera’s transform.
Declaration
public Vector3 Dimensions { get; set; }
Property Value
Type | Description |
---|---|
Vector3 |
Remarks
The effective, world space dimensions of the bounding box are calculated by multiplying the Dimensions by the transform's scale.
When you set the volume camera Mode to Bounded, the camera only displays GameObjects within the scaled bounding box. A bounding box is not used when you set the Mode to Unbounded.
OutputDimensions
The dimensions in meters of the actual output size of the volume camera. May be different than Dimensions, in which case the space described by Dimensions is scaled to fit the OutputDimensions.
Declaration
public Vector3 OutputDimensions { get; }
Property Value
Type | Description |
---|---|
Vector3 |
ScaleWithWindow
Determines whether content scales with the volume's output dimensions. Ignored if the volume camera is displayed in an Unbounded output.
Declaration
public bool ScaleWithWindow { get; set; }
Property Value
Type | Description |
---|---|
bool |
Remarks
This toggle controls whether content will scale to fit within the volume. If false, objects will not scale with the output window. If this should result in an object larger than the volume's output dimensions, it will be subject to GPU clipping as normal.
VolumeSpaceToWorldSpaceMatrix
A matrix that translates from the unit cube at origin canonical volume space back into the world space of the volume camera.
Declaration
public Matrix4x4 VolumeSpaceToWorldSpaceMatrix { get; }
Property Value
Type | Description |
---|---|
Matrix4x4 |
WindowConfiguration
The output Volume Camera Window Configuration object for this volume camera, or None for default. Create new volume camera configurations via the Asset Create menu.
Declaration
public VolumeCameraWindowConfiguration WindowConfiguration { get; set; }
Property Value
Type | Description |
---|---|
VolumeCameraWindowConfiguration |
WindowFocused
Returns true if a window that is showing the contents of this volume camera is focused.
Declaration
public bool WindowFocused { get; }
Property Value
Type | Description |
---|---|
bool |
WindowMode
The mode this volume camera will display its content in, Bounded or Unbounded.
Declaration
public VolumeCamera.PolySpatialVolumeCameraMode WindowMode { get; }
Property Value
Type | Description |
---|---|
VolumeCamera.PolySpatialVolumeCameraMode |
WindowOpen
Returns true if a window is open and showing the contents of this volume camera.
Declaration
public bool WindowOpen { get; }
Property Value
Type | Description |
---|---|
bool |
WorldSpaceToVolumeSpaceMatrix
A matrix that translates from world space into the unit cube at origin canonical volume space.
Declaration
public Matrix4x4 WorldSpaceToVolumeSpaceMatrix { get; }
Property Value
Type | Description |
---|---|
Matrix4x4 |
Methods
CloseWindow()
Request that the OS close the window that is showing the contents of this volume camera. Does nothing if the window is not open.
Declaration
public void CloseWindow()
OpenWindow()
Request that a window is opened to show the contents of this volume camera. Does nothing if the window is already open.
Declaration
public void OpenWindow()
Events
ImmersionChanged
Called when the user interacts with the crown dial to change the immersion amount of an Unbounded VolumeCamera when the MR ImmersionStyle is set to Progressive. The values indicate the old and new immersion states, both with an initial value of 0.55 before the user interacts with the dial. If a parameter is null, then immersion is disabled.
Declaration
public static event Action<double?, double?> ImmersionChanged
Event Type
Type | Description |
---|---|
Action<double?, double?> |