从建筑的参数化设计到虚幻引擎中的关卡构建
从建筑的参数化设计到虚幻引擎的关卡构建,是设计逻辑与数字平台的跨域融合。首先,设计师借助 Rhino3D(RH)与Grasshopper(GH) 进行参数化建模,通过参数驱动控制复杂几何形态,结合 Python 脚本与自定义工具 将设计逻辑转化为可执行的建模过程。此阶段,AI 工具也可辅助方案生成与效率提升。完成的三维成果以 FBX 和CSV模型信息导出,作为虚幻引擎可识别的基础资产。
在 Unreal Engine(UE) 中,设计成果通过 Editor Utility Widget(EUW) 等构建辅助工具实现二次编辑与场景布局。此环节不仅涉及建筑物体的材质处理,还需整合光影与环境氛围的塑造,并进一步引入 场景特效(VFX),如气候、光影、云雾等,以增强空间的沉浸感。同时,角色维度通过 MetaHuman 技术实现。
这一流程清晰展示了:以参数化思维出发,依托脚本与建模工具生成三维模型,经数据转化进入虚幻引擎,最终完成空间搭建与关卡设计,不仅实现了建筑设计与游戏引擎的技术贯通,也为建筑可视化、虚拟现实及数字孪生提供了方法论路径,凸显了参数化、模型数据化与虚拟构建之间的紧密关系
  
  
    
       
    
  
[UE-VN] 01_从建筑的参数化设计到虚幻引擎中的关卡构建
从建筑的参数化设计到虚幻引擎的关卡构建,是设计逻辑与数字平台的跨域融合。首先,设计师借助 Rhino3D(RH)与Grasshopper(GH) 进行参数化建模,通过参数驱动控制复杂几何形态,结合 Python 脚本与自定义工具 将设计逻辑转化为可执行的建模过程。此阶段,AI 工具也可辅助方案生成与效率提升。完成的三维成果以 FBX 和CSV模型信息导出,作为虚幻引擎可识别的基础资产。
在 Unreal Engine(UE) 中,设计成果通过 Editor Utility Widget(EUW) 等构建辅助工具实现二次编辑与场景布局。此环节不仅涉及建筑物体的材质处理,还需整合光影与环境氛围的塑造,并进一步引入 场景特效(VFX),如气候、光影、云雾等,以增强空间的沉浸感。同时,角色维度通过 MetaHuman 技术实现。
这一流程清晰展示了:以参数化思维出发,依托脚本与建模工具生成三维模型,经数据转化进入虚幻引擎,最终完成空间搭建与关卡设计,不仅实现了建筑设计与游戏引擎的技术贯通,也为建筑可视化、虚拟现实及数字孪生提供了方法论路径,凸显了参数化、模型数据化与虚拟构建之间的紧密关系
[UE-VN] 02_系统解释 [从建筑的参数化设计到虚幻引擎中的关卡构建]
在学习任何一门知识时,首先从整体结构与流程出发去理解,是最有效的切入点。知识体系就像一张地图,如果我们先看到全貌,就能明确各个部分之间的联系、层次与作用,从而避免陷入孤立的细节学习而迷失方向。整体把握不仅能帮助我们在头脑中建立清晰的框架,还能让后续的逐步学习有明确的定位:当接触某个具体概念或技能时,我们能够快速判断它在整体中的位置,理解它与前后知识点的衔接关系,从而大幅提升学习效率和理解深度。换句话说,系统化的整体认知为细节学习提供了坐标和路径,使得学习过程更有逻辑性和连贯性,最终能够构建起完整的知识网络。
整体流程从建筑的参数化设计出发,经过三维建模与数据输出,再利用自动化工具进行优化,并导入进虚幻引擎,用自定义的EUW工具和C++类进行关卡构建。C++、Python、Grasshopper、Blueprint 等语言和工具在其中各展所长,AI 工具与自定义插件提供了重要的辅助支持。通过这一系列衔接,我们实现了从参数逻辑到三维模型,再到沉浸式虚拟关卡的完整转化与构建。
[UE-VN] 03_建筑的参数化设计——详细过程 [从建筑的参数化设计到虚幻引擎中的关卡构建]
该节课程主要围绕建筑空间设计与参数化实践展开,强调了建筑设计不仅仅是元素的堆砌,而是要通过空间的围合与组合形成有机整体。并指出,游戏场景与真实建筑的差别在于是否具备完整的空间逻辑,尤其在涉及数字孪生与BIM时,更需考虑管线、能耗与安全等系统化配置。文中以Rhino与Grasshopper结合为例,介绍了如何通过设计参考结构线与Moths插件实现快速生成墙体、楼板、楼梯、窗体等要素,降低编程门槛并增强可控性。Moths组件通过参数暴露与封装,使设计师能够灵活调整栏杆高度、截面尺寸或窗体分布,从而实现多样化的空间构造。强调AI在参数化编程中的辅助价值,既能解释复杂节点逻辑,又能逐步替代传统逐行代码的编写方式,推动“自然语言—AI—代码—空间生成”的新范式。整体而言,此次课程展现了建筑设计由人工经验向参数化、智能化与AI驱动转型的趋势,突出了空间逻辑、工具应用与未来设计方式的融合与演进。
[UE-VN] 04_从 Rhino3D 导出模型与数据,用于 UE 导入 [从建筑的参数化设计到虚幻引擎中的关卡构建]
在设计完成后,为了实现从 Rhino 与 Grasshopper 向 Unreal Engine 的跨平台工作流,需要进行一系列有序的准备与数据处理。首先,设计对象应按类别分层管理,并通过 GH 的 Merge 组件统一输出,以便一次性 bake 到 Rhino 的层中。这不仅提升了组织效率,也为后续导入 UE 打下了基础。分层与命名的核心价值在于,在 UE 中可通过层名前缀统一管理静态网格资产,实现批量赋材质或其他统一操作。由于 Rhino 使用米制而 UE 以厘米制为标准,因此必须在导出前转换单位,并保持对象尺寸不变。另一个关键环节是命名与定位。Bake 后的对象默认无名,需要通过重命名功能进行批量规范命名,避免重复冲突,并为后续在 UE 中的调用与管理提供便利。同时,几何体需要空间定位信息才能在 UE 中准确重组,因此采用外接矩形八点坐标法生成定位数据,并以 CSV 文件形式导出。该功能既可通过 C# 编写 RH 插件实现,也能用 Python 脚本完成,前者可直接安装使用,后者适合灵活调用。无论语言选择如何,其核心逻辑均在于遍历对象、解析图层与名称、生成编号集合、计算外接包围盒并规范化导出。最终成果是几何体的 fbx 文件与对应的 CSV 数据,两者结合使得 UE 能够高效读取并重建设计成果。
A-重命名功能:
  import rhinoscriptsyntax as rs
