LCCObject::intersectsCapsule
カプセルコリジョンテストを行います。
デジタルヒューマンのコリジョン機能の実装に使用できます。
バージョン要件
SDK v0.4.1+
エンジンサポート
Three.js
API
LCCObject::intersectsCapsule(param: IntersectsCapsuleParam): IntersectsCapsuleResult
パラメータ
| パラメータ | 型 | 必須 | デフォルト値 | 説明 |
|---|---|---|---|---|
param.start | { x: number, y: number, z: number } | はい | - | カプセルの底面の点。 |
param.end | { x: number, y: number, z: number } | はい | - | カプセルの上面の点。 |
param.radius | number | はい | - | カプセルの半径。 |
param.noDelta | boolean | いいえ | - | true の場合、コリジョンオフセットを計算せず高速に検出します。false の場合、オフセットを計算します。 |
戻り値
| プロパティ | 型 | 説明 |
|---|---|---|
hit | boolean | コリジョンが発生したかどうか。 |
delta | { x: number, y: number, z: number } | コリジョンオフセット。デジタルヒューマンの位置調整に使用できます。方向はカプセルに向かいます。noDelta が false の場合のみ有効。 |
使用例
const ret = lccObject.hasCollision();
if (ret) {
const start = { x: 10, y: 10, z: 0 };
const end = { x: 10, y: 10, z: 1.7 };
const radius = 1;
const noDelta = false;
let intersectResult = lccObject.intersectsCapsule({ start, end, radius, noDelta });
if (intersectResult.hit) {
console.log('Collision occurs, delta: ', intersectResult.delta);
}
} else {
// Collision function not supported
}
注意事項
- このメソッドは
LCCRender.load()の成功コールバックが発生した後に呼び出す必要があります。 - 使用前に
hasCollision()でコリジョンのサポートを確認してください。 - SDK はカメラ位置の近傍のコリジョンデータのみを読み込みます。
関連 API
LCCObject::hasCollision()LCCObject::intersectsSphere()