Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

超軽量経路探索 for Unity

Unityでの軽量経路探索アルゴリズム

Related Books

Free with a 30 day trial from Scribd

See all
  • Be the first to comment

超軽量経路探索 for Unity

  1. 1. 自作三次元経路探索 アルゴリズムのお話
  2. 2. 経路探索アルゴリズム例 • A*(エースター) – 各点(ノード)を評価し最短経路を導く – 障害物を避ける経路を必ず見つける – 処理が重く評価を行う指標が必要 • 幅優先探索 – 始点から近い順に各点を辿る – 障害物を避ける経路を必ず見つける – 全ての経路を探索するため計算量が莫大
  3. 3. 経路探索の問題点 計算量のせいで処理が重い! – 三次元となるとなおさら – 重くて複数同時に処理を回せない 理由は? 「計算対象(ノード)」が多すぎるのではないか
  4. 4. 解決策(for Unity) • Bounds(バウンス)を用いる – AABB(軸平行境界ボックス) – 「バウンディングボックス」ともいう – オブジェクトを囲んでいる(下画像の紫部) 目的:計算対象を減らす
  5. 5. 解決策(for Unity) • Raycast(レイキャスト)を用いる – 不可視の光線を飛ばし衝突判定を行う – Debug.DrawRay(引数色々)で描画可能 – 「SphereCast(スフィアキャスト)」も存在する 目的:計算対象を減らす
  6. 6. アルゴリズム 1. 自座標から目標座標へRayを飛ばす 目的:計算対象を減らす 自分 障 害 物 目標 間に障害物がなければ直線的に移動
  7. 7. 目標 アルゴリズム 2. 障害物が存在する際、障害物のBouns情報を取得 目的:計算対象を減らす 自分 障 害 物! ))) 目標 自分 障 害 物 Bouds 情報
  8. 8. アルゴリズム 3. Bouns情報からノードを4つ作成 目的:計算対象を減らす 障 害 物 上 1. 情報からボックスの角の座標を取得 2. 中心から離れるベクトル方向へ座標 ずらし(障害物から離れさせる) 3. 自分の現在高さへ調整 || 計算対象が4つのみで良くなった!
  9. 9. アルゴリズム 4. ノードを絞り込む 目的:計算対象を減らす 障 害 物 • 自分から見えないもの • ほぼ正面にあるもの 除外条件 自 相 除外対象 (例)
  10. 10. アルゴリズム 5. 距離の合計から最も短いルートを選択 目的:計算対象を減らす 自 相 障害物を跨ぐような経路は 考慮しないよう配慮する
  11. 11. 結果1
  12. 12. 結果2
  13. 13. 結果3
  14. 14. メリット • 動作がかなり軽い • 三次元的な経路探索が可能 デメリット • 複雑な形状や穴が開いた障害物に対応不可 • 障害物が隣り合っていると探索が上手くいかな いときがある(再探索で対応可能) • 上下の経路作成に未対応

    Be the first to comment

    Login to see the comments

  • GlassesRed

    Nov. 16, 2016
  • Zhngzhrgng

    May. 23, 2017
  • haruotu

    Sep. 29, 2018
  • takayoshishibata1

    Jul. 12, 2019

Unityでの軽量経路探索アルゴリズム

Views

Total views

7,990

On Slideshare

0

From embeds

0

Number of embeds

1,595

Actions

Downloads

14

Shares

0

Comments

0

Likes

4

×