3. js - получить высоту ландшафта (position.y) меня sh при указанном c position.x, z - без мыши и raycaster? - PullRequest
0 голосов
/ 04 августа 2020

Допустим, у меня есть своего рода довольно простой ландшафт из Blender, экспортированный как объект GLB, который является группой и содержит Me sh с BufferGeometry. У меня есть еще один объект GLB, который представляет собой модель автомобиля. Как я могу прочитать правильное положение position.y в определенных c x, z местах (в идеале 4 места для установки положения и поворота автомобиля) без перемещения мыши и использования raycaster? Мне нужно знать, что такое высота и высота в указанной области c. Любая простая подсказка без движка игровой физики поверх Three JS? enter image description here введите описание изображения здесь

1 Ответ

2 голосов
/ 05 августа 2020

Просто используйте Raycaster. Я не знаю, почему вы не хотите его использовать, это самый простой способ найти перекресток без физического движка и без кучи математики.

Просто используйте Raycaster.set() чтобы указать прямо вниз от координат XZ и увидеть, где он пересекает местность:

var ray = new THREE.Raycaster();
var rayPos = new THREE.Vector3();

// Use y = 100 to ensure ray starts above terran
rayPos.set(x, 100, z);
var rayDir = new THREE.Vector3(0, -1, 0); // Ray points down

// Set ray from pos, pointing down
ray.set(rayPos, rayDir);

// Check where it intersects terrain Mesh
let intersect = ray.intersectObject(terrainMesh);
console.log(intersect);

См. здесь intersect объект . Он включает point в месте пересечения.

...