LCCObject::raycastFromOrigin
自定義起點和方向的射線檢測。
支持自定義 origin 和 direction,在世界空間下檢測 LCC 模型數據。
版本要求
SDK v0.3.0+
引擎支持
Three.js / CesiumJS
API
LCCObject::raycastFromOrigin(param: RaycastFromOriginParam): IPoint3 | null
參數
| 參數 | 類型 | 必選 | 默認值 | 描述 |
|---|---|---|---|---|
param.origin | { x: number, y: number, z: number } | 是 | - | 射線原點,世界空間坐標。 |
param.direction | { x: number, y: number, z: number } | 是 | - | 射線方向,可以是歸一化或非歸一化向量。 |
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。
使用示例
const origin = { x: 10, y: 10, z: 10 };
const startPos = { x: 10, y: 10, z: 10 };
const endPos = { x: 50, y: 50, z: 50 };
const direction = {
x: endPos.x - startPos.x,
y: endPos.y - startPos.y,
z: endPos.z - startPos.z
};
const maxDistance = 100;
const radius = 0.01;
let checkPos = lccObject.raycastFromOrigin({ origin, direction, maxDistance, radius });
if (checkPos) {
console.log('checkPos: ', checkPos.x, checkPos.y, checkPos.z);
} else {
// No point detected
}
注意事項
- 此接口需在
LCCRender.load()的成功回調函數觸發後調用。 direction可以是歸一化或非歸一化的向量。- 如果
radius值為 0.01 檢測不到數據,可以適當調大,例如 0.1。
相關 API
LCCObject::raycast()LCCObject::intersectsRayFromOriginExt()