add demo scene and receiver proxies

This commit is contained in:
Hartmut Seichter 2025-07-01 09:20:29 +02:00
parent f648077fff
commit 6e3a2b75e6
4 changed files with 39 additions and 11 deletions

View file

@ -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

View file

@ -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")

View file

@ -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"

View file

@ -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)