diff options
Diffstat (limited to 'api/api.py')
-rw-r--r-- | api/api.py | 15 |
1 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'] |