Class FaceDevice
A device used to control face animation capture and playback.
Inherited Members
Namespace: Unity.LiveCapture.ARKitFaceCapture
Syntax
[ExcludeFromPreset]
[CreateDeviceMenuItem("ARKit Face Device", 0)]
[AddComponentMenu("Live Capture/ARKit Face Capture/ARKit Face Device")]
[HelpURL("https://docs.unity3d.com/Packages/com.unity.live-capture@3.0/manual/ref-component-arkit-face-device.html")]
public class FaceDevice : CompanionAppDevice<IFaceClient>, ICompanionAppDevice, ITimedDataSource, IRegistrable
Remarks
The face capture data is in the format of Apple's ARKit face tracking.
Properties
Actor
Gets the FaceActor currently assigned to this device.
Declaration
public FaceActor Actor { get; set; }
Property Value
Type | Description |
---|---|
FaceActor | 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
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(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
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
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
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.
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 |