LCCObject::raycastFromOrigin
カスタム原点と方向によるレイキャスト。
ワールド空間で 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 | 高精度検出の不透明度しきい値。範囲 [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()