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

More Related Content

PPTX
未来のプログラミング技術をUnityで -UniRx-
PDF
【Unity】 Behavior TreeでAIを作る
PDF
UniRx完全に理解した
PPTX
はじめてのUniRx
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
PDF
Riderはいいぞ!
PPTX
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
PDF
適度に弱い敵aiの作り方
未来のプログラミング技術をUnityで -UniRx-
【Unity】 Behavior TreeでAIを作る
UniRx完全に理解した
はじめてのUniRx
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Riderはいいぞ!
スマホゲームのチート手法とその対策 [DeNA TechCon 2019]
適度に弱い敵aiの作り方

What's hot (20)

PDF
Unityでパフォーマンスの良いUIを作る為のTips
PDF
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
PDF
【Unite Tokyo 2018】その最適化、本当に最適ですか!? ~正しい最適化を行うためのテクニック~
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
PDF
UniTask入門
PPTX
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
PDF
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
PDF
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
PDF
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
ODP
Unity ネイティブプラグインの作成について
PDF
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
PDF
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
PDF
20分くらいでわかった気分になれるC++20コルーチン
PDF
Unity2018/2019における最適化事情
PDF
Observableで非同期処理
PDF
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
PDF
計算量のはなし
PDF
Unityでオンラインゲーム作った話
PPTX
UniRxでMV(R)Pパターン をやってみた
Unityでパフォーマンスの良いUIを作る為のTips
C# ゲームプログラミングはホントにメモリのことに無頓着でいいの?
【Unite Tokyo 2018】その最適化、本当に最適ですか!? ~正しい最適化を行うためのテクニック~
【Unite Tokyo 2019】Understanding C# Struct All Things
UniTask入門
【CEDEC2018】一歩先のUnityでのパフォーマンス/メモリ計測、デバッグ術
デキるプログラマだけが知っているコードレビュー7つの秘訣
【Unite Tokyo 2019】Unityとプロシージャルで作るオープンワールド背景
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Unity ネイティブプラグインの作成について
【Unite Tokyo 2018】Audio機能の基礎と実装テクニック
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
20分くらいでわかった気分になれるC++20コルーチン
Unity2018/2019における最適化事情
Observableで非同期処理
【Unite Tokyo 2019】Unity Test Runnerを活用して内部品質を向上しよう
計算量のはなし
Unityでオンラインゲーム作った話
UniRxでMV(R)Pパターン をやってみた
Ad

超軽量経路探索 for Unity