Page to poster – 頁面轉海報
你閱讀冒險內容,然後撰寫五個小檔案來描述該地點。這個資料夾中的程式碼會檢查這些檔案,在無頭 Blender 中建立 3D 模型、渲染它,並組成海報。
adventure (PDF/text) + guidelines
-> brief.md 文字中關於該地點的說明 (你撰寫)
-> layout.json 房間、通道、入口,單位為公尺 (你撰寫;`check` 會驗證並繪製)
-> props.py 每個房間中的物品 (你撰寫;`build` 會建模)
-> poster.json 標題、標籤、標註、文字框 (你撰寫;`poster` 會渲染並組成)
-> out/poster_gm.png, poster_player.png, poster_bare.png (+ .jpg)
p2p.py 位於此資料夾。從使用者的工作目錄呼叫其完整路徑,這樣專案資料夾會建立在該目錄中,而不是在此處;下方指令簡寫為 python p2p.py。如果 python 不是 Python 3,請使用 python3。
全程適用的規則
- 查看你產生的每一張圖片。 每個步驟都會寫入一張圖片;在繼續之前,用你的圖片閱讀工具打開它。步驟說明了檔案名稱。大多數錯誤在圖片中一目了然,但在數字中難以察覺。
- 單位為公尺,+x 向東,+y 向北,地板位於 z = 0。
props.py中的角度為弧度。 - 說明你估算的內容。 冒險內容很少給出尺寸或精確位置。請估算,在
brief.md中寫下「est.」,並在回報時列出估算值。切勿將虛構的事實呈現為書籍的內容。 - Blender 透過
p2p.py以無頭模式執行。 不要開啟它的視窗,也不要使用 Blender MCP 伺服器。 - 草稿很便宜。 使用
--dpi 100製作草稿海報;一旦草稿正確,再以--dpi 200渲染最終版本。 - 專案資料夾包含冒險的文字和地圖。除非你有權發布該冒險,否則請將其保存在公開儲存庫之外。
步驟 0:檢查機器
python p2p.py doctor
必須以 Core pipeline: ready 結束。如果缺少 Python 套件:pip install -r requirements.txt。如果缺少 Blender,請依照 docs/setup.md 操作。不需要 GPU(渲染會回退到 CPU),ComfyUI 為選用:只有在使用者提供 URL 時才傳入 --comfy URL(請參閱 docs/comfyui.md)。
步驟 1:開始專案並閱讀來源
python p2p.py new PROJECT --source adventure.pdf --pages 53-56
PROJECT 是用於此地圖的新資料夾,例如使用者工作目錄下的 maps/the-site-name。--pages 是要映射的位置在 PDF 中的頁碼(第一頁為 1);如果是短 PDF,可以忽略此參數。文字或 Markdown 來源會直接複製。此指令會為五個檔案寫入範本,對於 PDF,還會產生 source/page_NNN.txt 和 source/page_NNN.png。
閱讀所有文字。然後查看每一頁的圖片:地圖、圖表和側邊欄只會出現在圖片中。如果書中有地圖,該地圖會決定房間的位置;文字則決定房間內的物品。
根據使用者的要求填寫 guidelines.md;他們沒有提到的部分保留預設值。只有在你無法判斷要映射哪個位置時,才詢問使用者。
填寫 brief.md:每個房間一行,每個連通處一行,每個入口一行。引用頁碼。這是決定哪些是已知資訊、哪些是估算資訊的步驟。
當文字沒有給出尺寸時:門為 1 公尺,走廊為 2.5 到 3.5 公尺,牢房或辦公室為 4 x 5 公尺,一般房間為 6 x 8 公尺,大廳為 15 x 25 公尺,洞穴或飛機棚為 30 x 50 公尺。天花板:一般房間 3 公尺,大廳 5 到 8 公尺。在奇幻遊戲中,一個地圖方格通常是 5 英尺(1.5 公尺);一個「步幅」約為 1 公尺。
步驟 2:layout.json
用該地點的房間、通道和入口替換範本。docs/layout.md 包含所有鍵值。兩個可學習的完整專案:examples/brine-chapel/(一個石造地城,來自沒有地圖的文字)和 examples/kestrel-9/(一個預製太空站,來自帶有草圖地圖的 PDF)。基本要點:
- 房間是一個軸對齊的清晰地板矩形:`