diff --git a/backend/psn_server.py b/backend/psn_server.py
index 55e7b26..0fd1175 100644
--- a/backend/psn_server.py
+++ b/backend/psn_server.py
@@ -25,23 +25,26 @@ class TrackerData:
id: int
x: float
y: float
+ z: float
# Convert from internal coordinates to actual scene coordinates
# Internal representation is float values from 0 to 1 for x and y
# Thus we need to know the max size and aspect ratio of the scene
# x is the width of the scene, y is the depth, z is the height
- def pic_to_scene_coords(x, y):
+ def pic_to_scene_coords_3d(x, y, z) -> tuple[float, float, float]:
scene_width = 8.0
scene_depth = 6.3
- tracker_height = 0.8 + 1.5 # Scene height + height of person
+ scene_height = 0.8
+ person_height = 1.5
x_val = x * scene_width - (scene_width / 2)
y_val = y * scene_depth
- return x_val, y_val, tracker_height
+ z_val = scene_height + person_height
+ return x_val, y_val, z_val
def to_tracker(self):
tracker = psn.Tracker(self.id, f"Tracker {self.id}")
- x, y, z = self.pic_to_scene_coords(self.x, self.y)
+ x, y, z = self.pic_to_scene_coords_3d(self.x, self.y, self.z)
tracker.set_pos(psn.Float3(x, y, z))
return tracker
@@ -87,6 +90,7 @@ async def handle_websocket(request):
async for msg in ws:
if msg.type == web.WSMsgType.TEXT:
# Each message is a single tracker object
+ logging.debug(f"Received ws update: {msg.data}")
update_tracker(msg.data, request.app)
await update_all_clients(request.app, ws)
@@ -133,7 +137,9 @@ async def background_tasks(app: web.Application):
def filter_handler(address, *args) -> None:
- logging.debug(f"{address}: {args}")
+ tracker_id = int(address.split("/")[-1])
+ x, y, z = args
+ logging.debug(f"id: {tracker_id} | x: {x}, y: {y}, z: {z}")
async def receive_osc_data(app):
dispatcher = Dispatcher()
@@ -157,7 +163,7 @@ def create_app():
app["sock"] = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for i in range(NUM_TRACKERS):
- app["trackers"][i] = TrackerData(i, 0, 0)
+ app["trackers"][i] = TrackerData(i, 0, 0, 0)
app.on_shutdown.append(on_shutdown)
app.cleanup_ctx.append(background_tasks)
diff --git a/frontend/src/components/Container.svelte b/frontend/src/components/Container.svelte
index ec47afa..2d2054a 100644
--- a/frontend/src/components/Container.svelte
+++ b/frontend/src/components/Container.svelte
@@ -2,17 +2,19 @@
import { onMount } from "svelte";
import type { TrackerData } from "../utils/types";
import Drag from "./Drag.svelte";
+ import Slider from "./Slider.svelte";
let ws: WebSocket | null = $state(null);
let image: HTMLImageElement | null = $state(null);
let trackers: TrackerData[] = $state([
- { id: 1, x: 0, y: 0 },
- { id: 2, x: 0, y: 0 },
+ { id: 1, x: 0, y: 0, z: 0 },
+ { id: 2, x: 0, y: 0, z: 0 },
]);
let width = $state(0);
let height = $state(0);
+ let selected = $state(0);
let debounce: number | null = $state(null);
@@ -30,6 +32,7 @@
tracker.y *= height;
}
trackers = data;
+ console.log(trackers);
};
};
@@ -55,24 +58,30 @@
-
+