Class VirtualCameraDevice
A device used to control a virtual camera.
Inheritance
Inherited Members
Namespace: Unity.LiveCapture.VirtualCamera
Syntax
[AddComponentMenu("")]
[RequireComponent(typeof(FocusPlaneRenderer))]
[CreateDeviceMenuItem("Virtual Camera Device", 0)]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.live-capture@4.0/manual/ref-component-virtual-camera-device.html")]
[DisallowMultipleComponent]
public class VirtualCameraDevice : CompanionAppDevice<IVirtualCameraClient>, ICompanionAppDevice, ITimedDataSource, IRegistrable
Remarks
The virtual camera mimics the experience of using a real camera in a Unity scene. The connected client can control most of the state, such as the camera pose and lens settings, but other features like autofocus need to be computed in the editor as it needs to query the scene. The render from the virtual camera in the editor can be streamed to the client to give visual feedback of the camera state, similar to a camera viewfinder. A VirtualCameraActor and a IVirtualCameraClient must be assigned before the device is useful. The actor is needed to store live or evaluated playback state and affect the scene.
Properties
Actor
Gets the VirtualCameraActor currently assigned to this device.
Declaration
public VirtualCameraActor Actor { get; set; }
Property Value
| Type | Description |
|---|---|
| VirtualCameraActor | The assigned actor, or null if none is assigned. |
AnchorEnabled
Enables or disables anchoring.
Declaration
public bool AnchorEnabled { get; set; }
Property Value
| Type | Description |
|---|---|
| Boolean |
AnchorSettings
The AnchorSettings of the current device.
Declaration
public AnchorSettings AnchorSettings { get; set; }
Property Value
| Type | Description |
|---|---|
| AnchorSettings |
AnchorTarget
The target to anchor to.
Declaration
public Transform AnchorTarget { get; set; }
Property Value
| Type | Description |
|---|---|
| Transform |
BufferSize
The current buffer size.
Declaration
public int BufferSize { get; set; }
Property Value
| Type | Description |
|---|---|
| Int32 |
Implements
CameraBody
The CameraBody of the current device.
Declaration
public CameraBody CameraBody { get; }
Property Value
| Type | Description |
|---|---|
| CameraBody |
FrameRate
The number of data samples per second.
Declaration
public FrameRate FrameRate { get; }
Property Value
| Type | Description |
|---|---|
| FrameRate |
Implements
Id
Get the unique identifier for this instance.
Declaration
public string Id { get; }
Property Value
| Type | Description |
|---|---|
| String |
Implements
Remarks
The ID should not be null or empty, and is expected to remain constant for the life of the instance.
IsSynchronized
Signal to the data source whether it is being synchronized via PresentAt(FrameTimeWithRate).
Declaration
public bool IsSynchronized { get; set; }
Property Value
| Type | Description |
|---|---|
| Boolean |
Implements
Remarks
When true, the data source should disable its own update mechanism.
Lens
The Lens of the current device.
Declaration
public Lens Lens { get; set; }
Property Value
| Type | Description |
|---|---|
| Lens |
LensAsset
The LensAsset of the current device.
Declaration
public LensAsset LensAsset { get; set; }
Property Value
| Type | Description |
|---|---|
| LensAsset |
LensIntrinsics
The LensIntrinsics of the current device.
Declaration
public LensIntrinsics LensIntrinsics { get; }
Property Value
| Type | Description |
|---|---|
| LensIntrinsics |
MaxBufferSize
The maximum size of the sample buffer, if limited.
Declaration
public int? MaxBufferSize { get; }
Property Value
| Type | Description |
|---|---|
| Nullable<Int32> |
Implements
MinBufferSize
The minimum size of the sample buffer, if limited.
Declaration
public int? MinBufferSize { get; }
Property Value
| Type | Description |
|---|---|
| Nullable<Int32> |
Implements
Offset
The time offset applied to sample timecodes, in frames.
Declaration
public FrameTime Offset { get; set; }
Property Value
| Type | Description |
|---|---|
| FrameTime |
Implements
Remarks
The frame duration corresponds to the FrameRate of this source. This value should typically match the time delay between timecode generation and data sampling.
Origin
The position and rotation of the world's origin.
Declaration
public Pose Origin { get; }
Property Value
| Type | Description |
|---|---|
| Pose |
Pose
The position and rotation of the current device in world coordinates.
Declaration
public Pose Pose { get; }
Property Value
| Type | Description |
|---|---|
| Pose |
Synchronizer
The ISynchronizer controlling this source.
Declaration
public ISynchronizer Synchronizer { get; set; }
Property Value
| Type | Description |
|---|---|
| ISynchronizer |
Implements
Remarks
In most cases you can simply implement this as an auto-property. The default synchronizer implementation automatically assigns this property when you call AddDataSource(ITimedDataSource).
Methods
GetAssetName()
Gets the name used for the take asset name.
Declaration
protected override string GetAssetName()
Returns
| Type | Description |
|---|---|
| String | The name of the asset. |
Overrides
IsReady()
Indicates whether a device is ready for recording.
Declaration
public override bool IsReady()
Returns
| Type | Description |
|---|---|
| Boolean | true if ready for recording; otherwise, false. |
Overrides
LiveUpdate()
Override this method to update the device during live mode.
Declaration
public override void LiveUpdate()
Overrides
Remarks
This method is called after the animation system execution and before the script's LateUpdate.
OnClientAssigned()
The device calls this method when a new client is assigned.
Declaration
protected override void OnClientAssigned()
Overrides
OnClientUnassigned()
The device calls this method when the client is unassigned.
Declaration
protected override void OnClientUnassigned()
Overrides
OnDisable()
This function is called when the behaviour becomes disabled.
Declaration
protected override void OnDisable()
Overrides
OnEnable()
This function is called when the object becomes enabled and active.
Declaration
protected override void OnEnable()
Overrides
OnRecordingChanged()
The device calls this method when the recording state has changed.
Declaration
protected override void OnRecordingChanged()
Overrides
OnRegisterLiveProperties(IPropertyPreviewer)
The device calls this method when a live performance starts and properties are about to change.
Declaration
protected override void OnRegisterLiveProperties(IPropertyPreviewer previewer)
Parameters
| Type | Name | Description |
|---|---|---|
| IPropertyPreviewer | previewer | The IPropertyPreviewer to use to register live properties. |
Overrides
OnShotChanged(IShot)
The device calls this method when the shot has changed.
Declaration
protected override void OnShotChanged(IShot shot)
Parameters
| Type | Name | Description |
|---|---|---|
| IShot | shot | The IShot that changed. |
Overrides
OnValidate()
Declaration
protected virtual void OnValidate()
PresentAt(FrameTimeWithRate)
Applies the data for a given timecode to the scene.
Declaration
public TimedSampleStatus PresentAt(FrameTimeWithRate presentTime)
Parameters
| Type | Name | Description |
|---|---|---|
| FrameTimeWithRate | presentTime | The timecode to present. |
Returns
| Type | Description |
|---|---|
| TimedSampleStatus | A status representing the ability of the source to present at the requested timecode. |
Implements
TryGetBufferRange(out FrameTime, out FrameTime)
Gets the frame time of the newest and oldest samples buffered by the data source.
Declaration
public bool TryGetBufferRange(out FrameTime oldestSample, out FrameTime newestSample)
Parameters
| Type | Name | Description |
|---|---|---|
| FrameTime | oldestSample | The frame time of the oldest buffered sample, or langword_csharp_default if there are no buffered samples. |
| FrameTime | newestSample | The frame time of the newest buffered sample, or langword_csharp_default if there are no buffered samples. |
Returns
| Type | Description |
|---|---|
| Boolean |
Implements
Remarks
The frame duration corresponds to the FrameRate of this source.
UpdateClient()
Called to send the device state to the client.
Declaration
public override void UpdateClient()
Overrides
UpdateDevice()
Updates the internal state of the device.
Declaration
public override void UpdateDevice()
Overrides
Write(ITakeBuilder)
Stores the recording into a take using a ITakeBuilder.
Declaration
public override void Write(ITakeBuilder takeBuilder)
Parameters
| Type | Name | Description |
|---|---|---|
| ITakeBuilder | takeBuilder | The take builder object. |
Overrides
Explicit Interface Implementations
IRegistrable.FriendlyName
Get a human-readable name for the instance.
Declaration
string IRegistrable.FriendlyName { get; }
Returns
| Type | Description |
|---|---|
| String |
Implements
ITimedDataSource.UndoTarget
The object to record to the undo stack when the user modifies the properties of this data source.
Declaration
Object ITimedDataSource.UndoTarget { get; }
Returns
| Type | Description |
|---|---|
| Object |
Implements
Remarks
To enable undo when using the synchronization windows, this must be the object that stores the serialized state for this data source. When null, this data source will not support undo operations.