diff --git a/Notes.md b/Notes.md index a90c629..8ebb0d3 100644 --- a/Notes.md +++ b/Notes.md @@ -2,7 +2,6 @@ - [vrpn-rs description of VRPN protocol](https://github.com/vrpn/vrpn-rs/blob/main/Protocol.md) - # Design Allow for a session based design - data needs to be collected per block @@ -12,7 +11,9 @@ and immediatly made available. Minimal or no internal state keeping! - register listeners in session - listeners inject captured data with signals - - keep naming "classic" ??? ... above session is a tracker with a sender with sensors +# Internal Notes + +- Graphics Interaction Lab OptiTrack system is at 212.201.64.122 diff --git a/Root.tscn b/Root.tscn index f82e587..731b301 100644 --- a/Root.tscn +++ b/Root.tscn @@ -1,16 +1,37 @@ -[gd_scene load_steps=3 format=3 uid="uid://bj5ykdjle10tt"] +[gd_scene load_steps=5 format=3 uid="uid://bj5ykdjle10tt"] [ext_resource type="Script" uid="uid://dmq3i7qmo1qe0" path="res://VRPN.gd" id="2_24d08"] [ext_resource type="Script" uid="uid://dpj1wrvfsiq4v" path="res://VRPN_Receiver.gd" id="2_170dk"] +[sub_resource type="BoxMesh" id="BoxMesh_24d08"] +size = Vector3(0.1, 0.1, 0.1) + +[sub_resource type="PlaneMesh" id="PlaneMesh_24d08"] + [node name="Node3D" type="Node3D"] -[node name="VRPN" type="Node3D" parent="." node_paths=PackedStringArray("tracker_receivers")] +[node name="Camera3D" type="Camera3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.663209, 1.65503) + +[node name="DirectionalLight3D" type="DirectionalLight3D" parent="."] +transform = Transform3D(0.789213, -0.342763, 0.509566, 0, 0.829749, 0.558136, -0.61412, -0.440488, 0.654849, 0, 0.631436, 0) +shadow_enabled = true + +[node name="Root" type="Node3D" parent="."] + +[node name="VRPN" type="Node3D" parent="Root" node_paths=PackedStringArray("tracker_receivers")] script = ExtResource("2_24d08") tracker_receivers = [NodePath("RB1")] vrpn_server = "212.201.64.122" -[node name="RB1" type="Node3D" parent="VRPN"] +[node name="RB1" type="Node3D" parent="Root/VRPN"] script = ExtResource("2_170dk") +tracker_name = "RB1" -[node name="RB2" type="Node3D" parent="VRPN"] +[node name="MeshInstance3D" type="MeshInstance3D" parent="Root/VRPN/RB1"] +mesh = SubResource("BoxMesh_24d08") + +[node name="RB2" type="Node3D" parent="Root/VRPN"] + +[node name="Floor" type="MeshInstance3D" parent="Root"] +mesh = SubResource("PlaneMesh_24d08") diff --git a/VRPN.gd b/VRPN.gd index c26000d..99f446c 100644 --- a/VRPN.gd +++ b/VRPN.gd @@ -20,9 +20,6 @@ signal error @export var tracker_receivers : Array[VRPN_Receiver] = [] - -# Graphics Interaction Lab OptiTrack system @212.201.64.122 - @onready var _stream: StreamPeerTCP = StreamPeerTCP.new() @export var vrpn_server : String = "127.0.0.1" diff --git a/VRPN_Receiver.gd b/VRPN_Receiver.gd index 2405e7a..f3ff925 100644 --- a/VRPN_Receiver.gd +++ b/VRPN_Receiver.gd @@ -2,8 +2,17 @@ extends Node3D class_name VRPN_Receiver -@export var sensor : String = "Tracker0" +@export var tracker_name : String = "Tracker0" +@export var tracker_sensor : int = 0 func _on_pos_quat(tracker_data : Dictionary): - print(tracker_data) + + if tracker_data['tracker'] == tracker_name and tracker_data['sensor'] == tracker_sensor: + + + self.global_position = tracker_data['position'] + # okay, Godot transformation stack is weird! Why would anybody expose + self.global_rotation = tracker_data['rotation'].get_euler() + + print(tracker_data)