from collections import defaultdict
# 获取当前选中的对象
selected_objects = rs.SelectedObjects()
if not selected_objects:
    print("⚠️ 没有选中任何对象。请先在 Rhino 中选择对象后再运行脚本。")
else:
    # 记录图层下的编号计数器
    layer_counts = defaultdict(int)
    for obj in selected_objects:
        layer = rs.ObjectLayer(obj)
        count = layer_counts[layer]
        new_name = "{}_{}".format(layer, count)
        rs.ObjectName(obj, new_name)
        layer_counts[layer] += 1
    print("✅ 命名完成!共处理对象数:", len(selected_objects))
  
  B-几何数据的CSV导出功能:
  import rhinoscriptsyntax as rs
import csv
import os
csv_path = r"D:\G_3DModel\01\T01.csv"
output_path = os.path.join(rs.DocumentPath(), csv_path)
selected_objects = rs.SelectedObjects()
if not selected_objects:
    print("⚠️ 没有选中任何对象。请先选择对象再运行脚本。")
else:
    with open(output_path, mode='w', newline='') as file:
        writer = csv.writer(file)
        # 写入标题行(使用 _X / _Y / _Z 形式)
        headers = ["RowName", "MeshName"]
        for i in range(8):
            headers += [f"Corner{i}_X", f"Corner{i}_Y", f"Corner{i}_Z"]
        writer.writerow(headers)
        for obj in selected_objects:
            name = rs.ObjectName(obj) or str(obj)
            bbox = rs.BoundingBox(obj)
            if bbox and len(bbox) == 8:
                row = [name, name]
                for pt in bbox:
                    row.extend([round(pt.X, 3), round(pt.Y, 3), round(pt.Z, 3)])
                writer.writerow(row)
    print("✅ 已成功导出符合 Unreal 格式的 CSV 至:\n{}".format(output_path))
  
  实现 A-重命名功能 和 B-几何数据的CSV导出功能的 Rhino3D 插件 RH4UE
  
  
    
       
    
  
重命名功能:程序会遍历用户当前在Rhino中选中的对象,并根据其所在图层自动分配唯一的新名称。命名规则可选择“从0开始连续编号”或“在该图层现有最大编号基础上继续”,通过正则解析已有名称、维护编号集合与最大值,避免产生重复名,实现同图层内规范、无冲突的批量命名。
CSV导出功能:程序会读取选中对象的属性名称(或Id作为备选),计算其在世界坐标系下的精确轴对齐外接包围盒(BoundingBox),获取八个角点坐标,并逐对象逐行写入CSV文件。输出包含对象标识与每个角点的三维坐标,采用标准CSV转义规则,便于后续数据分析或外部定位使用。