使用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 保留了房子,并在其周围搭建了森林。它加入了一层层树木和下层植被,放置好太阳,用大气散射让光线透过林地清晰可见。视野从此延伸到了花园边缘之外,温暖的室内在树林映衬下格外醒目。

The original Solace pavilion surrounded by dense woodland, with low sunlight filtering through the trees toward the pool and illuminated living room

同一栋早期房屋,在森林与黄金时刻光线加工之后的效果。

最初的房子和花园都是程序化建模的。至于更大的森林,Astra 使用了 Poly Haven 提供的现成树木、蕨类和岩石素材。这让工作可以聚焦于布置环境和营造场景氛围。

2. 先绘制更大的房子,再动手建模

一旦我认可了这个方向,就想更进一步。中间版本加入了一套带家具的卧室套间,并改进了几何体、厨房和家具。接着我要求一栋更像一个家庭真正居住之地的更大房子:

我喜欢这种极简、现代的风格,在我们把房子扩建成更宜居的同时请保持这种风格。请先给我画一张平面图。我们以此为起点逐步验证和演进。

这改变了工作的性质。我们必须确定房间之间如何连通、私密空间该放在哪里、人们会如何在房子里走动。只是给第一个场景增加更多家具,无法回答这些问题。

Astra 提出了一栋环绕中央庭院展开的单层 U 形住宅。客厅、餐厅和厨房构成中央凉亭,两侧翼楼布置了三间卧室、一间书房、几间浴室和一间衣帽间。食品储藏室、洗衣房和储物空间为厨房与居家生活提供了各自配套的房间。

Solace Garden House concept floor plan: a central living, dining, and kitchen pavilion, three bedrooms and an office in two wings, a planted courtyard, and a pool terrace

我们在重建房子前评审过的概念平面图。点选图片可查看完整尺寸。

这个平面图也给了我们一些具体的核对点。卧室不必成为过道。绕庭院的动线让行人在两翼之间穿行时不必穿过厨房的操作走道。户外餐厅、草坪和泳池延伸了起居空间,又不至于变成封闭房间。

我认可了这个方向,然后请 Astra 在构建新版本前保留现有场景:

先把当前场景保存为备份,然后在 Blender 中构建更新后的房子。反复迭代,直到房子、家具和花园足够精细、几何体正确。我们在 Blender 中验证通过后,再导出到 Unreal Engine 5。

这个顺序至关重要。我们可以在投入实时漫游这种额外工作之前,先评审平面图,再评审模型。这始终只是一个可视化项目;概念平面图在能用于指导施工之前,仍需由专业人士审查场地、结构和建筑要求。

3. 搭建房间和家具

Garden House 保留了森林背景和克制的配色,但围绕已批准的平面图扩展了建筑。庭院成为构图的中心,两侧房间都能望穿庭院。

The expanded U-shaped Garden House rendered in Blender, with two furnished wings facing a planted courtyard and pool in the forest

扩建后的 Garden House,在完成建筑与电影感加工后在 Blender 中渲染。

家具是让这些房间有说服力的一大部分。Astra 建模了沙发的坐垫及其滚边、弧形椅框、书本,以及中空陶瓷器物。床有床架、床板、床垫和成型的床品。衣柜有内部空间、层板和挂杆。书房里有一张带理线设计的书桌、显示器、键盘,以及一把带滚轮的椅子。

这些细节都是场景中的几何体。它们可以从另一角度观察,也能带进漫游。坐垫和床品是手工制作的形状,因此结果不依赖运行布料模拟。

A Blender render of the Garden House living room showing the shaped sofa cushions, rounded coffee table, floor lamp, books, and ceramics on a full-height timber bookcase

客厅,带有建模的软包、家具、书本和陶瓷器物。

同样的用心也用在了厨房和浴室。水槽和洗手盆有真正的开口和掏空的内壁。厨房包含烤箱腔体、烤架、餐具抽屉和食品架层板。这些在宽阔的外部渲染里都是小东西,但当成像机贴近台面、贴近房间内部时,它们就开始变得重要。

