跳到正文

使用 Astra 进行建筑可视化

本文目录文章开头

我从一个简单的房屋设计简报开始:极简但细节丰富的家具、一个花园,以及电影般的氛围。我请 Codex 中的 Astra 将这份简报转化为 Blender 中可编辑的 3D 场景。我们将其发展为一个带家具的家庭住宅,探索了 Unreal Engine 5 的版本,并不断打磨 Blender 场景,直到我能指挥一次镜头漫游。

第一个场景以一个带家具的起居亭为中心。后来我们为更大的家庭住宅设计了平面图,然后才建造其房间。在此过程中,我与 Astra 合作处理建筑、家具、材料和灯光,并利用每个版本来决定下一步的发展方向。最新的一轮添加了日常物品和更温暖的灯光,使房子感觉有人居住。

房屋的镜头漫游,使用 Blender 的 Cycles 渲染。

我收录了项目中的一些提示词,为长度和清晰度做了编辑。它们展示了随着我看到 Astra 能构建什么,简报是如何演变的。

从房屋和氛围开始

我的第一个提示词描述了我想要的结果,没有提供平面图或家具目录:

设计一座美丽的房子,配有极简但高度详细的家具和一个漂亮的花园。让场景具有电影感,灯光、材料和时间都经过精心考量。

Astra 通过 Blender Python API(bpy)构建了一个可编辑的场景。它创建了建筑、木工、家具、种植、材料、灯光和摄像机。第一个结果已经具备了我所寻找的低矮屋顶、开放式起居空间、温暖的木材、浅色石材以及与花园的连接。我们将这座房子命名为 Solace。

The first Solace house rendered in Blender, with a low white roof, open furnished pavilion, timber screens, garden, and rectangular pool

最初的 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 中现有的树木、蕨类和岩石资产。这让工作可以专注于布置环境并让场景感觉恰到好处。

在建模之前先绘制更大的房屋

一旦我喜欢这个方向,我就想更进一步。一个中间版本添加了带家具的卧室套件,并改进了几何结构、厨房和家具。然后我要求一座更大的房子,使其作为一个家庭居住的地方更加合理:

我喜欢极简、现代的风格,所以在我们把房子扩大到更宜居的同时保持这种风格。先给我画一张平面图。我们会从那里开始验证和改进它。

这改变了工作内容。我们必须决定房间如何连接、私密空间位于何处,以及人们如何在房子里走动。在第一个场景中添加更多家具无法回答这些问题。

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。

这个顺序很重要。我们可以先审阅平面图,然后再看模型,之后才承担实时漫游的额外工作。这仍然是一个可视化项目;概念平面图在用于指导施工之前,仍需要对场地、结构和建筑要求进行专业审查。

构建房间和家具

花园之家保留了森林环境和克制的色调,但围绕已批准的平面图扩展了建筑。庭院成为构图的中心,两侧的房间都能透过庭院看到对面的景色。

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

扩展后的花园之家,在完成建筑和电影级渲染处理后于 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 Veneis。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

水槽着色和边缘细化后的材质特写研究。

在不使用材质的情况下检查几何结构

电影感图像有助于判断氛围。关闭材质可以提供对作品的另一种观察方式:构成图像的墙壁、开口、家具和房间布局。

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 还检查了几何结构,包括门洞和墙壁连接,并采样了穿过场景的路线。这些检查支持了视觉审查。它们没有取代查看渲染,也不是对每个可能的交叉点或建筑细节都正确的认证。

让房子感觉有人居住

在探索了布置家具的房子后,我回到 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

同一遍处理后的餐桌和厨房。餐桌摆设和照明灯具是可编辑场景中的几何体。

指导 Blender 相机漫游

我还想在动态中评判这个细节。我要求制作一段 30 秒的房屋导览,1080p 分辨率,运镜要有动感且有人情味。我们先查看了预览渲染,然后在提交完整渲染之前调整了构图和运动。

Astra 将这一指示转化为四个镜头,分别覆盖主展馆、办公室、浴室和卧室,并通过剪辑连接。它的 Python 脚本将相机放置在离地约 1.65 米处,使用 24–26 毫米镜头,在每个镜头的开始和结束时缓入缓出,并加入了克制的行走晃动。它将相机的视线引向家具和景色,并修改了预览中停留在空白墙壁上或尴尬结束的镜头。

为了更清晰地呈现建筑,景深保持关闭。Cycles 使用自适应采样和 OpenImageDenoise 控制噪点,将这段 30 秒的导览渲染为 900 个独立的 1080p 帧,每秒 30 帧。Astra 将这些帧拼接成一部影片,没有插值生成新帧。这是一段渲染的相机序列,因此它可以在每一帧上花费比交互式漫游长得多的时间。

泳池边的接近过程和房间导览,使用 Blender 的 Cycles 渲染。

看完导览后,我要求在室外再增加五秒,展示泳池、水面倒影和躺椅,然后再进入房子。Astra 渲染了这段接近过程,并将其与现有影片连接起来。它还生成了五张原生 4K 静态图,分别是外观、庭院、客厅、厨房和卧室。同一个场景现在既能支撑一部导演影片,也能支撑精细的静态图像。

在 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 中建模的细节现在有了行为,我可以在穿过房间时尝试。

Unreal Engine 5 中更新后的房子,包括一台交互式咖啡机。

比较 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 静态捕获组装而成。

超越建筑的设计

我在截然不同的 3D 场景中使用了同样的方法。在 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 地球观测站的蓝色弹珠的地球图像。夜间灯光致谢 NASA 地球观测站 / Robert Simmon,使用 Suomi NPP VIIRS 数据,由 NOAA NGDC 的 Chris Elvidge 提供。来自 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

同一艘飞船的另一个视角,使引擎结构和表面细节清晰可见。

根据参考设计花园

我还让 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。

从你自己的场景开始

我喜欢 Solace 的地方在于,我可以在这些阶段中持续开发同一个想法。我可以描述一种氛围,查看平面图,要求更精确的家具,然后探索结果。Astra 负责场景、脚本和 Unreal 项目的工作,而我则持续决定想要构建什么样的空间。HELIOS 和 Shipyard 让我拥有同样的工作空间,从整体设计一直到单个部件,Astra 在此过程中不断检查和改进结果。

要进行你自己的实验,先从一个你想看到的地方或物体开始:一个房间、一件家具、一艘航天器,或一片想象中的风景。描述它的用途和氛围,然后请 Astra 提供一个可编辑的场景和几个视图供你查看。先看整体形状,然后靠近观察并询问需要改变什么。每次渲染都可以成为下一个设计决策的起点,无论你是想完善一个物体,还是最终探索整个世界。

阅读显示设置

调整正文排版

当前浏览器记住选择,应用于文章正文。手机上正文宽度以屏幕可用空间为限。

图表完整性提示

普通文章遇到图表保存问题时显示提示。