diff options
author | 2025-02-12 21:21:29 -0500 | |
---|---|---|
committer | 2025-02-12 21:21:29 -0500 | |
commit | f71056b9b42174fbc2668bac5ca362bc459a8e28 (patch) | |
tree | 503db9f197213b00ba9f128838613d0a840ce0a7 /api | |
parent | 462399de435c01ad342fe95a1f741920cbe488b0 (diff) |
Diffstat (limited to 'api')
-rw-r--r-- | api/api.py | 15 | ||||
-rw-r--r-- | api/terrain.glb | bin | 0 -> 40097796 bytes |
2 files changed, 15 insertions, 0 deletions
@@ -4,8 +4,11 @@ from uuid import uuid4 import sqlite3 import numbers from flask import g +import open3d +import numpy DATABASE = './forum.db' +TERRAIN_MODEL = './terrain.glb' def get_db(): db = getattr(g, '__database', None) @@ -15,6 +18,13 @@ def get_db(): app = Flask(__name__) +terrain_mesh = open3d.io.read_triangle_mesh('./terrain.glb') +terrain_mesh = open3d.t.geometry.TriangleMesh.from_legacy(terrain_mesh) +print('loaded terrain mesh') +scene = open3d.t.geometry.RaycastingScene() +_ = scene.add_triangles(terrain_mesh) +print('created raycasting scene') + @app.teardown_appcontext def close_connection(_): db = getattr(g, '__database', None) @@ -41,6 +51,11 @@ def new_message(): for elem in position: if not isinstance(elem, numbers.Number): return Response(status=HTTPStatus.BAD_REQUEST) + query_point = open3d.core.Tensor([position], dtype=open3d.core.Dtype.Float32) + unsigned_distance = scene.compute_distance(query_point) + print(unsigned_distance) + if unsigned_distance > 0.25: + return Response(status=HTTPStatus.BAD_REQUEST) position = json.dumps(position) message = str(request.form['message']) token = request.form['token'] diff --git a/api/terrain.glb b/api/terrain.glb Binary files differnew file mode 100644 index 0000000..515ee50 --- /dev/null +++ b/api/terrain.glb |