ITman彪叔的博客,微信公众号:ITman彪叔。欢迎对canvas、webgl、图形学感兴趣的读者订阅专栏。 点击下面链接可以订阅: [canvas高级进阶] https://xiaozhuanlan.com/canvas [webgl入门到高级进阶]https://xiaozhuanlan.com/webgl

UE Geometry_Script 程序化建模

前言

大部分情况下,我们的模型都是建模小哥哥或小姐姐通过建模软件,比如3DMax,C4D,Blender等,结合她们高超的技艺,制作出来的。 然后导出模型为GLTF或者FBX等文件格式,UEer在拿到模型文件,导入,调效果,然后就可以生成好看的在UE下能够展示的模型。比如下图:

但是有的时候,我们希望能够基于一些基本数据,能够动态生成一些模型。比如,最近我们开发的楼层编辑器,就是可以基于数据生成楼层(包括墙体,地板等)和区域,以及楼层的管路等,如下:

该编辑器从服务端(数据库)读取墙体的路径数据,区域的路径数据,然后基于数据动态生成楼层模型和区域模型。同时还可以基于门窗的位置,动态给墙体进行挖洞,也可以基于数据,对于地板进行挖洞。 并提供了Runtime下的区域编辑能力,可以动态调整区域的形状。

其中动态生成墙体和区域 用到的技术是Geometry_Script,这是一种程序化建模。 如果了解我们的Web端三维,就知道 Geometry_Script技术,在Web3d里面也是经常用到的,比如我们web端的墙体,地板,管路等等也是通过路径数据动态生成的。 比如:

webgl(threejs)生成房间楼层

基于webgl(threejs)的路面编辑

WebGL管网展示(及TubeGeometry优化)

Geometry_Script介绍

Geometry_Script是虚幻引擎中用于描述和生成复杂3D结构的一种机制。它允许设计师和开发人员利用蓝图系统或Python脚本来定义和创建3D模型,无需完全依赖外部3D建模软件。这种方式使得在引擎内部直接进行原型设计和快速迭代成为可能,大大提高了开发效率。

几何体脚本(Geometry Script)是一种虚幻引擎插件,包含一组函数库,可供用户通过Blueprints和Python生成和编辑网格体几何体。

几何体脚本将对UDynamicMesh对象进行运算,而这些对象使用FDynamicMesh3 C++三角形网格体数据结构创建。

几何体脚本能够执行对多种新型对象类型的运算操作,这些对象类型包括:

  • UDynamicMesh
  • UDynamicMeshComponent
  • ADynamicMeshActor

这些类与静态网格体系(如StaticMeshStaticMeshComponentStaticMeshActor)在架构上保持相似性。

UDynmicMesh

UDynamicMesh 对象是几何体脚本的核心组件。是未绑定到特定组件的网格体数据结构的容器。这与 UProceduralMeshComponent 等之前的虚幻引擎方法不同之处在于,网格体几何体可以在没有显式场景呈现的情况下进行创建和操控。
对于几何体的相关网格的操作,都是在该对象上完成的。

UDynamicMeshComponent

UDynamicMeshComponent可以理解是UDynamicMesh的容器。

ADynamicMeshActor

ADynamicMeshActor与AStaticMeshActor类似之处在于,它主要是UDynamicMeshComponent的容器。DynamicMeshActor在蓝图上提供了一系列程序化建模的API。

GeneratedDynamicMeshActor

GeneratedDynamicMeshActor 是ADynamicMeshActor 的子类。
可为实现基于蓝图的程序化网格体Actor提供额外支持。具体来说,此类提供了函数 On Rebuild Generated Mesh ,该函数可以在BP子类中实现以生成网格体,而不必在构造脚本(Construction Script)中实现。这可提供更好的编辑器中交互性能,并为将来更细致地管理大规模流程性几何体的生成操作留下了空间。

开启Geometry_Script

要使用Geometry_Script的功能, 需要开启相应的插件,如下图所示

总结

本文 介绍了程序化建模Geometry_Script的基本概念,后续会介绍更多程序化建模的具体功能模块。

参考文档

https://dev.epicgames.com/documentation/zh-cn/unreal-engine/geometry-scripting-users-guide-in-unreal-engine

最后,关注公号“ITMan彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。

posted on 2024-07-24 17:11  ITman彪叔  阅读(32)  评论(0编辑  收藏  举报

导航

ITman彪叔的博客,微信公众号:ITman彪叔。欢迎对canvas、webgl、图形学感兴趣的读者订阅专栏。 点击下面链接可以订阅: [canvas高级进阶] https://xiaozhuanlan.com/canvas [webgl入门到高级进阶]https://xiaozhuanlan.com/webgl