Three.js - 获取特定 position.x,z 处网格的地形高度 (position.y) - 没有鼠标和 raycaster?

Three.js - get terrain height (position.y) of the mesh at specific position.x,z - without mouse and raycaster?

假设我从 Blender 导出了一种相当简单的地形,作为 GLB 对象导出,它是一个组并包含一个带有 BufferGeometry 的网格。我有另一个 GLB 对象,它是一个车辆模型。如何在不移动鼠标和使用 raycaster 的情况下在特定的 x、z 位置(最好是 4 个用于设置汽车位置和旋转的位置)读取正确的 position.y?我需要知道特定区域的海拔和高度是多少。在 ThreeJS 之上没有游戏物理引擎的任何简单线索?

只需使用 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);

See here for the intersect object。它包括发生交集的 space 中的 point