惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

B
Blog RSS Feed
Jina AI
Jina AI
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
Hugging Face - Blog
Hugging Face - Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
博客园 - 司徒正美
罗磊的独立博客
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
WordPress大学
WordPress大学
Vercel News
Vercel News
A
About on SuperTechFans
I
InfoQ
D
DataBreaches.Net
爱范儿
爱范儿
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
U
Unit 42
aimingoo的专栏
aimingoo的专栏
宝玉的分享
宝玉的分享
P
Proofpoint News Feed
Microsoft Azure Blog
Microsoft Azure Blog
美团技术团队

博客园 - ITman彪叔

赋能UE运行态编辑平台: 网络图片下载的插件改造与复盘 召回率暴涨!“层级化分片”与“降噪”拯救 RAG 系统 基于FastMCP打通业务系统与AI:构建智能协作新范式 在 Dify 中通过 MCP 集成本地 FastMCP 服务避坑指南 从分形到森林——使用 Three.js 创建逼真的 3D 树木 Threejs 视频融合 UE5 小部件 组合框(键)ComboBox (Key) Tesseract OCR 页面分割模式解析 Java MQTT 主流开发方案对比 Java Modbus主流开发方案对比 Java OPC UA 开发方案全对比:开源、商业、集成与官方标准 Nodejs打包 Webpack 中 __dirname 的正确配置与行为解析 强制 pnpm 使用 IPv4 而不是 IPv6 的终极解决方案指南 uniapp 微信小程序 调试 UE Websocket 通信 UE MultiLineTraceByChannel函数返回只有一个对象的问题 UE Spline 样条网格体组件添加碰撞 Three光源Target位置改变光照方向不变的问题及解决方法 UE5 射线检测排除隐藏的Actor UE5打包SDK未正确安装的问题 判断两个矩形是否相交(Rect Intersection) 电力布局三维编辑器功能设计 UE4 WebUI使用指南2-通信
UE Geometry_Script 程序化建模
ITman彪叔 · 2024-07-24 · via 博客园 - ITman彪叔

前言

大部分情况下,我们的模型都是建模小哥哥或小姐姐通过建模软件,比如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彪叔” 可以添加作者微信进行交流,及时收到更多有价值的文章。