LCCObject::raycast
Raycasting basato su clic sullo schermo.
Può essere utilizzato per annotazioni, misurazioni, rilevamento del terreno (umani digitali) e altro.
Requisito di versione
SDK v0.3.0+
Supporto motore
Three.js / CesiumJS
API
LCCObject::raycast(param: RaycastParam): IPoint3 | null
Parametri
| Parametro | Tipo | Obbligatorio | Predefinito | Descrizione |
|---|---|---|---|---|
param.evt | MouseEvent / PointerEvent | Sì | - | Evento di clic del mouse, ad es. mousedown. |
param.maxDistance | number | Sì | - | Distanza massima di rilevamento, in metri. |
param.radius | number | Sì | - | Precisione di rilevamento; regolare in base allo scenario reale, in metri. |
param.opacityThreshold | number | No | 0.5 | Soglia di opacità per il rilevamento ad alta precisione, intervallo [0, 1]. Efficace solo quando usePrecisionRaycast è true. SDK v0.6.3+ |
Valore di ritorno
IPoint3 | null — Coordinate del punto rilevato (x, y, z) nello spazio mondo. Restituisce null se nessun punto viene rilevato.
Esempio di utilizzo
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
}
});
Note
- Questo metodo deve essere chiamato dopo che il callback di successo di
LCCRender.load()è stato attivato. - In Cesium, ascoltare l'evento
pointerdowndel canvas, non l'eventomousedowndidocument. - Le coordinate restituite sono nello spazio mondo.
API correlate
LCCObject::raycastFromOrigin()LCCObject::intersectsRayExt()