diff options
author | 2025-02-12 21:21:29 -0500 | |
---|---|---|
committer | 2025-02-12 21:21:29 -0500 | |
commit | f71056b9b42174fbc2668bac5ca362bc459a8e28 (patch) | |
tree | 503db9f197213b00ba9f128838613d0a840ce0a7 | |
parent | 462399de435c01ad342fe95a1f741920cbe488b0 (diff) |
-rw-r--r-- | api/api.py | 15 | ||||
-rw-r--r-- | api/terrain.glb | bin | 0 -> 40097796 bytes | |||
-rw-r--r-- | src/assets/terrain.glb | bin | 39846888 -> 40097796 bytes | |||
-rw-r--r-- | src/components/ground.jsx | 9 |
4 files changed, 20 insertions, 4 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 diff --git a/src/assets/terrain.glb b/src/assets/terrain.glb Binary files differindex 4ffde3c..515ee50 100644 --- a/src/assets/terrain.glb +++ b/src/assets/terrain.glb diff --git a/src/components/ground.jsx b/src/components/ground.jsx index 9aced45..2426f2a 100644 --- a/src/components/ground.jsx +++ b/src/components/ground.jsx @@ -5,14 +5,15 @@ import { useGLTF } from '@react-three/drei'; import terrainModelURL from '../assets/terrain.glb'; export default function Ground() { - const meshRef = useRef(); - const { nodes } = useGLTF(terrainModelURL); - + const { nodes, materials } = useGLTF(terrainModelURL); return ( <RigidBody type='fixed' colliders="trimesh"> - <mesh ref={meshRef} position={[0, 0, 0]} rotation={[-Math.PI / 2, 0, 0]} geometry={nodes.Plane.geometry} name='ground'> + <mesh position={[0, 0, 0]} geometry={nodes.ground.geometry} name='ground'> <meshStandardMaterial color={everforest.yellow}/> </mesh> + <mesh geometry={nodes.pyramid.geometry} name='ground'> + <meshStandardMaterial color={everforest.bg2}/> + </mesh> </RigidBody> ); } |