首页 > 编程语言 >UE Geometry_Script 程序化建模

UE Geometry_Script 程序化建模

时间:2024-07-24 17:20:34浏览次数:13  
标签:网格 Script Geometry 建模 几何体 UE 生成

前言

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

标签:网格,Script,Geometry,建模,几何体,UE,生成
From: https://www.cnblogs.com/flyfox1982/p/18321304

相关文章

  • 自动导入unplugin-auto-import+unplugin-vue-components
    文章介绍接下来将会以Vite+Vue3+TS的项目来举例实现在我们进行项目开发时,无论是声明响应式数据使用的ref、reactive,或是各种生命周期,又或是computed、watch、watchEffect、provide-inject。这些都需要前置引入才能使用:import{ref,reactive,onMounted,watch,provid......
  • [atcoder utpc2023_p] Priority Queue 3
    PriorityQueue3题意:有一个小根堆和\(1\)~\(n\)个数,以及一个操作序列,+表示\(push\),-表示\(pop\),\(pop\)有\(m\)次,问你有多少种插入顺序使得最后的pop集合与给出的的数字集合\(Y\)相同。首先有个浅显的发现:对于不在\(Y\)集合中的数,可选范围形如一个阶梯,换句话......
  • vue的侦听器/表单输入绑定和模板引用
    1.侦听器侦听器在修改数据过程中,实时的侦听数据,将修改前数据和修改后数据记录2.表单输入绑定在input标签中输入v-model指令可以实时的显示input标签中输入的内容,v-model.lazy指令为不实时显示,在input标签中输入的内容用鼠标点击空白页面或ENTER后显示3.模板引用直接读取DOM......
  • 服务端渲染中的数据获取:结合 useRequestHeaders 与 useFetch
    title:服务端渲染中的数据获取:结合useRequestHeaders与useFetchdate:2024/7/24updated:2024/7/24author:cmdragonexcerpt:摘要:本文介绍Vue服务端渲染中使用useRequestHeaders获取请求头部信息,如cookie和authorization,示例展示了如何在SSR环境下结合useFetch进行API......
  • JavaScript 基础知识
    JavaScript是一种编程语言,可为您的网站增加交互性。这发生在游戏中,在按下按钮或在表单上输入数据时的响应行为中;具有动态样式;带有动画等。本文可帮助您开始使用JavaScript,并进一步了解可能的情况。什么是JavaScript?JavaScript 是一种功能强大的编程语言,可以为网站......
  • TruePositive 如何是 keras.metrics.TruePositives 中的十进制数?
    我正在尝试在图像数据集上训练CNN模型,但我被获取TruePositives、TrueNegatives、FalsePositives和FalseNegatives的十进制值所困扰。这怎么可能?ERRORsampleEpoch1/336/36━━━━━━━━━━━━━━━━━━━━69s2s/step-false_negatives:30.1351-false_......
  • vue的数组变化侦测/计算属性/Class绑定/Style绑定
    1.数组变化侦测效果图单击push按钮后可增加其内容,直接显示在页面中单击concat按钮后修改数组,不直接显示在页面中,将数组赋值后显示addArrayt(){//不引起ul自动更新this.names.concat(["sakura"])//若不赋值则无法显示this.names=this.names.concat(["sakura"])}2.计......
  • 【计算机毕业设计】ssm499智能社区管理系统的设计与实现+vue
    现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本智能社区管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达......
  • 【vue前端项目实战案例】Vue仿京东商城App
    本文将介绍一款仿“京东商城”商品信息展示的电商类App。该案例是基于Vue2.0+VueRouter+webpack+ES6等技术栈实现的一款App,很适合初学者进行学习。项目源码在文章末尾1项目概述项目是一款仿“京东商城”的商品信息展示的App,主要实现了以下功能。商城首页轮......
  • 计算机项目/基于Spring Boot+Vue的生活用品购物平台设计与实现/毕设/网站健身
    基于SpringBoot+Vue的生活用品购物平台设计与实现摘要:生活用品购物平台系统采用SpringBoot作为后端框架,提供高效的数据处理和业务逻辑实现;前端使用Vue.js,通过其响应式数据绑定和组件化开发,使得用户界面更具交互性和可扩展性,选择MySQL数据库存储数据。系统分为用户模块和管......