使用Astra进行建筑可视化
我一开始只给了一句话的需求:
一栋简约但家具细节丰富的房子、一个花园,以及电影般的氛围。
我请 Codex 里的 Astra 把这个描述变成 Blender 中可编辑的三维场景。我们把它逐步发展成一栋配备家具的家庭住宅,还探索了 Unreal Engine 5 里的版本,并持续打磨 Blender 场景,直到我能指挥镜头逐帧浏览整栋房子。
第一个场景围绕一个配备家具的起居凉亭展开。后来我们先为更大的家庭住宅绘制了平面图,再逐间搭建房间。一路上,我与 Astra 共同打磨建筑、家具、材质和灯光,每一版都用来决定下一步该发展什么。最新一轮加工加入了日常物品和更温暖的光线,让房子有了生活气息。
Your browser does not support the video tag.
房屋的镜头漫游,使用 Cycles 在 Blender 中渲染而成。
我整理了项目中的几条提示,为简练而做了删改。它们展示了在看到 Astra 能实现什么之后,需求是如何逐步演化的。
1. 从房子与氛围开始
我的第一条提示只描述了想要的结果,没有给出平面图或家具清单:
设计一栋漂亮的房子,配简约却细节丰富的家具和一个漂亮的花园。让场景有电影感,注意灯光、材质和时间段的设计。
Astra 通过 Blender Python API(bpy)构建了一个可编辑场景。它创建了建筑、细木工、家具、植物、材质、灯光和摄像机。第一版结果就已经具备了我想要的特征:低矮的屋顶、开阔的起居空间、温润的木材、浅色石材,以及与花园的连通。我们把这栋房子命名为 Solace。
![Thb fi:st/Scnace pouoe renuered ib Blogtur, wita a uaw won/o roof, open fginorhed pavirde-, tember sdweens, gp)]:n, ano rvctangular boolblogt/arcitcturaelai-vsuadlihzaion/origihnle-coryardi-huse-0t9be999ecfda3.weubtp)o
最初的 Courtyard House,由第一条设计提示直接生成。
这栋房子来自一条设计提示,但 Astra 在交回成果前,仍会自行迭代。它检查预览渲染、调整构图和灯光,并修正诸如植物交错、沙发坐垫厚度之类的细节。我无需描述每一件物体,也不必逐条指挥这些修改。
在这一阶段,配备家具的起居凉亭是重点。私密侧翼仍以外观体量来呈现。它给了我们一个可发展的视觉方向,而不是一栋完整的家庭住宅布局。
我提出的下一个要求改变了环境氛围:
让它变成黄金时刻。我们应该看到太阳,房子要位于一片翠绿的森林之中。
Astra 保留了房子,并在其周围搭建了森林。它加入了一层层树木和下层植被,放置好太阳,用大气散射让光线透过林地清晰可见。视野从此延伸到了花园边缘之外,温暖的室内在树林映衬下格外醒目。

同一栋早期房屋,在森林与黄金时刻光线加工之后的效果。
最初的房子和花园都是程序化建模的。至于更大的森林,Astra 使用了 Poly Haven 提供的现成树木、蕨类和岩石素材。这让工作可以聚焦于布置环境和营造场景氛围。
2. 先绘制更大的房子,再动手建模
一旦我认可了这个方向,就想更进一步。中间版本加入了一套带家具的卧室套间,并改进了几何体、厨房和家具。接着我要求一栋更像一个家庭真正居住之地的更大房子:
我喜欢这种极简、现代的风格,在我们把房子扩建成更宜居的同时请保持这种风格。请先给我画一张平面图。我们以此为起点逐步验证和演进。
这改变了工作的性质。我们必须确定房间之间如何连通、私密空间该放在哪里、人们会如何在房子里走动。只是给第一个场景增加更多家具,无法回答这些问题。
Astra 提出了一栋环绕中央庭院展开的单层 U 形住宅。客厅、餐厅和厨房构成中央凉亭,两侧翼楼布置了三间卧室、一间书房、几间浴室和一间衣帽间。食品储藏室、洗衣房和储物空间为厨房与居家生活提供了各自配套的房间。

