跳到正文
北京时间
原文
OpenAI Developers:Blog(网页)·· 26 天前精选AI 评分61

用 Astra 在 Blender 中从一段描述搭建可编辑 3D 房屋场景

Architectural visualization with Astra

AI 导读

OpenAI Developers 博客展示作者用 Codex 中的 Astra 将一段房屋设计简报逐步发展为可编辑的 Blender 3D 场景,涵盖建筑、家具、材质、灯光与地板图,并经 Cycles 渲染出 30 秒 900 帧 1080p 相机漫游。

推荐理由

作者完整记录了用 Astra 在 Blender 与 Unreal Engine 5 中迭代搭建可编辑 3D 场景的流程、提示词与导出管线,方法可迁移到自己的场景设计项目。

正文 · AI 翻译

我从一个简单的房屋需求开始:极简但细节丰富的家具、一个花园,以及电影般的氛围。我让 Codex 中的 Astra 把这个需求变成 Blender 中可编辑的 3D 场景。我们把它发展成了一栋带家具的家庭住宅,在 Unreal Engine 5 中探索了一个版本,并不断打磨 Blender 场景,直到我能导演一场穿越其中的镜头巡游。

第一个场景以一座带家具的起居亭为中心。后来我们为一栋更大的家庭住宅制定了平面图,然后才建造它的各个房间。在此过程中,我与 Astra 一起处理建筑、家具、材质和照明,用每个版本决定下一步要开发什么。最新一轮添加了日常物品和更温暖的照明,让这栋房子有了生活气息。

房屋的镜头巡游,使用 Cycles 在 Blender 中渲染。

我收录了项目中的几条提示词,为长度和清晰度做了编辑。它们展示了随着我看到 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。

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

构建房间和家具

Garden House 保留了森林环境和克制的色调,但围绕已批准的平面图扩展了建筑。庭院成为构图的中心,两侧的房间都可以眺望庭院。

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

经过建筑和电影化收尾处理后在 Blender 中渲染的扩展版 Garden House。

家具是让这些房间显得逼真的重要部分。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

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

在不带材质的情况下检查几何体

电影级图像有助于判断氛围。关闭材质则提供了工作的另一个视角:产生图像的墙壁、开口、家具和房间布局。

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 以每秒 30 帧渲染了这段 30 秒导览,共 900 张独立的 1080p 帧,使用自适应采样和 OpenImageDenoise 控制噪点。Astra 将这些帧合成为影片,没有插值生成新帧。这是一个渲染的摄像机序列,因此每帧的渲染时间可以比交互式漫游长得多。

泳池边的接近镜头和房间导览,使用 Cycles 在 Blender 中渲染。

看完导览后,我要求增加五秒钟的室外镜头,展示泳池、水面倒影和躺椅,然后进入房屋。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 Earth Observatory 的 Blue Marble 的地球图像。夜间灯光 归功于 NASA Earth Observatory / Robert Simmon,使用了 Suomi NPP VIIRS 数据,由 Chris Elvidge、NOAA NGDC 提供。来自 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 提供一个可编辑的场景和几个视图供你查看。先看整体形状,然后靠近并询问需要改变什么。每一次渲染都可以成为下一个设计决策的起点,无论你是想完善一个物体,还是最终探索整个世界。

来源:OpenAI Developers:Blog(网页) · developers.openai.com