LCCObject::raycast
Raycasting basado en clic de pantalla.
Puede utilizarse para anotación, medición, detección del suelo (humanos digitales) y más.
Requisito de versión
SDK v0.3.0+
Compatibilidad de motor
Three.js / CesiumJS
API
LCCObject::raycast(param: RaycastParam): IPoint3 | null
Parámetros
| Parámetro | Tipo | Obligatorio | Predeterminado | Descripción |
|---|---|---|---|---|
param.evt | MouseEvent / PointerEvent | Sí | - | Evento de clic del ratón, p. ej., mousedown. |
param.maxDistance | number | Sí | - | Distancia máxima de detección, en metros. |
param.radius | number | Sí | - | Precisión de detección; ajuste según el escenario real, en metros. |
param.opacityThreshold | number | No | 0.5 | Umbral de opacidad para detección de alta precisión, rango [0, 1]. Solo efectivo cuando usePrecisionRaycast es true. SDK v0.6.3+ |
Valor de retorno
IPoint3 | null — Coordenadas del punto detectado (x, y, z) en espacio mundial. Devuelve null si no se detecta ningún punto.
Ejemplo de uso
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
}
});
Notas
- Este método debe llamarse después de que se haya activado el callback de éxito de
LCCRender.load(). - En Cesium, escuche el evento
pointerdowndel canvas, no elmousedowndedocument. - Las coordenadas devueltas están en espacio mundial.
APIs relacionadas
LCCObject::raycastFromOrigin()LCCObject::intersectsRayExt()