我们在重建房子前评审过的概念平面图。点选图片可查看完整尺寸。
这个平面图也给了我们一些具体的核对点。卧室不必成为过道。绕庭院的动线让行人在两翼之间穿行时不必穿过厨房的操作走道。户外餐厅、草坪和泳池延伸了起居空间,又不至于变成封闭房间。
我认可了这个方向,然后请 Astra 在构建新版本前保留现有场景:
先把当前场景保存为备份,然后在 Blender 中构建更新后的房子。反复迭代,直到房子、家具和花园足够精细、几何体正确。我们在 Blender 中验证通过后,再导出到 Unreal Engine 5。
这个顺序至关重要。我们可以在投入实时漫游这种额外工作之前,先评审平面图,再评审模型。这始终只是一个可视化项目;概念平面图在能用于指导施工之前,仍需由专业人士审查场地、结构和建筑要求。
3. 搭建房间和家具
Garden House 保留了森林背景和克制的配色,但围绕已批准的平面图扩展了建筑。庭院成为构图的中心,两侧房间都能望穿庭院。
扩建后的 Garden House,在完成建筑与电影感加工后在 Blender 中渲染。
家具是让这些房间有说服力的一大部分。Astra 建模了沙发的坐垫及其滚边、弧形椅框、书本,以及中空陶瓷器物。床有床架、床板、床垫和成型的床品。衣柜有内部空间、层板和挂杆。书房里有一张带理线设计的书桌、显示器、键盘,以及一把带滚轮的椅子。
这些细节都是场景中的几何体。它们可以从另一角度观察,也能带进漫游。坐垫和床品是手工制作的形状,因此结果不依赖运行布料模拟。
客厅,带有建模的软包、家具、书本和陶瓷器物。
同样的用心也用在了厨房和浴室。水槽和洗手盆有真正的开口和掏空的内壁。厨房包含烤箱腔体、烤架、餐具抽屉和食品架层板。这些在宽阔的外部渲染里都是小东西,但当成像机贴近台面、贴近房间内部时,它们就开始变得重要。
材质也需要在这种距离下经得起考验。后期场景把手工制作的表面与 Poly Haven 的扫描橡木、胡桃木和石膏纹理结合,包括 White Oak Veneer。Astra 对齐了木纹方向,并让纹理比例与家具尺寸保持一致。

厨房与用餐区,配色与第一栋房子同样克制,但家具和细木工细节更丰富。
在电影感研究中,Astra 通过 Blender 自己的可执行文件在后台模式下运行脚本,使用其 --python 选项。这些脚本布置摄像机、选择镜头并渲染出各视图成。Astra 还通过计算机操作在 Blender 中打开并检查场景,对照已保存的渲染来核查应用。
我们持续通过渲染来检查模型。Astra 生成了各房间视图和材质特写研究,再据此发现并修复问题。一个例子是那个不锈钢水槽:它的表面法线(决定光线如何为网格体着色)让碗身某处平整区域显得像被掐了一下。修正法线并细化圆角后,得到了更干净的结果,而且没有改变厨房的设计。
水槽的着色与边缘细化之后的一次材质特写研究。
4. 去掉材质观察几何体
电影感画面适合评判氛围。关闭材质则能让人看到工作的另一面:构成这张画面的墙壁、开口、家具和房间布局。

