Class VirtualCameraDevice
A device used to control a virtual camera.
Inheritance
Inherited Members
Namespace: Unity.LiveCapture.VirtualCamera
Syntax
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. |
BufferSize
Gets or sets 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 |
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(Timecode, FrameRate).
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
Get the maximum size of the sample buffer, if limited.
Declaration
public int? MaxBufferSize { get; }
Property Value
Type | Description |
---|---|
Nullable<Int32> |
Implements
MinBufferSize
Get the minimum size of the sample buffer, if limited.
Declaration
public int? MinBufferSize { get; }
Property Value
Type | Description |
---|---|
Nullable<Int32> |
Implements
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 |
PresentationOffset
Apply this constant frame offset when invoking PresentAt(Timecode, FrameRate).
Declaration
public FrameTime PresentationOffset { get; set; }
Property Value
Type | Description |
---|---|
FrameTime |
Implements
Remarks
Set this to non-zero if the captured data's timecodes are "off" from the true values.
For example, if you determined that the samples and timecodes as mismatched such that
each sample lags its timecode by 2 frames, you would set this property to
new FrameTime(2)
.
Synchronizer
Gets or sets 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 Unity.LiveCapture.Synchronizer will automatically assign this property when you call Unity.LiveCapture.Synchronizer.AddDataSource(Unity.LiveCapture.ITimedDataSource).
Methods
GetAssetName()
Declaration
protected override string GetAssetName()
Returns
Type | Description |
---|---|
String |
Overrides
IsReady()
Declaration
public override bool IsReady()
Returns
Type | Description |
---|---|
Boolean |
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()
Declaration
protected override void OnClientAssigned()
Overrides
OnClientUnassigned()
Declaration
protected override void OnClientUnassigned()
Overrides
OnDisable()
Declaration
protected override void OnDisable()
Overrides
OnEnable()
Declaration
protected override void OnEnable()
Overrides
OnRecordingChanged()
Declaration
protected override void OnRecordingChanged()
Overrides
OnSlateChanged(ISlate)
Declaration
protected override void OnSlateChanged(ISlate slate)
Parameters
Type | Name | Description |
---|---|---|
ISlate | slate |
Overrides
OnValidate()
Declaration
protected virtual void OnValidate()
PresentAt(Timecode, FrameRate)
Set the currently active timecode for presentation.
Declaration
public TimedSampleStatus PresentAt(Timecode timecode, FrameRate frameRate)
Parameters
Type | Name | Description |
---|---|---|
Timecode | timecode | The timecode that we wish to present |
FrameRate | frameRate | The underlying framerate of the timecode value |
Returns
Type | Description |
---|---|
TimedSampleStatus | A status representing the ability of the source to present at the requested timecode. |
Implements
UpdateClient()
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 |