衝突シミュレーション 拡張版

落下: 三角形メッシュ / ベジエ曲面(8パッチ)トーラス  |  固定: Three.js球 / OBJメッシュ

経過:0.00 s
衝突:---
方法:簡易
距離:---

落下オブジェクト:
固定オブジェクト:
OBJファイル: デフォルト低ポリ球を使用中
ベジエ表示:

衝突判定方法:

トーラスの太さ: 0.30
中心のずれ: 0.0
跳ね返る強さ: 0.5
回転速度: 0.005
📐 衝突判定 解説
① 簡易距離判定

中心間距離だけを閾値と比較。計算量 O(1)。穴・形状は無視。最速。

dist < r₁ + r₂

⚠ 布など扁平形状には不向き。

② 頂点サンプリング

汎用: トーラス専用ではなく、どんな三角形メッシュにも使える。

Phase A: 落下物の頂点(8個おき) → 球バウンディング球と距離比較

Phase B: 球頂点(8個おき) → 落下物近似球と距離比較

計算量 O(n/8)。ベジエ布・トーラス・任意OBJすべてに適用可。

③ 衝突応答

法線 n = 中心間ベクトル正規化。速度を分解:

・法線成分 → ×(1+e) 反転(反発)

・接線成分 → ×0.8 保持(摩擦)

重なり量分だけ位置補正。

④ 変形システム

全頂点を球中心から離す方向へ変位。影響量 = max(0,1-d/5) 線形減衰。毎フレーム lerp(cur,orig,0.12) で復元。

⑤ ベジエトーラス(8パッチ)

4×2=8パッチ。ハーミート→ベジエ変換で制御点導出。

P[1][j]=S+Sᵤ·Δu/3

P[2][j]=S-Sᵤ·Δu/3

内部点は Sᵤᵥ·ΔuΔv/9 で補正。

⑥ ベジエ布(1パッチ)

1枚のバイキュービックベジエパッチ。4×4=16個の制御点を波形に配置し布状曲面を生成。

スライダー「波の高さ」で制御点Y座標を変化。衝突判定は②と同じ頂点サンプリングを使用。

🔴制御点ケージ / 🌈パッチ境界 可視化可能。

⑦ OBJメッシュ球

v/f をパースし三角形メッシュ生成。バウンディング球で自動正規化。デフォルト: 低ポリ球(8×12)。OBJアップロード可。