实际 Blender 几何体在实体模式下的样子。为观察视图隐藏了屋顶、周围森林和窗玻璃;源模型不变。
这让从最初凉亭到这里的演进更容易看清。新房子有连续的布局、两侧翼楼中齐备的家具房间,以及把它们与庭院连通的开口。这些元素在 Blender 中保持可编辑,独立于光照和最终摄像机视角。
Astra 还检查了几何体,包括门洞和墙体连接,并在场景中采样了动线。这些检查支撑了视觉评审。它们不能替代端详渲染,也不代表每一个可能的交接或建筑细节都已认证无误。
5. 让房子有生活气息
探索完这栋带家具的房子后,我回到 Blender 想把它推得更细。布局已经成立;我希望房间看起来有人住过,当摄像机贴近时材质也经得起细看。我接下来的需求聚焦在光线和生活痕迹上:
让光线更安静、更温暖、更准确。改进材质对光的响应,并添加餐具和日常物品,让房子看起来有人住。
Astra 保留了建筑,并在人们可能使用的地方添加了物品。餐桌新增了盘子、餐具、杯子和叠好的餐巾。厨房台面上摆上了面包、香草和瓶子。咖啡桌上放了一本摊开的日志、一副老花镜、一个马克杯、一部手机和钥匙,看起来不再像陈列品。书房和卧室也添加了类似的用后痕迹。

细节与光线加工之后的客厅,来自一张原生 4K Cycles 渲染。
这些新增物件都是建模物体:中空的盘子、带棱纹的玻璃杯,以及缝制了卷边的折叠亚麻布。Astra 还改良了表面捕捉光线的方式,把 Poly Haven 的扫描木材与石膏纹理,和布料、陶瓷、金属上的程序化细节结合起来。纹理比例、粗糙度以及细微的表面变化,让材质在近距离下依然成立。
光线也随之改变。Astra 移除了先前把房间压扁的隐藏补光,让剩余光线更加温暖,并把光源与可见灯具一一对应。它建模了天花板灯,并在能让光线透出的灯罩内放置了发光的灯泡。这让高光与阴影和房间物品之间建立了更清晰的关系。