材质也需要在这种距离下经得起考验。后期场景把手工制作的表面与 Poly Haven 的扫描橡木、胡桃木和石膏纹理结合,包括 White Oak Veneer。Astra 对齐了木纹方向,并让纹理比例与家具尺寸保持一致。

The Garden House kitchen and dining room rendered in Blender, with a timber dining table, curved chairs, pale island, brass tap, and large windows looking into the forest

厨房与用餐区,配色与第一栋房子同样克制,但家具和细木工细节更丰富。

在电影感研究中,Astra 通过 Blender 自己的可执行文件在后台模式下运行脚本,使用其 --python 选项。这些脚本布置摄像机、选择镜头并渲染出各视图成。Astra 还通过计算机操作在 Blender 中打开并检查场景,对照已保存的渲染来核查应用。

我们持续通过渲染来检查模型。Astra 生成了各房间视图和材质特写研究,再据此发现并修复问题。一个例子是那个不锈钢水槽:它的表面法线(决定光线如何为网格体着色)让碗身某处平整区域显得像被掐了一下。修正法线并细化圆角后,得到了更干净的结果,而且没有改变厨房的设计。

Close Blender render of the kitchen sink with a hollow steel bowl, rounded rim, brass tap, pale countertop, and oak cabinet front

水槽的着色与边缘细化之后的一次材质特写研究。

4. 去掉材质观察几何体

电影感画面适合评判氛围。关闭材质则能让人看到工作的另一面:构成这张画面的墙壁、开口、家具和房间布局。

Untextured solid view of the actual Garden House Blender model, with the roof and surrounding forest hidden to reveal the U-shaped layout and furnished rooms

实际 Blender 几何体在实体模式下的样子。为观察视图隐藏了屋顶、周围森林和窗玻璃;源模型不变。

这让从最初凉亭到这里的演进更容易看清。新房子有连续的布局、两侧翼楼中齐备的家具房间,以及把它们与庭院连通的开口。这些元素在 Blender 中保持可编辑,独立于光照和最终摄像机视角。

Astra 还检查了几何体,包括门洞和墙体连接,并在场景中采样了动线。这些检查支撑了视觉评审。它们不能替代端详渲染,也不代表每一个可能的交接或建筑细节都已认证无误。

5. 让房子有生活气息

探索完这栋带家具的房子后,我回到 Blender 想把它推得更细。布局已经成立;我希望房间看起来有人住过,当摄像机贴近时材质也经得起细看。我接下来的需求聚焦在光线和生活痕迹上:

让光线更安静、更温暖、更准确。改进材质对光的响应,并添加餐具和日常物品,让房子看起来有人住。

Astra 保留了建筑,并在人们可能使用的地方添加了物品。餐桌新增了盘子、餐具、杯子和叠好的餐巾。厨房台面上摆上了面包、香草和瓶子。咖啡桌上放了一本摊开的日志、一副老花镜、一个马克杯、一部手机和钥匙,看起来不再像陈列品。书房和卧室也添加了类似的用后痕迹。

Later Blender render of the living room, with warm shelf lighting, timber grain, cushions, and an open journal, mug, phone, and keys on the coffee table

细节与光线加工之后的客厅,来自一张原生 4K Cycles 渲染。

这些新增物件都是建模物体:中空的盘子、带棱纹的玻璃杯,以及缝制了卷边的折叠亚麻布。Astra 还改良了表面捕捉光线的方式,把 Poly Haven 的扫描木材与石膏纹理,和布料、陶瓷、金属上的程序化细节结合起来。纹理比例、粗糙度以及细微的表面变化,让材质在近距离下依然成立。

光线也随之改变。Astra 移除了先前把房间压扁的隐藏补光,让剩余光线更加温暖,并把光源与可见灯具一一对应。它建模了天花板灯,并在能让光线透出的灯罩内放置了发光的灯泡。这让高光与阴影和房间物品之间建立了更清晰的关系。

