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()