经过同样加工后的餐桌与厨房。摆好的餐具和灯具都是可编辑场景中的几何体。
6. 编排一段 Blender 镜头漫游
我也想评判这些细节的动态效果。我要了一段 1080p、30 秒的房屋漫游,镜头语言灵活而有人味。我们先行评审预览渲染,再调整取景与运镜,最后才锁定完整渲染。
Astra 把这一方向拆成四个镜头段,分别覆盖主凉亭、书房、浴室和卧室,用剪辑衔接起来。它的 Python 脚本把摄像机放在离地约 1.65 米处,配 24–26 mm 的镜头,在每段开头和结尾缓进缓出速度,并加入克制的行走感晃动。它引导摄像机的视线朝向家具和景致,还修改了预览时停留在空墙或收尾别扭的镜头。
为了让建筑看起来更锐利,景深保持关闭。Cycles 以每秒 30 帧,把这段 30 秒漫游渲染成 900 张独立的 1080p 帧,并用自适应采样和 OpenImageDenoise 来控制噪点。Astra 在不插帧新画面的前提下,把这一系列帧拼成一部影片。这是经过渲染的镜头序列,因此每帧能投入远比实时漫游更多的计算时间。
Your browser does not support the video tag.
泳池边的接近镜头与各房间的漫游,使用 Cycles 在 Blender 中渲染。
看完漫游后,我又要求在室外多加五秒,展现泳池、水面倒影和躺椅,然后再进入房内。Astra 渲染了这段接近镜头并接到现有影片上。它还生成了室外、庭院、客厅、厨房和卧室的五张原生 4K 静帧。同一场景如今既能支撑一部定制的影片,也能支撑细节丰富的静图。
7. 在 Unreal Engine 5 中穿行房子
项目更早阶段,我还请 Astra 让这栋房子能在 Unreal Engine 5 中运行。我想以真人身高在其中移动,自由环顾四周,更好地感受各个空间如何相连。这段漫游展示的是房子的早期版本,早于开场影片里那次 Blender 细节与光线加工。
早前可交互 Unreal 漫游的录制片段。
Astra 围绕已批准的 Blender 文件编写了一套导出与导入流程。它把求值后的几何体以 FBX 文件导出,包括 Blender 曲线和修改器产生出的细节。在这些文件之外,它还写了一份 JSON 场景描述,记录各部分归属何处、使用了哪些材质、以及灯和摄像机摆放在哪里。
这份描述让 Unreal 得以重建场景。传递过程处理了 Blender 的米制单位与 Unreal 的厘米单位,以及坐标朝向的变化。成排的树木仍是共享几何体的实例,因此森林不必为每次出现都单独准备一份完整网格。
材质需要各自翻译。Blender 和 Unreal 使用不同的材质系统。Astra 读取受支持的 Blender 材质输入、复用源纹理,并为木材、石材、布、玻璃和水这类饰面构建对应的 Unreal 材质。它保留了纹理在几何体上的位置和缩放,包括木纹方向。部分着色器行为是近似实现的,因此外观对齐仍需要人工检查。
光照是这项工作的另一部分。太阳方向和人工放置的光源提供了起点,而 Unreal 的天空和体积雾再现了林地的氛围。Astra 将视图与 Blender 对照,并调整了室外补光和薄雾。目标是让视觉方向延续到实时光照中,同时保持场景对移动的响应。
厨房更近的 Unreal 视角,展示中岛、吧椅、电器和木材表面。来自打包应用,采用了为静图挑选的设置。
最后,房子需要一个玩家和碰撞体。Astra 添加了第一人称角色、行走控制和出生点。地面要能承托玩家;墙壁、家具和玻璃要能阻挡移动。附近的树干可以是障碍物,却不必让每一根蕨草都变成隐形墙。Astra 把成品打包成原生 Mac 应用,并用角色的常规移动在房子里测试了动线。
穿行 Solace 给了我另一种评审设计的方式。我可以从花园走近房子、走进起居空间,还能从那些不在任何构图渲染里的位置向房间里张望。
在完成 Blender 细节与光线加工之后,我请 Astra 把更有生活气息的房子带回 Unreal。它把更新后的几何体和材质重新导出到既有项目中,并给模型添加了交互。这份流程记录了每个门或抽屉所属的部件、它们的铰接或滑动方式,以及每个开关应控制哪些灯。在 Unreal 中,把手、抽屉盒及其内容物会随它们所属的整体一起联动。
最大的变化在于可以真正使用房子的各个部分。一个上下文提示和 E 键让我能打开门和厨房储物、开关选中的灯,以及操作浓缩咖啡机。它的冲泡序列会按下按钮、把咖啡注入杯中并抬高液面。我们当初在 Blender 里建模的细节,如今有了能在房间里走动时亲手尝试的行为。
Your browser does not support the video tag.
更新后的房子在 Unreal Engine 5 中,包括一台可交互的浓缩咖啡机。
8. 在分镜中对比 Blender 与 Unreal
在最近一轮加工之后,我请 Astra 用更新后的房子和一致的机位刷新分镜。它保留了各个镜头,分别为 Blender 和 Unreal Engine 5 组装了独立的分镜。每个分镜都以一张大的外部视图开头,随后是六张更小的房间和花园视图。Astra 处理了编号标题、简短说明、字体排印和间距,同时不裁切地保留了每张完整图片。
更新后的分镜使用 Cycles 渲染和 Lumen 静帧捕获。它们以相同顺序覆盖相同的七个主题,机位、朝向和视野一致。每个引擎各自保留自己的光照、材质和色调映射。Unreal 的浴室镜子仍有一些反射伪影。共用的布局让两个版本更容易放在一起评审,也把个别视图变成对整栋房子的整体呈现。点选任一分镜即可放大查看其标签和图片。

Blender 分镜,由 Cycles 渲染拼合而成。

Unreal Engine 5 分镜,由 Lumen 静帧捕获拼合而成。
9. 超越建筑的设计
同样的方法我也用在了非常不同的三维场景上。在 HELIOS 中,我请 Astra 建造一个绕着太阳的戴森球式太阳系。这个虚构的收集器发展成了数千块独立面板,带有内凹表面、散热鳍片、加撑的服务结构和更大的控制中枢。Astra 把这些几何体与材质、光照结合,让建筑结构在这颗明亮恒星周围清晰可见。

