LCCObject::raycast
基于屏幕点击位置的射线检测。
可用于标注、测量、地面检测(数字人)等功能。
版本要求
SDK v0.3.0+
引擎支持
Three.js / CesiumJS
API
LCCObject::raycast(param: RaycastParam): IPoint3 | null
参数
| 参数 | 类型 | 必选 | 默认值 | 描述 |
|---|---|---|---|---|
param.evt | MouseEvent / PointerEvent | 是 | - | 鼠标点击事件,例如 mousedown 等事件。 |
param.maxDistance | number | 是 | - | 检测最远距离,单位为米。 |
param.radius | number | 是 | - | 检测精度,可根据实际情况调整,单位为米。 |
param.opacityThreshold | number | 否 | 0.5 | 高精度检测时的 opacity 阈值,取值范围 [0, 1]。仅当 usePrecisionRaycast 为 true 时生效。SDK v0.6.3+ |
返回值
IPoint3 | null — 检测到的点坐标(包含 x、y、z),值为世界坐标空间的坐标。未检测到时返回 null。
使用示例
Three.js
document.addEventListener('mousedown', (evt) => {
let checkPos = lccObject.raycast({ evt: evt, maxDistance: 100, radius: 0.1 });
if (checkPos) {
console.log(checkPos.x, checkPos.y, checkPos.z);
} else {
// No point detected
}
});
CesiumJS
viewer.scene.canvas.addEventListener('pointerdown', (evt) => {
let checkPos = lccObject.raycast({ evt: evt, maxDistance: 100, radius: 0.1 });
if (checkPos) {
console.log(checkPos.x, checkPos.y, checkPos.z);
} else {
// No point detected
}
});
注意事项
- 此接口需在
LCCRender.load()的成功回调函数触发后调用。 - Cesium 中需要监听 Canvas 的
pointerdown事件,而非document的mousedown。 - 返回的坐标值是世界坐标空间的值。
相关 API
LCCObject::raycastFromOrigin()LCCObject::intersectsRayExt()