diff --git a/demo/scripts/CubeApplication.gd b/demo/scripts/CubeApplication.gd index 12593f4..9e8cdaa 100644 --- a/demo/scripts/CubeApplication.gd +++ b/demo/scripts/CubeApplication.gd @@ -4,16 +4,14 @@ extends Node3D @export var rigged_hands : Node3D @export var spawner : CubeSpawner @export var cube_material : PhysicsMaterial -@export var xr : bool = true var xr_interface: XRInterface func _ready(): - if not xr: + if not ProjectSettings.get_setting_with_override("xr/openxr/enabled"): var player : Resource = load("res://scenes/Players/Player.tscn") var player_node : Node3D = player.instantiate() add_child(player_node) - return xr_interface = XRServer.find_interface("OpenXR") if xr_interface and xr_interface.is_initialized(): diff --git a/demo/scripts/OriginHands.gd b/demo/scripts/OriginHands.gd index a6b3865..d942ff9 100644 --- a/demo/scripts/OriginHands.gd +++ b/demo/scripts/OriginHands.gd @@ -3,11 +3,11 @@ class_name OriginHands @export var tracking : UltraleapDeviceNode -var gizmos : Array = [] +var gizmos : Array[Node3D] = [] var dry_run : bool = false func _ready(): - var scene = preload("res://models/Origin.tscn") + var scene : PackedScene = preload("res://models/Origin.tscn") dry_run = true var n : int = set_hand(tracking.get_last_frame().left_hand, 0) @@ -17,7 +17,7 @@ func _ready(): print(str(n) + " bones") for i in range(n): - var instance = scene.instantiate(PackedScene.GEN_EDIT_STATE_INSTANCE) + var instance : Node3D = scene.instantiate() add_child(instance) instance.owner = self instance.name = "Joint" + str(i) @@ -51,20 +51,32 @@ func set_finger(finger_name : String, hand : UltraleapHand, index : int) -> int: func set_bone(bone_name : String, finger : UltraleapDigit, index : int): if dry_run: return index + 1 + + var bone_transform : Transform3D = tracking.global_transform * Transform3D( + Basis(finger.get(bone_name).rotation), + finger.get(bone_name).prev_joint + ) - gizmos[index].position = finger.get(bone_name).prev_joint - gizmos[index].rotation = finger.get(bone_name).rotation.get_euler() + gizmos[index].global_transform = bone_transform return index + 1 func set_arm(hand : UltraleapHand, index : int) -> int: if dry_run: return index + 2 - + var arm : UltraleapBone = hand.arm - gizmos[index].position = arm.prev_joint - gizmos[index].rotation = arm.rotation.get_euler() - - gizmos[index + 1].position = arm.next_joint - gizmos[index + 1].rotation = arm.rotation.get_euler() + + var wrist_transform : Transform3D = tracking.global_transform * Transform3D( + Basis(arm.rotation), + arm.prev_joint + ) + + var elbow_transform : Transform3D = tracking.global_transform * Transform3D( + Basis(arm.rotation), + arm.next_joint + ) + + gizmos[index].global_transform = elbow_transform + gizmos[index + 1].global_transform = wrist_transform return index + 2