使用 Astra 进行建筑可视化
我从一个简单的房屋设计简报开始:极简但细节丰富的家具、一个花园,以及电影般的氛围。我请 Codex 中的 Astra 将这份简报转化为 Blender 中可编辑的 3D 场景。我们将其发展为一个带家具的家庭住宅,探索了 Unreal Engine 5 的版本,并不断打磨 Blender 场景,直到我能指挥一次镜头漫游。
第一个场景以一个带家具的起居亭为中心。后来我们为更大的家庭住宅设计了平面图,然后才建造其房间。在此过程中,我与 Astra 合作处理建筑、家具、材料和灯光,并利用每个版本来决定下一步的发展方向。最新的一轮添加了日常物品和更温暖的灯光,使房子感觉有人居住。
房屋的镜头漫游,使用 Blender 的 Cycles 渲染。
我收录了项目中的一些提示词,为长度和清晰度做了编辑。它们展示了随着我看到 Astra 能构建什么,简报是如何演变的。
从房屋和氛围开始
我的第一个提示词描述了我想要的结果,没有提供平面图或家具目录:
设计一座美丽的房子,配有极简但高度详细的家具和一个漂亮的花园。让场景具有电影感,灯光、材料和时间都经过精心考量。
Astra 通过 Blender Python API(bpy)构建了一个可编辑的场景。它创建了建筑、木工、家具、种植、材料、灯光和摄像机。第一个结果已经具备了我所寻找的低矮屋顶、开放式起居空间、温暖的木材、浅色石材以及与花园的连接。我们将这座房子命名为 Solace。
最初的 Courtyard House,由第一个设计提示词交付。
这座房子来自一个设计提示词,但 Astra 在交回之前仍然对自己的作品进行了迭代。它检查了预览渲染,调整了构图和灯光,并纠正了诸如种植交叉和沙发上的毯子等细节。我不必描述每个物体或指挥每一项改动。
在这个阶段,带家具的起居亭是焦点。私密侧翼仍以外部体量的形式呈现。它为我们提供了一个可以发展的视觉方向,而不是一个完整的家庭住宅布局。
我的下一个请求改变了场景:
让它变成黄金时刻。我们应该能看到太阳,房子应该位于一片翠绿森林的中央。
Astra 保留了房子,并在其周围建造了森林。它添加了树木和下层植被的层次,放置了太阳,并使用大气散射使光线在林间可见。视野现在在花园边缘之外有了深度,温暖的室内在树木中脱颖而出。
经过森林和黄金时刻灯光处理后的同一座早期房屋。
最初的房屋及其花园是程序化建模的。对于更大的森林,Astra 使用了 Poly Haven 中现有的树木、蕨类和岩石资产。这让工作可以专注于布置环境并让场景感觉恰到好处。
在建模之前先绘制更大的房屋
一旦我喜欢这个方向,我就想更进一步。一个中间版本添加了带家具的卧室套件,并改进了几何结构、厨房和家具。然后我要求一座更大的房子,使其作为一个家庭居住的地方更加合理:
我喜欢极简、现代的风格,所以在我们把房子扩大到更宜居的同时保持这种风格。先给我画一张平面图。我们会从那里开始验证和改进它。
这改变了工作内容。我们必须决定房间如何连接、私密空间位于何处,以及人们如何在房子里走动。在第一个场景中添加更多家具无法回答这些问题。
Astra 提议围绕一个种植庭院建造一座单层 U 形住宅。客厅、餐厅和厨房构成中央主体。两翼包含三间卧室、一间办公室、浴室和一间更衣室。食品储藏室、洗衣房和储物空间为厨房和家务提供了各自的辅助房间。
我们在重建房屋之前审阅的概念平面图。点击图片可查看全尺寸。
平面图还给了我们具体的检查事项。卧室不应变成通道。围绕庭院的路线使两翼之间的移动避开了厨房的工作过道。户外用餐区、草坪和泳池延伸了生活空间,而没有变成封闭的房间。
我批准了这个方向,并要求 Astra 在构建新版本之前保留现有场景:
保留当前场景作为备份,然后在 Blender 中构建更新后的房屋。不断迭代,直到房屋、家具和花园都足够精细且几何结构正确。一旦我们在 Blender 中验证通过,就会将其导出到 Unreal Engine 5。
这个顺序很重要。我们可以先审阅平面图,然后再看模型,之后才承担实时漫游的额外工作。这仍然是一个可视化项目;概念平面图在用于指导施工之前,仍需要对场地、结构和建筑要求进行专业审查。
构建房间和家具
花园之家保留了森林环境和克制的色调,但围绕已批准的平面图扩展了建筑。庭院成为构图的中心,两侧的房间都能透过庭院看到对面的景色。
扩展后的花园之家,在完成建筑和电影级渲染处理后于 Blender 中渲染。
家具是让这些房间令人信服的重要部分。Astra 建模了沙发坐垫及其滚边、弧形椅架、书籍和中空的陶瓷器皿。床有框架、板条、床垫和成型的床品。衣柜有内部结构、搁板和挂衣杆。办公室有一张带理线功能的书桌、显示器、键盘和带脚轮的椅子。
这些细节是场景中的几何体。它们可以从另一个角度检视,并被带入漫游中。坐垫和床品是手工创建的形状,因此结果不依赖于运行布料模拟。
客厅,包含建模的软装、家具、书籍和陶瓷。
同样的用心也投入到了厨房和浴室。水槽和面盆有真实的开口和中空的盆体。厨房包括烤箱内腔、烤架、餐具抽屉和食品储藏室搁板。在宽广的外观渲染中,这些是微小的细节,但当镜头足够近,可以看清台面或房间内部时,它们就开始变得重要。
材质也需要在那个距离下表现出色。后来的场景将手工创建的饰面与来自 Poly Haven 的扫描橡木、胡桃木和石膏纹理相结合,包括 White Oak Veneis。Astra 对齐了木材纹理,并保持纹理比例与家具尺寸一致。
厨房和用餐区,采用与第一栋房屋相同的克制色调,家具和细木工细节更加丰富。
在电影感研究中,Astra 通过 Blender 自带的可执行文件在后台模式运行脚本,使用其 --python 选项。这些脚本放置摄像机、选择镜头并渲染视图。Astra 还通过计算机操作在 Blender 中打开并检查场景,将应用程序与已保存的渲染进行对照。
我们持续通过渲染来检查模型。Astra 生成了房间的视图和材质的特写研究,然后用它们来发现并修复问题。一个例子是钢制水槽:其表面法线(决定光线如何为网格着色)使水槽碗的一个平坦部分看起来被挤压了。修正法线并细化圆润边缘后,得到了更干净的结果,同时没有改变厨房的设计。
水槽着色和边缘细化后的材质特写研究。
在不使用材质的情况下检查几何结构
电影感图像有助于判断氛围。关闭材质可以提供对作品的另一种观察方式:构成图像的墙壁、开口、家具和房间布局。
实际的 Blender 几何结构(实体模式)。屋顶、周围的森林和窗格在此检查视图中被隐藏;源模型未被更改。
这使得从第一个展馆开始的演进更容易看清。新房子拥有连续的布局,两翼都有布置家具的房间,以及连接它们与庭院的开口。这些元素在 Blender 中保持可编辑,独立于灯光和最终摄像机视图。
Astra 还检查了几何结构,包括门洞和墙壁连接,并采样了穿过场景的路线。这些检查支持了视觉审查。它们没有取代查看渲染,也不是对每个可能的交叉点或建筑细节都正确的认证。
让房子感觉有人居住
在探索了布置家具的房子后,我回到 Blender 进一步推进细节。布局已经奏效;我希望房间感觉有人居住,材质在摄像机靠近时也能经受住考验。我的下一个任务侧重于光线和日常生活的痕迹:
让光线更安静、更温暖、更准确。改进材质对光线的响应,并添加餐具和日常物品,让房子感觉有人居住。
Astra 保留了建筑结构,并在可能有人使用的地方添加了物品。餐桌上增加了盘子、餐具、玻璃杯和折叠的餐巾。厨房的台面上有面包、香草和瓶子。一本摊开的日记、一副老花镜、一个马克杯、一部手机和钥匙让咖啡桌看起来不那么像展品。办公室和卧室也增加了类似的使用痕迹。
细节和灯光处理后的客厅,来自原生 4K Cycles 渲染。
这些添加物是建模的物体:中空的餐具、带棱纹的玻璃杯,以及带有缝制边缘的折叠亚麻布。Astra 还细化了表面捕捉光线的方式,将来自 Poly Haven 的扫描木材和灰泥纹理与织物、陶瓷和金属的程序化细节相结合。纹理比例、粗糙度和细微的表面变化帮助材质在近距离下呈现出真实感。
光线也随之改变。Astra 移除了使房间显得平淡的隐藏补光灯,让剩余的光线变暖,并使光源与可见的灯具相匹配。它对天花板灯具进行了建模,并在透光的灯罩内放置了发光的灯泡。这使得高光和阴影与房间中的物体之间的关系更加清晰。
同一遍处理后的餐桌和厨房。餐桌摆设和照明灯具是可编辑场景中的几何体。
指导 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 中厨房的近景,展示了岛台、吧凳、电器和木质表面。从打包好的应用程序中捕获,采用为静态图像选择的设置。
最后,房子需要一个玩家和碰撞体。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 故事板,由 Cycles 渲染组装而成。
Unreal Engine 5 故事板,由 Lumen 静态捕获组装而成。
超越建筑的设计
我在截然不同的 3D 场景中使用了同样的方法。在 HELIOS 中,我让 Astra 构建了一个太阳系,并在太阳周围建造了一个戴森球。这个虚构的收集器由数千个独立面板组成,带有凹陷表面、散热片、支撑服务结构和更大的控制枢纽。Astra 将这一几何结构与材质和光照相结合,使这座建筑在明亮的恒星周围清晰可见。
HELIOS 原始收集器,开放式外壳露出太阳。其尺寸和距离是为电影效果而构图的,并非按统一的天文比例呈现。
Astra 在工作过程中会查看渲染结果。在最初的预览中,它注意到行星看起来发白,土星环被画面裁切了。它降低了补光并扩大了构图。当我后来要求从地球视角、外壳几乎闭合时,它建模了一个带有三个狭窄开口的新版本。预览中只有一束光线清晰可见,因此它将发光表面移得更靠近开口。它还测试了海洋材质的修改,以柔化与主体竞争的反光。
朝向地球的构图,外壳由 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 中保持可编辑。
AURELION-07,Shipyard 项目中单独建模的飞船,在 Blender 中渲染。
在这里,Astra 同样利用预览来识别需要改进的地方。它发现船头过于朴素,背景行星过于突出。下一轮迭代为锥形船体添加了面板和接缝,增加了对接硬件和环形紧固件,并移动和调暗了行星。随后它从多个角度检查飞船,包括引擎。这次审查在我不必逐一指出细节之前,就促成了模型和构图的修改。
同一艘飞船的另一个视角,使引擎结构和表面细节清晰可见。
根据参考设计花园
我还让 Astra 构建一个灵感源自莫奈在吉维尼花园的花园,包含睡莲池、绿色桥梁和茂密的植被。当早期渲染中池塘之外显得空旷时,我要求它研究真实参考并开发周围的花园和建筑。
我接下来的反馈是关于那些看起来仍然很平的表面。Astra 添加了有纹理的砾石和砖石,细化了睡莲的叶片和花瓣,并渲染了新的 Cycles 视图供审查。结果仍然是一个可编辑的 Blender 场景,真实花园的比例为构图进行了调整。
这是使用 Cycles 渲染的吉维尼风格水上花园。所选植物、纹理和天空环境均来自 Poly Haven。
从你自己的场景开始
我喜欢 Solace 的地方在于,我可以在这些阶段中持续开发同一个想法。我可以描述一种氛围,查看平面图,要求更精确的家具,然后探索结果。Astra 负责场景、脚本和 Unreal 项目的工作,而我则持续决定想要构建什么样的空间。HELIOS 和 Shipyard 让我拥有同样的工作空间,从整体设计一直到单个部件,Astra 在此过程中不断检查和改进结果。
要进行你自己的实验,先从一个你想看到的地方或物体开始:一个房间、一件家具、一艘航天器,或一片想象中的风景。描述它的用途和氛围,然后请 Astra 提供一个可编辑的场景和几个视图供你查看。先看整体形状,然后靠近观察并询问需要改变什么。每次渲染都可以成为下一个设计决策的起点,无论你是想完善一个物体,还是最终探索整个世界。