UE Mesh Generation and Editing at Runtime

2023-11-10

UE Mesh Generation and Editing at Runtime

虚幻运行时和编辑器下生成和编辑 网格体。

UE Mesh

虚幻中常用的三种网格体

UProceduralMeshComponent 程序化网格体
UStaticMeshComponent 静态网格体
USimpleDynamicMeshComponent 动态网格体

借用他人总结的,UE4和UE5同样适用
在这里插入图片描述
USimpleDynamicMeshComponent支持运行时和编辑器下对网格体的编辑,UE5下新增的模型编辑功能使用的就是这个,支持布尔,支持编辑顶点、边和面,支持挤出等等几何操作。

在这里插入图片描述

  • Hole Filling and Boolean Failure Handling 补洞
  • Remeshing
  • Mesh Booleans
  • Mesh Morphological Operations and Mesh Simplification
  • “Solidification” with the Fast Mesh Winding Number
  • AABBTree Queries
  • Import and Attributes (结合第三方库导入其他格式的模型,如obj,ply等等)

UE 插件

已经作为UE官方自带插件
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

集成第三方库libigl,可进行复杂的几何计算。
使用libigl对几何进行平滑操作(拉普拉斯平滑)

TUniqueFunction<void(FDynamicMesh3&)> UIGLSmoothingTool::MakeMeshProcessingFunction()
{
    // make local copies of current settings
    int SolveIterations = Properties->Iterations;
    float Smoothness = Properties->Smoothness;

    // construct compute lambda
    auto EditFunction = [Smoothness, SolveIterations](FDynamicMesh3& ResultMesh)
    {
        Eigen::MatrixXd V;      Eigen::MatrixXi F;    
        iglext::DynamicMeshToIGLMesh(ResultMesh, V, F);    // convert FDynamicMesh3 to igl mesh representation

        Eigen::SparseMatrix<double> L;
        igl::cotmatrix(V, F, L);    // Compute Laplace-Beltrami operator L

        Eigen::MatrixXd U = V;      // smoothed positions will be computed in U

        for (int k = 0; k < SolveIterations; ++k)
        {
            Eigen::SparseMatrix<double> M;     // Recompute mass matrix on each step
            igl::massmatrix(U, F, igl::MASSMATRIX_TYPE_BARYCENTRIC, M);

            const auto& S = (M - Smoothness * L);
            Eigen::SimplicialLLT<Eigen::SparseMatrix<double>> solver(S);
            U = solver.solve(M * U).eval();    // Solve (M-delta*L) U = M*U
        }
        
        iglext::SetVertexPositions(ResultMesh, U);   // copy updated positions back to FDynamicMesh3
    };

    return MoveTemp(EditFunction);  // return compute lambda
}

编辑器下平滑示例:
在这里插入图片描述

其他示例

在这里插入图片描述

ToolsFrameworkDemo - Unreal Editor DynamicMeshComponent Demo

ToolsFrameworkDemo - Unreal Editor Demo Bool Operator

GitHub相关仓库

在这里插入图片描述

参考

