# ロケーション

> ロケーションはデータ、地図はレイヤーです。親子階層、3D地形と森林、平面マップとペン描画、未配置ロケーション、脚本参照の保護について解説します。

Source: https://loomworld.ai/ja/docs/module-locations

## ロケーション情報と地図レイヤーの役割分担

これらは意図的に分離された2つの概念です。ロケーションは「記録データ」です。魏、蜀、成都といった場所は、それぞれ名称、環境描写、別名／旧称、章ごとの変遷、および脚本からの参照情報を保持するカードとして存在します。地図は「インタラクティブな描画レイヤー」です。どの地図のどのグリッドセルやポリゴン領域をそのロケーションが占有し、どのような地形が広がっているかを扱います。

したがって、あるロケーションがいずれの地図上にも配置されていなくても、データとしては完全に有効です。地図上の領域を削除してもロケーションカードが削除されることはありません。本文執筆には記録レイヤーが必須であり、地図は空間関係を視覚化するために存在します。

## 画面レイアウト：左キャンバスと右側の2パネル

左ナビゲーションから「Locations」（ロケーション）を開きます。地図ワークベンチとして構成されています：

- キャンバス：開いた瞬間に地図が内部フレームいっぱいに広がり、無駄な余白やページ全体のスクロールはありません。ドラッグやホイール操作は地図のみを移動・拡縮し、ツールバーの位置は固定されます。
- 右下アイランドバー：現在の地図名、配置ロケーション数、3D／平面の表示切り替えに加え、プロジェクト共通のUndo、Redo、視点リセット、設定が並びます。
- 上部ツールバー：3D表示時は「Browse」（閲覧）、「Sculpt」（地形造形）、「Terrain」（地形塗り）、「Forest」（森林）、「Crop」（トリミング）を備えます。平面表示時は常に「Browse」、「Brush」（ブラシ）、「Eraser」（消しゴム）、3種類の線幅、カラーピッカー、「Draw region」（領域描画）、領域の表示／非表示トグルが1行のカプセルに収まります。
- 右サイドバー：上半分は「Maps」（地図一覧）で、世界地図および各詳細地図（サブマップの作成、名称変更、削除）を管理します。下半分は「Location library」（ロケーションライブラリ）で、全記録を一覧表示し未配置ロケーションの絞り込みも可能です。

地図の行をダブルクリックするとその地図に入り、ロケーションの行をダブルクリックするとその記録を編集できます。詳細地図の作成やロケーションの配置は右クリックメニューからのみ開始でき、行末のドラッグハンドルを使用することで右クリックメニューの操作性を損なわずに並び替えられます。

## 単一のマスター階層構造

親子関係はロケーション自体に1箇所のみ保存されます。子ロケーションの一覧はその場で動的に算出され、二重に保持されることはありません。そのため情報の食い違いは発生せず、インスペクター、アシスタント、相関グラフ、地図のすべてが同一の関係性を読み取ります。

- ロケーション行の右クリックメニューには、記録の編集、詳細地図の作成、最上位への移動、現在の地図への配置といった操作が明確に用意されています。
- 第2階層の行を一覧先頭の「最上位」ドロップエリアにドラッグすると階層が昇格し、別のロケーション上へドラッグするとその子ロケーションになります。
- 「Edit Location」（ロケーション編集）には、ロケーション名、環境描写、別名／旧称、ロケーションカラー、子ロケーションプレビュー、現在の状態表現、脚本内の該当シーンが含まれます。
- 削除時は確認ダイアログが表示されます。そのロケーションまたは配下のサブツリーが脚本本文から参照されている間は削除できず、親ロケーションの変更も制限されます。「Script Scenes」（脚本シーン）ブロックにすべての参照箇所（「第N場 · タイトル」、時空ノードは時空切り替えとして表示）が一覧表示され、ワンクリックで本文該当箇所へジャンプして参照を解除できます。

## 3Dマップ：領域指定、地形造形、森林配置

3D表示ではグリッドセル上に位置を配置しますが、表計算ソフトのような無味乾燥な外観（A/B/Cや1/2/3の列番号など）は一切ありません。すべてのセルが地形タイルとしてレンダリングされるため、未設定のキャンバスであっても地図としての質感を保ちます。

- **ブラウズ（閲覧）**デフォルトのモードです。ドラッグでパン移動、スクロールで拡大縮小、スペースキー長押しで自由移動。領域をダブルクリックすると、詳細地図が存在する場合はその地図へ、存在しない場合はそのロケーションの記録詳細へ遷移します。

- **領域の指定**領域モードに切り替えてセル上をドラッグすると、指定領域の中央に名称入力ボックスが浮き上がります（キャンバスやツールバーを押し出すことはありません）。Optionキーを押しながらドラッグすると選択範囲からセルを除外できます。

- **地形と森林**地形ブラシで地表の種類を変更し、森林ブラシで森林の範囲を追加・削除します。樹木、岩、草は森林の範囲およびその下の地面のタイプに応じて自動的に生成されます。ブラシサイズは1×1、3×3、5×5があり、中心のセルに吸着します。プレビュー表示は実際の変更結果と常に一致します。

森林が成立するのは草原、山地、湿地、雪原のみであり、それぞれ独自の構成を持ちます。草原には多くの樹木とわずかな岩、山地には多めの岩と少なめの草、雪原には針葉樹の雪木のみが生育します。非対応の地面にあるセルはスキップされ、ストローク全体が無効になることはありません。地表を別の種類に変えても森林は自動復元されないため、必要に応じて再度描画してください。

