从2D平面图构建逼真3D房屋(Dựng nhà 3D siêu chân thật từ bản vẽ 2D)
如果 references/local.md 存在,请先阅读它:它会设置本机的文件夹和房屋规则。
平面图文件从图纸中读取,与图纸进行校验,使用真实墙厚和真实窗框进行构建,然后使用扫描材质和模型进行装饰,并在Cycles中渲染。图纸始终是评判标准:除非构建的楼层平面图与其墨水印记完全匹配,否则不输出任何内容。
工作顺序
- 找到图纸及其来源。 版权清晰的平面图,以及同一建筑或其类型和时期的照片。
完整阅读
references/read-plan.md:来源、校准、读取顺序、可推断内容的表格。 - 编写
plan.json。references/plan-format.md包含所有键。阅读你需要的部分。所有未从图纸中读取的内容都放在provenance.inferred中,最终报告将重复该列表。 - 构建前检查。 若出现任何失败,停止并修复:
uv run --no-project --with pillow --with numpy --with scipy python scripts/plan_check.py check plan.json uv run --no-project --with pillow --with numpy --with scipy python scripts/plan_check.py overlay plan.json - 构建。 一次一个Blender:
它将在blend文件旁边写入已构建部分的内容。使用blender -b --factory-startup -t 6 -P scripts/build_house.py -- plan.json out/house.blendplan_check.py asbuilt <section.json>对其进行评分。 - 小预览。
--samples 48 --scale 50,然后将每个镜头与参考照片并列查看:blender -b out/house.blend -t 6 -P scripts/render_house.py -- plan.json out/preview --samples 48 --scale 50 - 查找看起来虚假的地方。 在评判前阅读
references/realism-faults.md:此流程实际产生的缺陷、每个缺陷的外观以及修复方法。每次都在该文件中添加新发现的缺陷。 - 最终版。 约512采样率的1920x1080分辨率,每个静态图以全尺寸与真实照片并列。逐一查看每个图像。
- 动画影片。
--film <name>。build_up影片将墙体从图纸本身升起。街道:请参见references/plan-format.md中的“街道”。
硬性规则
- 门控:至少70%的墙面在7厘米的墨水线条范围内,最佳拟合偏移最多16厘米,相较于50厘米偏移的对照组具有明显优势,且需同时通过平面图和已构建部分的检验。失败意味着平面图或构建有误。绝不能放松此标准。
- 尺寸通过测量或打印获取,不得凭眼力猜测:墙厚、天花板高度、窗台和窗顶高度。图纸未提供的尺寸根据类型和时期推断,并列为推断值。
- 无立面图的屋顶和外墙被推断。请在报告中说明。
- 仅使用真实材质:来自Poly Haven或ambientCG的扫描,使用其真实图块尺寸。可见表面上不得使用纯色。
- 家具来自根据房间用途放置的真实PBR模型,保留行走空间,正面朝向房间。
scripts/fetch_assets.py下载CC0扫描模型,scripts/find_objaverse.py和scripts/fetch_objaverse.py查找并获取CC BY模型。 - 在平面图旁的
CREDITS.md中标注每个CC BY模型和每个来源图纸的版权信息。 - 在放置新模型前,使用网格检查方向(
scripts/preview_assets.py)。同时检查原始尺寸,因为Objaverse模型可能使用非常规单位。
速度优化
glTF导入是最慢的步骤,因此 build_house.py 将每个模型缓存为资产库(HOUSE_ASSET_LIBRARY,默认为 ~/house-assets)中的链接 .blend 文件。避免使用扫描的松树和冷杉:它们的导入器需要很多分钟。草地和树木的同步时间较长,因此渲染在镜头之间保留持久数据。任何超过5分钟的步骤都将进行分析并修复。
完成意味着
检查、叠加和已构建门控均通过,并附带具体数值。室内和室外静态图在全尺寸下与真实照片相比站得住脚。报告需说明资料来源、推断内容以及仍然薄弱的环节。