aboutsummaryrefslogtreecommitdiff
path: root/api/api.py
diff options
context:
space:
mode:
Diffstat (limited to 'api/api.py')
-rw-r--r--api/api.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/api/api.py b/api/api.py
index 3b74bfc..eb27f27 100644
--- a/api/api.py
+++ b/api/api.py
@@ -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']