操作マニュアル
Scan Result Viewer のツールの操作をまとめたマニュアルです。
備考
詳細仕様や内部実装について知りたい場合はソースコードを直接ご確認ください。
ビューワー起動までの流れ
Map Scanner で作成したスキャンデータは、Unity 製のビューワーアプリで可視化することができます。
ビューワーを使用するためには様々なデータとの連携が必要なため、専用の Python スクリプト viewer_launcher.py
を通じてビューワーを起動する必要があります。
- 環境設定 を行っていない場合は済ませる
- Anaconda Prompt を起動後、以下のコマンドを実行して Map Scanner 用の仮想環境に切り替える
conda activate mapscanner # 仮想環境の切り替え
cd {playable-map-scanner のディレクトリ}/tools # ディレクトリの移動 python viewer_launcher.py
を実行する- 表示された GUI で以下の操作を行う
Viewer:
に Unity 製ビューワーの exe のパスを設定する (ビューワー入手方法はこちら)MapData:
に Map Scanner で作成したスキャンデータのフォルダ (map_data
) を指定する- MapData フォルダを指定すると TargetMap にマップ一覧が表示されるので、確認したいマップを選択する
- 必要に合わせて Settings 以下を設定する
- CellSize: スキャンデータのボクセル一辺の長さ
- _hit_box: レベル遷移用のヒットボックスに関するデータが存在するか
- Run Viewer ボタンを押す
- しばらくすると変換処理が終わり、Unity 製ビューワーが起動する (Python の GUI は終了する)
- ビューワーを操作 (操作方法は後述) してスキャン結果を確認する
補足
viewer_launcher.py
の各種設定はsettings.json
に保存され、次回起動時に自動で読み込まれます。自動読み込みで問題が発生した際はsettings.json
を削除してからツールを再起動してください。- 前回と同じ結果を確認したいだけの場合、Skip Convert にチェックを入れるとデータの変換を行わずに、ビューワーの起動だけを行います。
ビューワーの操作方法
ビューワー起動時のカメラ位置は、スキャン領域の端 (データ配列の [0][0][0]
に相当) となっています。
カメラを適切に移動させることで、マップ全体のスキャン結果を確認することができます。
移動
- W: カメラを奥に移動
- A: カメラを左に移動
- S: カメラを手前に移動
- D: カメラを右に移動
- R: カメラを上に移動
- F: カメラを下に移動
- マウス移動: カメラの向きを変更
ウィンドウ操作
- (1): 現在表示しているマップの名称です。
- (2): 各項目のチェックボックスから、各種データの表示/非表示を切り替えることができます。
- Water: 水面の位置 (
water_data
) - Wall: 壁の位置 (
wall_data
) - Search: 歩行可能 (一定以上のスペースがあり、ある程度平坦) な領域 (
_search_map.npy
) - IsClose: 到達可能 (歩行可能領域のうち、実プレーで到達可能) な領域 (
_is_close.npy
) - Road: 地面の位置 (
road_data
) - HitBox: レベル遷移用ヒットボックスの位置 (
{マップ名}_hitbox.json
)
- Water: 水面の位置 (
- (3): スライドバーから以下の値を調節できます。
- VisionField: スキャンデータの表示範囲
- Rotate Speed: マウス操作によるカメラの回転速度
- Move Speed: WASD キー、R/F キーによる移動速度 :::warn マップの広さによっては VisionField を広げすぎると処理データが多くなり、ツールが非常に重くなるので注意してください。 :::
- (4): 現在のカメラ座標です。これはゲーム内で対応する位置の座標と等しいです。
- (5): XYZ それぞれの空欄に数値を入力して [GOTO] ボタンをクリックすると、その座標にワープできます。
- (6): ログウィンドウです。エラー発生時にはメッセージが出ます。
備考
[GOTO] ボタンを使用し、現在の座標から大きく離れた座標に移動すると、移動先のスキャン結果のロードに失敗することがあります。 この場合、カメラを操作してピンク色の線で構成される立方体の境界面を跨ぐことで、データをロードさせることができます。