Skip to content

Vhi.PredictedHandSkeleton

VHI_godot

Vhi

PredictedHandSkeleton Class

The "predicted" hand - the model-output hand on the right of the scene.

Renders whatever its DOFs are commanded to, whenever they are commanded: each arrives on a stream of its own (vhi.prediction.index and its eight siblings, via LSLCommunicationController) and is applied on arrival, so a producer driving one finger moves one finger and the rest hold. When EnableSmoothing is on, the rig is spherically interpolated (Slerp) toward the commanded pose at SmoothingSpeed instead of snapping - smoother on the eye, but with a small latency cost.

The "right hand" appearance is achieved by a mirrored root transform on the node; both this node and the control hand instance the same left-hand FBX. The current pose is published to the VHI_Predict LSL outlet at 60 Hz.

public class PredictedHandSkeleton : Vhi.HandSkeleton

Inheritance System.Object → Godot.GodotObject → Godot.Node → Godot.Node3D → HandSkeleton → PredictedHandSkeleton

Fields

PredictedHandSkeleton.EnableSmoothing Field

Spherically interpolate (Slerp) toward each incoming pose at SmoothingSpeed instead of snapping. Smoother on the eye, slight latency cost. Toggle live via the control panel or the gRPC SetSmoothing RPC.

public bool EnableSmoothing;

Field Value

System.Boolean

PredictedHandSkeleton.SmoothingSpeed Field

Interpolation speed when EnableSmoothing is on. Higher is snappier. Ignored when smoothing is off.

public float SmoothingSpeed;

Field Value

System.Single

Methods

PredictedHandSkeleton.AnimatedJointDegrees() Method

Signed rotation in degrees of every joint any channel drives, read back off the skeleton so a caller can see what actually moved rather than what was asked for.

public System.Collections.Generic.Dictionary<int,Godot.Vector3> AnimatedJointDegrees();

Returns

System.Collections.Generic.Dictionary<System.Int32,Godot.Vector3>

PredictedHandSkeleton.JointsMovableOnAxis(int, int) Method

The joints a channel can actually move on one axis: those whose gain on that axis is non-zero.

public int[] JointsMovableOnAxis(int channel, int axisIndex);

Parameters

channel System.Int32

A pose channel, 0-8.

axisIndex System.Int32

0 for X, 2 for Z — an index into the gain triple.

Returns

System.Int32[]

Remarks

Not the same as every joint the channel drives, and the difference is real. Thumb abduction drives all three thumb bones through channel 1, but the distal one has a Z gain of 0 — so only two of them can move, and an expectation built from the channel alone would report a correct sweep as a mismatch.

PredictedHandSkeleton.SetSmoothing(bool, float) Method

Programmatic smoothing control. Used by the UI panel and the gRPC control service. A non-positive smoothingSpeed leaves the speed unchanged.

public void SetSmoothing(bool enabled, float smoothingSpeed);

Parameters

enabled System.Boolean

true to spherically interpolate (Slerp) toward each incoming sample; false to snap to it.

smoothingSpeed System.Single

Interpolation speed when smoothing is on. Higher is snappier. Values \<= 0 leave the current speed unchanged.

delta System.Double

delta System.Double