Later Blender render of the kitchen and dining room, with a set table, ribbed glasses, folded napkins, timber furniture, and warm light from modeled ceiling fixtures

经过同样加工后的餐桌与厨房。摆好的餐具和灯具都是可编辑场景中的几何体。

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 Engine 5 still of the Garden House kitchen showing a pale island, curved timber stools, oven, coffee machine, sink, and woodland through the windows

厨房更近的 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 storyboard for the Garden House, with a large woodland exterior above six labeled images of the living room, kitchen, office, bedroom, bathroom, and garden

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

Unreal Engine 5 storyboard for the Garden House, using the same seven subject labels and layout with still captures of the exterior, rooms, and courtyard

Unreal Engine 5 分镜,由 Lumen 静帧捕获拼合而成。

9. 超越建筑的设计

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

Blender render of HELIOS showing a bright Sun inside an open spherical structure of triangular collector panels, trusses, and machinery, with planets around it

最初的 HELIOS 收集器,开放的外壳露出太阳。大小与距离按电影构图表现,而非按统一的天文比例呈示。

Astra 在工作过程中会评审渲染。在最初几版预览里,它注意到行星看起来被洗得发白,土星环也被画面边缘裁切了。它减少了补光并加宽了构图。当我后来要求一个从地球望向几乎合拢外壳的视角时,它建模了一个带三处狭窄开口的新版本。预览里只有一束光清晰可读,于是它把发光表面移得更靠近开口。它还测试了对海洋材质的改动,好柔化一处与主体争抢注意力的反光。

Blender render of a nearly closed HELIOS collector with three shafts of light escaping above Earth's curved horizon and illuminated cities

面向地球的构图,近乎合拢、共 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 中保持可编辑。

Blender render of AURELION-07's tapered ceramic hull, supporting struts, and segmented ring against a blue planet

AURELION-07,一艘来自 Shipyard 项目、逐一手工建模的飞船,在 Blender 中渲染。

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

Rear Blender render of AURELION-07 showing four detailed drive pods with service lines, metal bands, and luminous concentric nozzles

同一艘飞船的第二个视角,让引擎构造和表面细节清晰可见。

9.1. 依据参考设计一座花园

我还请 Astra 建造一座受莫奈在吉维尼的花园启发的园子,带一座睡莲池、一座绿桥和繁茂的植物。当早期渲染在池水之外显得空荡时,我请它研究真实参考资料,并发展周围的花园与建筑。

我随后的反馈集中在那些看起来仍显平淡的表面。Astra 添加了有质感的砾石和砌体、细化了睡莲的叶与瓣,并渲染出新的 Cycles 视角供评审。结果仍是一个可编辑的 Blender 场景,只是依据构图调整了真实花园的比例。

Blender render of a Giverny-inspired garden, with a green Japanese bridge over a reflective lily pond, pink and white flowers, and dense willow foliage

一幅受吉维尼启发的水上花园 Cycles 渲染。部分植物、纹理和天空环境来自 Poly Haven。

10. 从你自己的场景开始

我喜欢 Solace 的一点,是能在各个阶段持续发展同一个想法。我可以描述一种氛围、评审一张平面图、要求更精准的家具,然后再去探索成果。Astra 让工作贯穿场景、脚本和 Unreal 项目始终,而我则持续决定要打造什么样的一座房子。HELIOS 和 Shipyard 也给了我同样的空间:从整体设计一路工作到个别部件,过程中由 Astra 检查并改进结果。

若你想亲自试一试,从一个你想看到的地方或物品开始就好:一个房间、一件家具、一艘飞船,或一片想象中的景观。先描述它的用途和氛围,再请 Astra 生成一个可编辑场景和几张视角供评审。先看大轮廓,再走近,询问需要改变什么。每一张渲染都能成为下一个设计决策的起点——无论你是想细化某一件物体,还是最终探索一个完整的世界。