1、http://www.gradientspace.com/tutorials/2020/10/23/runtime-mesh-generation-in-ue426
2. http://www.gradientspace.com/tutorials/2020/9/21/command-line-geometry-processing-with-unreal-engine
3. https://blog.csdn.net/mrbaolong/article/details/132112714?spm=1001.2014.3001.5501
4. https://blog.csdn.net/mrbaolong/article/details/131543522?spm=1001.2014.3001.5501

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UE Mesh Generation and Editing at Runtime 的相关文章

  • Matlab 的 slice() 函数无法按预期工作

    我想在 13 处绘制离散的 2D 图像z地点位于 4 4 52 使用以下代码行 a 100 mesh x mesh y mesh z meshgrid 1 1 100 1 1 100 4 4 52 a unifdist 0 b unifdi
  • Java/LWJGL:OpenGL 中的 Z 轴表现得像左手坐标系

    最近 我寻求帮助 https stackoverflow com q 18836484 1530508关于 OpenGL 中的 3D 相机旋转 这个答案 https stackoverflow com a 18836618 1530508接
  • 生成球体的顶点

    在 DirectX 移动照明示例中 圆柱体是按以下方式生成的 for DWORD i 0 i lt 50 i FLOAT theta 2 D3DMX PI i 50 1 pVertices 2 i 0 position D3DMXVECTO
  • 在运行时更改 AR core 中对象的纹理

    我正在创建一个应用程序 我需要在其中更改 3d 对象的纹理 图案 我正在使用 AR Core SDK 和 android 我已经使用了下面的代码 但它不起作用 Texture builder setSource this R drawabl
  • 如何插值旋转?

    我有两个描述旋转的向量 起始旋转 A 和目标旋转 B 我如何最好地通过因子 F 对 A 进行插值以接近 B 当需要插值多个维度时 即产生不需要的旋转 在向量上使用简单的 lerp 不起作用 也许从旋转向量构建四元数并使用Slerp http
  • xna 防止下坡或上太陡的山

    如何防止在高度图地形上过于陡峭的斜坡或上山 我有一个可以在地形上移动的 3D 相机 它现在可以在任何地方移动 甚至在大斜坡和太陡的山丘上 我该怎么办 如果你试图朝一个方向移动 你应该预测你最终会到达哪里 然后弄清楚是否slope http
  • 如何在 MATLAB 中可视化如图所示的体积数据?

    我的问题非常简单 我有一堆矩阵 所有矩阵都相互堆叠起来 这样我就有了大量的数据 我想可视化这些数据 如下图所示 在我看来 需要一定程度的透明度 这可能与每个体素的值有关 也就是说 值越高 体素对其后面的事物越不 透明 我不知道如何开始 这是
  • 使用四元数进行 OpenGL 旋转[重复]

    这个问题在这里已经有答案了 因此 我正在编写一个程序 其中对象以 spacesim 方式移动 以便学习如何在 3D 空间中平滑地移动对象 在对欧拉角进行了一番研究之后 它们似乎并不真正适合任意方向上的自由形式 3D 运动 因此我决定继续使用
  • 如何使用 OpenCV Viz 和 ARUCO 转换增强现实应用的 3D 模型

    我正在开发一个简单的基于标记的增强现实应用程序OpenCV 可视化 and ARUCO 我只想在标记上可视化 3D 对象 PLY 格式 我可以使用 ARUCO 毫无问题地运行标记检测和姿态估计 返回旋转和平移向量 我可以在 Viz 窗口中可
  • 从绘图 3d 图中抓取相机位置

    我正在绘制 3D 图形并想要调整相机位置 对我来说最好的方法是使用查看器 根据需要缩放和旋转场景 然后以 JSON 形式获取相机位置并将其放入我的脚本中 该脚本生成图片以默认实现相同的位置 根据这条推文 https twitter com
  • R - hist3D 序列颜色和标签问题

    所以我有一个 5 行 20 列的数据集 我正在尝试绘制一个hist3D来自plot3D包裹 dt structure c 1 1 1 3 1 2 1 0 2 1 2 1 0 1 1 0 1 0 2 2 1 1 1 1 4 4 1 1 2 3
  • Blender 与 Unity [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 基于 Q3DScatter 的自定义图表,QCustom3DItem 运行缓慢

    我想制作一个带条形的 3D 图表 条形颜色取决于其大小 两个都Qt 条形图和散点图类型 https doc qt io qt 5 qtdatavisualization overview html接近我正在寻找的东西 我最终创建了一个基于的
  • 如何在SceneKit中实现逼真的景深效果?

    我正在尝试渲染具有真实景深效果的帧 我已经尝试过景深属性camera节点 但它不会产生可用的结果 是否可以切换到景深效果的最大渲染质量 性能不是一个因素 我只需要渲染一帧 用户可以等待它 SceneKit 中逼真的景深效果 在SceneKi
  • 从 NumPy 数组中的数据绘制 3D 图像

    我有一个 NumPy 数组中的数据文件 我想查看 3D 图像 我正在分享一个示例 我可以在其中查看大小为 100 100 的 2D 图像 这是 xy 平面上 z 0 处的切片 import numpy as np from matplotl
  • 如何将 3D 图像输出到 3D 电视?

    我有一台 3D 电视 如果我不至少尝试让它显示我自己创作的漂亮 3D 图像 我就会逃避我的责任 作为一个极客 我之前已经完成了非常基本的 OpenGL 编程 因此我了解所涉及的概念 假设我可以为自己渲染一个简单的四面体或立方体并使其旋转一点
  • 光线追踪三角形

    我正在用java编写一个光线追踪器 并且我能够追踪球体 但我相信我追踪三角形的方式有问题 据我了解 这是基本算法 首先确定射线是否与plane三角形已打开 剪裁所有点 使它们与三角形位于同一平面上 因此xy以平面为例 根据沿着新平面向任意方
  • Unity3D:在 AA 解析后绘制粒子以提高性能

    我正在尝试评估 MSAA 对 Unity 中含有大量粒子的场景的影响 为此 我需要 使用 8x MSAA 绘制场景中的所有非粒子对象 使用上一个通道中解析的深度缓冲区来渲染所有 将非遮挡粒子系统转移到较小的渲染目标上 将 2 的颜色缓冲区与
  • 3D 数学:根据“向上”和“向上”正交向量计算倾斜(滚动)角度

    我希望这是提出这个问题的正确位置和这个一样 https stackoverflow com questions 3035590 bank angle from up vector and look at vector 但表示为纯数学而不是图
  • 将大块位图转换为 3 维位图

    Problem 我需要这个大量的数据作为输入 对于基于C的arduino 这是上面示例中所需格式的大量数据 const byte bitmap 8 8 0xFF 0x81 0x81 0x81 0x81 0x81 0x81 0xFF 0x81

随机推荐

  • JAVA环境变量配置方法(Windows)

    编写一个JAVA程序后 如果想让自己编写的代码可以正常运行 我们便需要对它进行编译和运行 而Java环境变量的配置就显得尤为重要 本篇文章 我们来谈一谈关于Java环境变量配置的一些方法 目录 方法一 方法二 方法三 方法一 1 右击 我的
  • ARP协议

    什么是ARP 地址解析协议 即ARP Address Resolution Protocol 是根据IP地址获取物理地址的一个TCP IP协议 主机发送信息时将包含目标IP地址的ARP请求广播到局域网络上的所有主机 并接收返回消息 以此确定
  • vue 字符串、数组之间的相互转换

    1 字符串转数组 str split 以分号拆分字符串 2 数组转字符串 arr join 把数组项拼接成字符串 并以分号隔开 默认情况下是以逗号隔开
  • Linux系统迁移(同一台电脑),重建UEFI启动文件

    电脑型号 hp 暗影精灵5 Air 显卡 RTX 2060 CPU i7 9750H 硬盘 500G固态 1T固态 启动方式 UEFI 操作系统 Ubuntu16 04 之前安装Ubuntu的时候给Ubuntu系统分配的空间太小了 安装新硬
  • 函数调用时的堆栈变化(实例)

    函数调用时的堆栈变化 关于函数调用是的堆栈变化 在网上找到的资料大都是一些配图文字等 理解起来尚有些困难 不过建议大家还是先了解一下基本的原理 下面我主要通过一个调用函数的实例来讲解一下函数调用时的堆栈变化 Ps 图片有点糊 大家最好自己跟
  • 一、时间序列分析---滞后算子(lag operator)

    1 基本概念 时间序列是以观测值发生的时期作为标记的数据集合 一般情况下 我们是从某个特定的时间开始采集数据 直到另一个固定的时间为止 我们可以将获得的数据表示为 y 1 y
  • 【hadoop——HDFS操作常用的Shell命令】

    1 Hadoop分布式文件系统 Hadoop Distributed File System HDFS 是Hadoop核心组件之一 我们已经安装好了Hadoop 2 7 1 其中已经包含了HDFS组件 不需要另外安装 最基本的shell命令
  • 最新阿里云ECS服务器挂载数据盘亲测好用挂载成功分享一下

    最近网站打不开了 发现服务器系统盘不够用了 查看磁盘占用情况 系统盘已经快满了 不能考虑到后期的需求 不能每次都去清理 不得不增加数据盘 这里记录下数据盘的挂载过程 也是找了好多参考方法亲测成功分享出来希望可以帮助有需要朋友 总结方法如下
  • 【无标题】BTY-DNS推广机制及首次空投规则

    BTY DNS 致力于创建Web3领域中的去中心化身份 DID BTY DNS的 yuan域名自开放上线以来 获得广大用户的喜爱与勇跃注册 目前 yuan的域名注册量已近千个 BTY DNS具有推广奖励机制 同时对于持有DNS的用户将进行第
  • 软件人员kpi制定模板_软件项目团队绩效考核设计与薪酬激励设计

    关注 本头条号 更多关于制度 流程 体系 岗位 模板 方案 工具 案例 故事 图书 文案 报告 技能 职场等内容 弗布克15年积累免费与您分享 阅读导航 01 软件项目团队绩效考核设计 02 软件项目团队薪酬激励设计 研发部 软件项目团队绩
  • 图像通用操作Python的实现

    平时经常会对一个目录下的图像做统一处理 如缩放 旋转等等 之前使用C 处理 有时不是很方便 发现使用Python比较简单 代码量又很少 在Anacanda下执行起来也比较方便 因此 打算在后面遇到图像的常规处理时都将其实现放入到同一个py文
  • Java:数据集合List与Map的性能比较案例

    假设有这样的一个场景 一组学生数据 一组老师的数据 属性分别如下 public class Student private String courseId private String sduName public Student Stri
  • 一文讲清楚梯度下降算法

    一 随机梯度下降与经典梯度下降 1 经典梯度下降 经典的梯度下降法采用所有训练数据的平均损失来近似目标函数 可以看到每更新一次梯度 就需要计算所有训练数据 当M很大的时候 这需要很大的计算量 耗费很长的计算时间 2 随机梯度下降 随机梯度下
  • [从零开始学习FPGA编程-32]:进阶篇 - 基本时序电路-D触发器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 什么是时序电路 1 1 时序电路 1 2 什么是触发器
  • 点云 K-Means聚类算法 (附c++代码)

    一 K Means算法 在诸多的聚类方法中 K Means聚类方法是属于 基于原型的聚类 也称为原型聚类 的方法 此类方法均是假设聚类结构能通过一组原型刻画 在现实聚类中极为常用 通常情况下 该类算法会先对原型进行初始化 然后再对原型进行迭
  • Python正则表达式(一看就懂)

    目录 哈喽O O 什么是正则表达式 简单说 正则表达式是 正则表达式怎么用 sreach的用法 匹配连续的多个数值 字符 重复前面一个匹配字符一次或者多次 字符 重复前面一个匹配字符零次或者多次 字符 重复前面一个匹配字符零次或者一次 特殊
  • 【HDLBits 刷题 5】Circuits(1)Combinational Logic

    目录 写在前面 Combinational Logic Basic Gates Wire GND NOR Another gate Two gates More logic gates 7420 chips Truth table Two
  • render的使用

    在很多前端框架中 render 函数通常接受三个参数 val rec和idx 但具体的参数取决于你的应用框架和用法 通常情况下 val 表示当前要渲染的数据值 通常是当前单元格的值 rec 表示当前行的记录或数据对象 包含了这一行的各个字段
  • 某眼查的逆向

    一 准备 APP 某眼查 版本 11 4 0 工具 xposed FDex2 JustTrustMe Fiddler jadx 二 抓包 打开Fiddler 打开天眼查抓包 开启JustTrustMe能抓到包 我们抓取工商信息这块 查看Fi
  • UE Mesh Generation and Editing at Runtime

    UE Mesh Generation and Editing at Runtime 虚幻运行时和编辑器下生成和编辑 网格体 UE Mesh 虚幻中常用的三种网格体 UProceduralMeshComponent 程序化网格体 UStati