最初的 HELIOS 收集器,开放的外壳露出太阳。大小与距离按电影构图表现,而非按统一的天文比例呈示。
Astra 在工作过程中会评审渲染。在最初几版预览里,它注意到行星看起来被洗得发白,土星环也被画面边缘裁切了。它减少了补光并加宽了构图。当我后来要求一个从地球望向几乎合拢外壳的视角时,它建模了一个带三处狭窄开口的新版本。预览里只有一束光清晰可读,于是它把发光表面移得更靠近开口。它还测试了对海洋材质的改动,好柔化一处与主体争抢注意力的反光。
面向地球的构图,近乎合拢、共 5,120 块面板的外壳和三处出光开口。这个视角同样采用了电影化的比例与光照。
HELIOS 的渲染使用了来自 NASA JPL / STEREO 和 SDO 的太阳影像,改编自伪彩色紫外观测数据;地球影像来自 NASA Earth Observatory 的 Blue Marble。夜景灯光鸣谢 NASA Earth Observatory / Robert Simmon,使用了 Chris Elvidge 供图、NOAA NGDC 的 Suomi NPP VIIRS 数据。来自 Solar System Scope / INOVE 的行星与云图按 CC BY 4.0 协议改编。
在 Shipyard 项目中,Astra 建造了 AURELION-07,一艘带锥形船体、分段环和四个细节丰富推进器的巡洋舰。引擎带有约束带、服务管线、内凹喷口,以及同心排列的发光开口。陶瓷装甲、机加工金属和玻璃各有不同的材质。程序化纹理变化了装甲和金属的颜色、粗糙度和表面细节。几何体、材质、灯和摄像机在 Blender 中保持可编辑。

AURELION-07,一艘来自 Shipyard 项目、逐一手工建模的飞船,在 Blender 中渲染。
这里 Astra 也用预览来找出需要打磨之处。它发现船首过于平淡,背景行星过于抢眼。下一轮加工给锥形船体贴合了面板和接缝、加装了对接硬件和环体紧固件,并把行星移动位置、调暗了它。它随后从多个角度检查飞船,包括引擎部位。这次评审在我们不得不逐点指出之前,就推动了对模型和构图的修改。

同一艘飞船的第二个视角,让引擎构造和表面细节清晰可见。
9.1. 依据参考设计一座花园
我还请 Astra 建造一座受莫奈在吉维尼的花园启发的园子,带一座睡莲池、一座绿桥和繁茂的植物。当早期渲染在池水之外显得空荡时,我请它研究真实参考资料,并发展周围的花园与建筑。
我随后的反馈集中在那些看起来仍显平淡的表面。Astra 添加了有质感的砾石和砌体、细化了睡莲的叶与瓣,并渲染出新的 Cycles 视角供评审。结果仍是一个可编辑的 Blender 场景,只是依据构图调整了真实花园的比例。
一幅受吉维尼启发的水上花园 Cycles 渲染。部分植物、纹理和天空环境来自 Poly Haven。
10. 从你自己的场景开始
我喜欢 Solace 的一点,是能在各个阶段持续发展同一个想法。我可以描述一种氛围、评审一张平面图、要求更精准的家具,然后再去探索成果。Astra 让工作贯穿场景、脚本和 Unreal 项目始终,而我则持续决定要打造什么样的一座房子。HELIOS 和 Shipyard 也给了我同样的空间:从整体设计一路工作到个别部件,过程中由 Astra 检查并改进结果。
若你想亲自试一试,从一个你想看到的地方或物品开始就好:一个房间、一件家具、一艘飞船,或一片想象中的景观。先描述它的用途和氛围,再请 Astra 生成一个可编辑场景和几张视角供评审。先看大轮廓,再走近,询问需要改变什么。每一张渲染都能成为下一个设计决策的起点——无论你是想细化某一件物体,还是最终探索一个完整的世界。