非表示ブラシを使用すると、該当セルを現在の地図から除外できます（付随する森林も削除されます）。そこにロケーションが配置されていた場合、この地図上での描画が消えるだけであり、ロケーションカード自体は保持されます。

## 平面ビュー：下絵、手書きストローク、区域の3層構造

各地図には1枚の平面下絵を設定できます。ローカルのPNGまたはJPEG画像（最大30MB、超過した場合は長辺8192pxに自動縮小され案内が表示されます）をアップロードするか、下絵がない場合は白紙ボードを開いて最初から描き始められます。その後、ブラシと消しゴムを使って同一画像上で編集を続けられます。ストロークは相対座標の独立レイヤーとして保持されるため元の画像ファイルは変更されず、消しゴムはストロークレイヤーのみを消去します。

- マウスを押してから離すまでが1ストロークとして扱われます。指を離した時点で保存され、プロジェクトのUndoスタックを正確に1ステップ消費します。Cmd / Ctrl + Z でストローク単位で巻き戻せます。
- 区域（領域）は下絵上に頂点を1つずつ打って描画し、最初の頂点をクリックするかダブルクリックすることで閉じます。閉じた後は既存または新規のロケーションに紐付ける必要があり、紐付けをキャンセルした場合は何も保存されません。ポリゴンは自己交差できず、内部に穴を開けることはできません。
- 描画中もホイールによる拡大縮小やスペースキーでのパン移動が可能で、Escでキャンセルできます。頂点が既に存在する場合、ビューや地図、モードを切り替えようとすると破棄の確認が行われます。
- 区域を選択すると、境界の編集、ロケーションを開く、ロケーションの変更、削除といった操作が同一のカプセルメニューに追加表示されます。頂点をドラッグして移動、辺をクリックして頂点を追加、頂点を削除（最低3点必要）、内部をドラッグして領域全体を移動できます。
- 区域とストロークは画像に対する相対座標で保存されるため、下絵画像を差し替えてもそのまま維持されます。下絵を差し替えまたは削除する際は、「flat annotations」（平面注釈）を維持するか、区域とストロークを一括消去するかを一度確認されます。

1つのロケーションが複数の離れた区域を保持することも、異なるロケーションの区域同士が重なり合ったり包含されたりすることも可能です。小さな区域が大きな区域の前面に表示され、名称ラベルは領域内に自動配置されます。手動によるレイヤー順序変更や手動のラベル位置調整はなく、3Dジオメトリが平面ポリゴンに自動変換されることもありません。各ビューが独自の幾何データを保持します。

## 未配置ロケーションを地図へ配置する手順

脚本から確定されたロケーション名は即座に正式なカードになりますが、この時点ではどの地図にも配置されていません。ロケーションライブラリに全カードが集約されており、未配置フィルターを使用することで現在の地図に存在しない項目を確認できます。

- **3Dビューでの配置**ロケーション行を任意のセル上にドラッグするか、右クリックメニューから「現在の地図に配置」を選択し、その後領域をペイントします。

- **平面ビュー：描画してから紐付け**下絵上にポリゴンを描画し、紐付けパネルでロケーションを選択するかその場で新規作成します。

- **配置の削除は安全な操作**配置を削除しても、そのロケーションが「未配置」状態に戻るだけです。ロケーションの記録自体、他方のビューの幾何データ、サブ地図が消えることはありません。

## 脚本との連動

シーンおよび時空ノードのロケーションは、文字列ではなくロケーションの実体IDを参照します。シーンのメインロケーションが「蜀」に設定されている場合、時空ノードに「衙門の奥の広間」と入力するとそのサブツリー内の一意な候補が再利用されます。存在しない名称を入力した場合は、「蜀」直下の直接の子ロケーションとして新規作成されます。時間のみを入力することも正当な操作です。時空フィールドが空欄の場合は「シーンのロケーションを継承」を意味し、記録データに親の値が勝手に埋め込まれることはありません。

子ロケーションは親ロケーションの領域内に投影され（世界地図レイヤーでは「蜀」の領域内に「成都」が表示されます）、投影位置は後から手動で補正できます。すべてのロケーションは1階層深く潜ることができ、「面的な範囲」と「ピンの地点」を別ルールで分ける必要はありません。

## 制限事項とトラブルシューティング

- 区域の表示トグルはこのキャンバスの表示にのみ影響します。オフにすると塗りつぶし、境界線、名称ラベル、クリック判定が一括して非表示になります。新規区域の作成を開始するかサイドバーからロケーションを検索すると自動で再表示され、この設定がプロジェクトデータに書き込まれることはありません。
- 分割画面はウィンドウ幅に追従し、右側パネルのボタンやメニュー領域が常に確保されます。パン操作は最も外側の表示可能セルで停止するため、地図を見失うような広大な余白に迷い込むことはありません。
- 旧バージョンのプロジェクトは自動的にアップグレードされます。旧形式の地図データを保持していたロケーションにはデフォルトの世界地図が割り当てられ、可能な限り忠実に配置が再構築されます。平面データを持たない地図は3D表示で開きます。

本バージョンで対応していない機能：AIによる下絵画像の自動生成、複数の下絵レイヤー重ね合わせ、画像の切り抜き／回転／変形／不透明度スライダー、ピン留めや移動ルート線、セッションを跨ぐ手書きストローク履歴や単一ストローク選択、ヘックス（六角形）グリッド。詳細は [モジュール間連携](https://loomworld.ai/ja/docs/cross-sync) および [エンティティへの言及と@入力](https://loomworld.ai/ja/docs/references) を参照してください。
