Add tips to OriginHands and interpolation
This commit is contained in:
parent
8b932e3a3c
commit
f56398230a
|
@ -6,6 +6,7 @@ extends Node3D
|
|||
@export var skeleton : Skeleton3D
|
||||
@export var ex_map : RigMap
|
||||
@export var rig_settings : RigSettings
|
||||
@export var use_interpolation : bool = true
|
||||
|
||||
var wrist_pos : Vector3
|
||||
var transform_offset : Transform3D = Transform3D.IDENTITY
|
||||
|
@ -34,6 +35,10 @@ func _process(_delta):
|
|||
return
|
||||
|
||||
var frame : UltraleapFrame = tracking.get_last_frame()
|
||||
if use_interpolation:
|
||||
var interpolated_frame : UltraleapFrame = tracking.get_interpolated_frame(Time.get_ticks_usec())
|
||||
if interpolated_frame != null:
|
||||
frame = interpolated_frame
|
||||
|
||||
if handedness == UltraleapTypes.Chirality.Left:
|
||||
if frame.is_left_hand_visible:
|
||||
|
|
|
@ -2,6 +2,7 @@ extends Node3D
|
|||
class_name OriginHands
|
||||
|
||||
@export var tracking : UltraleapDeviceNode
|
||||
@export var use_interpolation : bool = true
|
||||
|
||||
var gizmos : Array[Node3D] = []
|
||||
var dry_run : bool = false
|
||||
|
@ -24,7 +25,16 @@ func _ready():
|
|||
gizmos.append(instance)
|
||||
|
||||
func _process(_delta):
|
||||
var n : int = set_hand(tracking.get_last_frame().left_hand, 0)
|
||||
var n : int = 0
|
||||
|
||||
if use_interpolation:
|
||||
var interpolated_frame : UltraleapFrame = tracking.get_interpolated_frame(Time.get_ticks_usec())
|
||||
if interpolated_frame != null:
|
||||
n = set_hand(interpolated_frame.left_hand, n)
|
||||
n = set_hand(interpolated_frame.right_hand, n)
|
||||
return
|
||||
|
||||
n = set_hand(tracking.get_last_frame().left_hand, n)
|
||||
n = set_hand(tracking.get_last_frame().right_hand, n)
|
||||
|
||||
func set_hand(hand : UltraleapHand, index : int) -> int:
|
||||
|
@ -45,6 +55,7 @@ func set_finger(finger_name : String, hand : UltraleapHand, index : int) -> int:
|
|||
index = set_bone("proximal", finger, index)
|
||||
index = set_bone("intermediate", finger, index)
|
||||
index = set_bone("distal", finger, index)
|
||||
index = set_tip(finger, index)
|
||||
|
||||
return index
|
||||
|
||||
|
@ -60,6 +71,18 @@ func set_bone(bone_name : String, finger : UltraleapDigit, index : int):
|
|||
gizmos[index].global_transform = bone_transform
|
||||
return index + 1
|
||||
|
||||
func set_tip(finger : UltraleapDigit, index : int) -> int:
|
||||
if dry_run:
|
||||
return index + 1
|
||||
|
||||
var tip_transform : Transform3D = tracking.global_transform * Transform3D(
|
||||
Basis(finger.get("distal").rotation),
|
||||
finger.get("distal").next_joint
|
||||
)
|
||||
|
||||
gizmos[index].global_transform = tip_transform
|
||||
return index + 1
|
||||
|
||||
func set_arm(hand : UltraleapHand, index : int) -> int:
|
||||
if dry_run:
|
||||
return index + 2
|
||||
|
|
Loading…
Reference in New Issue