函数intersectOBB
用于检测一条光线是否与一个方向包围盒(OBB)相交。方向包围盒是一个矩形的体,可以通过中心点、尺寸以及旋转定义。
intersectOBB(ray, obb)
ray
:{ origin: Vector3, direction: Vector3 }
,一条光线对象,包含一个起点和一个单位方向向量。obb
:{ center: Vector3, halfSize: Vector3, orientation: Quaternion }
,一个方向包围盒对象,包含中心点,半尺寸以及旋转。null
。import { Vector3, Quaternion } from 'three';
import { intersectOBB } from 'yuka';
const ray = {
origin: new Vector3(0, 0, 0),
direction: new Vector3(0, 0, -1)
};
const obb = {
center: new Vector3(0, 0, -5),
halfSize: new Vector3(1, 1, 1),
orientation: new Quaternion().setFromEuler(0, 0, 0)
};
const distance = intersectOBB(ray, obb);
if (distance !== null) {
console.log(`交点到光线原点的距离: ${distance}`);
} else {
console.log('光线与方向包围盒没有相交。');
}
ray
始终指向正方向。如果不是,需要调整参数。ray.origin
和ray.direction
来计算。