Class MocapDevice<T>
A type of LiveCaptureDevice that provides the common functionality required to implement support for third-party motion capture devices.
Inherited Members
Namespace: Unity.LiveCapture.Mocap
Syntax
public abstract class MocapDevice<T> : LiveCaptureDevice, ITimedDataSource, IRegistrable, IMocapDevice
Type Parameters
Name | Description |
---|---|
T | The type of data the device uses each frame to pose the actor. |
Properties
Animator
The Animator component this device operates.
Declaration
public Animator Animator { get; set; }
Property Value
Type | Description |
---|---|
Animator |
BufferSize
Gets or sets the current buffer size.
Declaration
public int BufferSize { get; set; }
Property Value
Type | Description |
---|---|
Int32 |
Implements
FrameRate
The number of data samples per second.
Declaration
public FrameRate FrameRate { get; }
Property Value
Type | Description |
---|---|
FrameRate |
Implements
FriendlyName
Get a human-readable name for the instance.
Declaration
public string FriendlyName { get; protected set; }
Property Value
Type | Description |
---|---|
String |
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(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.
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
PresentationOffset
The offset in frames applied when invoking PresentAt(Timecode, FrameRate).
Declaration
public FrameTime PresentationOffset { get; set; }
Property Value
Type | Description |
---|---|
FrameTime |
Implements
Remarks
The frame duration corresponds to the FrameRate of this source.
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 synchronizer implementation automatically assigns this property when you call AddDataSource(ITimedDataSource).
Methods
AddFrame(T, Timecode, FrameRate)
Adds a new frame of data to the process queue.
Declaration
protected void AddFrame(T frame, Timecode timecode, FrameRate frameRate)
Parameters
Type | Name | Description |
---|---|---|
T | frame | The frame to add. |
Timecode | timecode | The timecode of the frame. |
FrameRate | frameRate | The frame rate the timecode runs into. |
IsRecording()
Checks if the device has started recording.
Declaration
public sealed override bool IsRecording()
Returns
Type | Description |
---|---|
Boolean | true if the recording has started; 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.
OnDestroy()
The device calls this method when the device is about to get destroyed.
Declaration
protected override void OnDestroy()
Overrides
Remarks
If you override this method, call the base method in your implementation.
OnDisable()
This function is called when the behaviour becomes disabled.
Declaration
protected virtual void OnDisable()
OnEnable()
This function is called when the object becomes enabled and active.
Declaration
protected virtual void OnEnable()
OnRecordingChanged()
The device calls this method when the recording state changes.
Declaration
protected virtual void OnRecordingChanged()
OnValidate()
Editor-only function that Unity calls when the script is loaded or a value changes in the Inspector.
Declaration
public virtual void OnValidate()
Remarks
You would usually use this to perform an action after a value changes in the Inspector; for example, making sure that data stays within a certain range.
Present(Transform, Nullable<Vector3>, Nullable<Quaternion>, Nullable<Vector3>)
Sets the position, rotation and scale of a specified transform.
Declaration
protected void Present(Transform transform, Vector3? position, Quaternion? rotation, Vector3? scale)
Parameters
Type | Name | Description |
---|---|---|
Transform | transform | The transform to present the values to. |
Nullable<Vector3> | position | The position to set. |
Nullable<Quaternion> | rotation | The rotation to set. |
Nullable<Vector3> | scale | The scale to set. |
Remarks
The values are not immediately applied and might change due to other devices operating the same transform.
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
ProcessFrame(T)
Override this method to process the specified frame.
Declaration
protected abstract void ProcessFrame(T frame)
Parameters
Type | Name | Description |
---|---|---|
T | frame | The frame to add. |
RegisterLiveProperties()
Registers the animated transforms to prevent Unity from marking Prefabs or the Scene as modified when you preview animations.
Declaration
public void RegisterLiveProperties()
ResetSyncBuffer()
Invalidates the synchronization frame buffer by clearing any queued frame.
Declaration
protected void ResetSyncBuffer()
RestoreLiveProperties()
Restores the transforms previously registered.
Declaration
public void RestoreLiveProperties()
StartRecording()
Starts a new recording.
Declaration
public sealed override void StartRecording()
Overrides
StopRecording()
Stops the current recording.
Declaration
public sealed override void StopRecording()
Overrides
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. The sample times are returned without the PresentationOffset applied.
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. |