Research notes
Mirai Guide:マップラスターから歩ける床を読む
ブース間の隙間からの推定が失敗した理由と、会場マップの色分割からA*用ナビゲーショングリッドを得るまで。
会場内の2点間歩行ナビゲーション、つまりブースからブースへ、入口からどこへでも案内するには、床がどこにあるかを知っている必要があります。
最初のモデルは、ブース矩形の間の余白から歩行可能性を推定していました。もっともらしく思えました。ブースが無いなら、そこは歩けるはずだと。
それから計測してみたら、ナビゲーションがまさに露呈させる形で間違っていました。
計測が言っていたこと
本番の3つの会場ラスターで計測した結果です。
- 描画の継ぎ目が通路として扱われる。 ブース間の最近傍距離は、1〜3pxの継ぎ目と約31pxの実通路という2つの母集団に分かれます。どのマップでも、ブース間経路の30〜42%が8px未満の隙間を通っていました。カートページの装飾的なラインなら許容範囲です。道案内としては違います。
- ホール境界が存在しない。 入口、出口、インフォメーションなど、多くのランドマークはホール輪郭の外にあります。ある会場の下側の壁を横切る経路のうち、約41%が扉ではなく壁を通過していました。入口はナビゲーションの最も自然な出発点なので、これだけでもこの方式は成立しません。
- 障害物の欠落。 ある会場にはゾーン内に構造柱がありますが、どのアンカーテーブルにも存在しません。
- 非直交の形状。 別の会場には曲面の壁と、扉でつながる2レベルの歩行空間があります。軸平行矩形の障害物モデルでは、構造的に表現できません。
ラスターはすでに知っている
そこで、マップのファイルそのものをちゃんと見てみました。
本番マップはすべてインデックスカラーPNGでした。フラットな色領域を持つベクター書き出しのフロアプランで、会場をまたいで1つのパレット設計を共有しています。ホール床、出展ゾーン床、コンコース、ブース、建物外の透明部分が、それぞれ安定したパレット色を持っています。
歩行可能な色をマスクすれば、本当の床が出てきます。通路も柱も込みで。実通路は約8〜11pxから始まり、4px未満の連なりはアンチエイリアスの痕跡だと識別できます。
なので方針は、色分割で歩行可能な床を抽出し、コンパクトなナビゲーショングリッドとして公開バンドルに入れ、そのグリッド上でA*を回す、というものになりました。
これはLLM抽出ではなく、決定的な画像処理です。再現可能で、無料で、即時で、人間が再レビューしなくても既存の全マップを遡って処理できます。
それでも人間が要るもの
ラスターが供給できないものが2つあります。
マップ間の接続性、つまりあるフロアのどの出口が別フロアのどの入口につながるかは意味論なので、小さなポータルグラフとして手で書きます。あと、画像のどこにもメートル毎ピクセルの縮尺がないので、距離とETAには別途較正が必要です。
意図的に守った境界が1つあります。既存のカート訪問計画ラインは、独自の角可視性プランナーをそのまま持ち続けます。全8マップ・7,058ブースペアで、フォールバック0件・ブース横断0件を検証済みです。ナビゲーションは別のエンジンです。1つで両方を賄おうとしても、手戻りが増えるだけで得るものはありませんでした。