4. 修正看到的问题
然后在 Apple Vision Pro 上试用这个房间,告诉代理哪里不对。我们的三轮头显反馈,概括起来就是这样的提示词:
在头显里,我点不到玻璃房的书桌,挑空周围的护栏玻璃看不见,脚凳朝向不对,火焰也太大了。把这些修好。
靠枕往前倾,有两个座位坐得太深,台灯也太亮了。
泳池改用 Locus 内置的房间水面,不要用建模的水。


这是山顶别墅背后的提示词。它是一个两层、33 个座位的房间,可以作为实例,改编成你自己的房子。
这些提示词是从我们真实的对话中总结出来的,原始对话要长得多,也乱得多。

山顶别墅从两张参考图开始:一张是剖切的俯视平面渲染图,另一张是日落时分通往露台的通高客厅。你可以用自己的图,也可以让代理生成。
为一座现代山顶别墅生成两张参考图:一张是剖切的俯视平面渲染图;另一张是黄金时刻的通高客厅,通往露台,露台上有围着火炉桌的休闲区、八人户外餐桌和一个小泳池。


图像生成不需要 API 密钥。ChatGPT 订阅里包含的图像生成就够用了;我们只是碰巧用了 Scenario 和 OpenAI API。
把这两张参考图变成以米为单位的平面图和座位布局:两层楼、通高挑空、露台和泳池。开始搭建之前先给我看平面图。
代理先用以米为单位的数字写出平面规划,再把它画出来。图纸、模型和座位都来自这一个文件,所以移动一件家具时,它的座位也会跟着移动。
共有 33 个座位,分为 9 组。其中三组带有可以隐藏的桌子:厨房岛台、户外餐厅和玻璃房。
| 分组 | 座位 | 平面图编号 |
|---|---|---|
| 客厅沙发 | 4 | 1–4 |
| 客厅座椅 | 4 | 5–8 |
| 厨房岛台 | 4 | 9–12 |
| 露台沙发 | 5 | 13–17 |
| 露台休闲椅 | 2 | 18–19 |
| 户外餐厅 | 8 | 20–27 |
| 玻璃房 | 2 | 28–29 |
| 北侧天桥 | 2 | 30–31 |
| 书廊 | 2 | 32–33 |
按照这个平面图,在无界面的 Blender 里搭建出来。优先使用免费的 CC0 纹理,只生成缺少的部分。每把椅子先生成一张产品图,再转成 3D 模型。导出前用渲染图检查每一个座位,并把三角形控制在 150,000 个以内。
对山顶别墅来说,就是 12 套来自 Poly Haven 的纹理、一套来自 ambientCG 的石灰华,再加上生成的石材、艺术画和书脊。六把椅子从产品图变成了 3D 模型。第一版共有 148,484 个三角形。

然后在 Apple Vision Pro 上试用这个房间,告诉代理哪里不对。我们的三轮头显反馈,概括起来就是这样的提示词:
在头显里,我点不到玻璃房的书桌,挑空周围的护栏玻璃看不见,脚凳朝向不对,火焰也太大了。把这些修好。
靠枕往前倾,有两个座位坐得太深,台灯也太亮了。
泳池改用 Locus 内置的房间水面,不要用建模的水。


第一版在头显上跑得很慢。让它流畅起来,用的是这样的提示词:
为什么在头显上这么慢?
代理检查了整个 Room,发现贴图一共有 1.65 亿像素,还有八盏实时聚光灯,并给出了修改建议。
就这么做:按观看距离调整贴图尺寸,减少实时聚光灯。
把每一盏灯都烘焙进光照层,不再保留任何实时灯光。
贴图从 1.65 亿像素降到 3300 万像素。最后,每一盏灯都烘焙进了五个可开关的灯组之一,不再有实时聚光灯。烘焙又让下载变大了:现在大约 118 MB。
如果你好奇,这里多讲一点这个房间是怎么一步步做出来的。
大约一天。我们 10 月 23 日傍晚从参考图开始,第二天上午第一个定稿版本就完成了。
第 4、5 步里的头显修正是之后几轮反馈里做的。
不多。下面是我们付过费的全部内容:
图像生成可以直接用 ChatGPT 订阅里包含的用量,不需要 API 密钥。我们只是碰巧用了 Scenario 和 API。
我们没有用其他生成服务:没有 Tripo、Meshy、Hunyuan3D 或 Trellis。以上费用是记录下来的用量,不是发票金额。
有一些。这么大的房间碰到了 App 的一些极限。这些修复都已经发布,所以类似的房间可以直接受益:
房间水面和烘焙光照层在 Locus 里本来就有,山顶别墅只是用上了它们。
我们在头显上测量了 1.0.2 版。坐着看时保持 90 fps。书廊的座位是 61–69 fps,关掉火焰或隐藏透明表面后能达到 90。
这些数字来自带额外性能日志的 Locus 调试版,App Store 版没有这些。自己做 Room 时,描述你在头显上看到的情况,让代理去检查贴图、三角面和灯光就行。
这个房间还没有使用 GPU 纹理压缩,我们也还没有在当前版本上重新测量舒适度和性能。