首页 > 其他分享 >UE中的几何体

UE中的几何体

时间:2023-08-04 16:58:01浏览次数:43  
标签:Nanite 导入 几何体 LODs mesh SM UE

UE中的几何体

Brush mesh(BSP)

Brush mesh是UE中最早的mesh,主要用途是创建一些基本的Layout,做一些早期的关卡设计。

特点:相较于其它的mesh顶点可以编辑,可以快速搭建原始的场景。

  • Layout/level design(布局/关卡设计)
  • Early modeling/component edit(早期建模/组件编辑)
  • Early level lighting test(早期关卡灯光测试)
  • Collision & performance test(碰撞和性能测试)

img

Static mesh

特点:从内容浏览器拿出来放到场景中时数据信息保存在内存之中。放在场景中的static mesh其实是一个instance(实例),所以不管放多少instance在内存中只有一个原始的数据。这样放置大量的instance也不会造成性能的负担。

img
  • Major type of mesh in UE(UE中的主要mesh类型)
  • Loaded as actor and kept in memory(以actor加载并保存在内存中)
  • Easy to import/export and convert(易于导入/导出和转换)
  • Editable in SM editor(可在SM编辑器中编辑)

将数据导入为静态网格体

导入FBX

优势:可以将非常复杂的场景导出成一个Fbx文件输出;Fbx还可以帮助我们导入一些模型的LOD。

FBX默认生成lightmap,但UE5用lumen可以默认关掉,这样可以加速导入的过程。

  • Popular format for DCC apps
  • Single file for all
  • Automatically applying materials/textures
  • Multiple LODs,morph targets/blend shapes
  • FBX 2020.2(UE5)

img

Alembic

用来导入模拟相关的一些数据(爆炸,流体等),它是以序列帧 + 缓存(cache)的方式来导入场景的信息,导入场景比较轻量。

Baked geometries based on frames(基于框架的烘焙几何图形)

  • Import as Geometry Cache(作为几何缓存导入)
    • 将很重的场景(流体的模拟,爆炸,碎裂)根据时间的长度,以帧为单位,每一帧单独保存成一个包含顶点信息变化的mesh。通过Geometry Cache,我们能够在磁盘上保存基于这个mesh的一段动画,并且把它快速的保存在引擎当中。
  • Import as Skeletal Mesh(作为骨骼网格导入)
    • 角色或角色相关的(布料,头发),这些模型每一帧有顶点动态变化,就选择这种方式。
  • Import as Static Mesh(导入为静态网格)
img

Datasmith

  • 可以导入非传媒DCC(DigitalContentCreation)软件制作的三维数据
  • Unified format for exporting/importing(导出/导入的统一格式)
  • Keep file organization as original(保持文件组织为原始)
  • Reimport workflow(重新导入工作流)
  • Import object with transform animation(使用变换动画导入对象)

Edit Static Mesh

Static Mesh:

  • Pivot point(local axis)
  • Vertices,edges,and polygons
  • Levels of detail(LODS)
  • Collision hulls
  • UV layouts for textures and lightmaps
  • Vertex color assignment

Landscape

  • 专门用来创建大世界的几何体
  • 可用笔刷进行雕刻 / 编辑 ,有一整套绘制颜色、编辑几何体形状的工具
  • 地形材质由图层控制,图层间可以相互混合
  • 导入高度图来进行快速生成复杂地形变换效果(使用 VHM 添加小细节)
  • 不支持 Vertex Normal / Vertex Color的编辑
  • 暂无自适应优化方法,需要通过输入参数进行手动优化

导入高度图

高度图的两种格式

  • 16-bit,grayscale PNG file
  • 16-bit,grayscale RAW file

最佳方案

img

img

Foliage

  • 有整套的笔刷工具,可以大面积的生成植被。
  • 可以直接使用MegaScans library中的资源来作为笔刷使用。
  • 是SM instance(无交互)。

Nanite mesh(UE5)

  • UE5中的虚拟几何体。
  • 可以将SM按需求转成Nanite来提升性能。
  • 高密度+能自动根据相机的远近创建LODs,在移动相机时不同的LODs之间不会产生跳变的效果。
  • 不会产生更多的多边形计数,drawcalls和内存。(1M triangels=~10M on disk)
  • Nanite+Lumen。
  • 直接生成电影级的效果不需要手动的优化。

How Nanite Works?

Import

  • Nanie mesh记录不同层级下的集群(密集的几何体的点),而不是密集的多边形信息。并用这些集群去生成LODs。

Rendering

  • Clusters are swapped on the fly at varying LODs
  • No cracks between clusters
  • Only refresh changes in memory
  • Unique rendering bypasses draw calls
  • Visualization modes to inspect the pipeline

img

img

激活Nanite

  1. 导入时激活

img

  1. 使用mesh编辑器

img

  1. 在内容浏览器中激活

img

  1. Tools>Nanite tools

img

最佳方案

  • 建议使用 SSD 的高速硬盘,可以缩短处理过程转换时的时间
  • 用 Nanite Tool,可以批量转换SM
  • Nanite + Lumen
  • 启用虚拟阴影贴图(最大程度提高阴影效果)
  • 大块的mesh拆成小块的这样有助于提升Lumen的效果

Nanite的限制

  • 不能用在有形变动画上
  • Morph target
  • Mask、translucent 材质等
  • World position offset,pixel depth offset
  • 不支持VR

Skeletal mesh

  • 由骨骼驱动的、有形变的 Mesh
  • 复杂顶点动画(角色,生物,车辆)
  • 可以用一个文件将模型,纹理,动画,LODs,顶点颜色全部导入

Dynamic mesh(UE5)

  • UE5 新加的函数库-Geometry Script
  • 使用 BP 或 Python 编写
  • 程序化的mesh
  • 可以转换成SM
  • 可以在在编辑器和运行时刻中运行

学习地址

地址

标签:Nanite,导入,几何体,LODs,mesh,SM,UE
From: https://www.cnblogs.com/tcohneyn/p/17606414.html

相关文章

  • chromedp+goquery简易抓取百度热搜
    安装gogetgithub.com/wms3001/datacrawling抓取百度热搜信息varbnBaiDuHotNewsres:=bn.GetBaiDuHostNews()log.Println(res)......
  • 浅谈-HttpSession session = request.getSession(false)
    当使用request.getSession(false)方法时,如果当前请求没有关联的会话,则不会创建新的会话,而是返回null。这意味着,如果当前客户端没有携带有效的会话标识符(如JSESSIONID),或者会话已过期或被销毁,则request.getSession(false)方法将返回null。下面是一个示例来解释这个方法的用......
  • jquery方法封装
     /*comment.js*/;(function($){ //消息显示$.message=function(content){$('#message').attr('data-content',content);$('#message').popover('show');setTimeout(function(){$(&......
  • 使用Vue+Vite搭建在线 C++ 源代码混淆工具,带在线实例
    就酱紫github开源地址:https://github.com/dffxd-suntra/cppdgithub在线实例:https://dffxd-suntra.github.io/cppd/预览图片:长截屏背景图重复了,抱歉......
  • 断言-Assert.isTrue(...);
    Assert.isTrue(...)是SpringFramework中的一个断言方法,用于对条件进行断言检查。如果条件为真,则继续执行程序;如果条件为假,则抛出异常并输出错误消息。下面是一个简单的例子,演示如何使用Assert.isTrue(...)方法:importorg.springframework.util.Assert;publicclassExam......
  • vue实现一个鼠标滑动预览视频封面组件(精灵图版本)
    说在前面......
  • Vue 路由守卫使用文档
    一、概述Vue路由守卫是VueRouter提供的一种机制,用于在路由导航过程中对路由进行控制和过滤。通过使用路由守卫,我们可以在路由跳转前、跳转后以及跳转过程中执行一些自定义的逻辑。二、路由守卫的类型Vue路由守卫主要分为全局守卫、路由独享守卫和组件内守卫三种类型。全局守......
  • vue3项目部署到服务器刷新页面就404
    本地项目调的好好的,刷新也没有毛病,扔到服务器上,第一次打开是正常的,再刷新下就404了,不知道什么原因。百度了下才发现问题所在 constrouter=createRouter({history:createWebHistory(import.meta.env.BASE_URL),routes:[{path:'/',......
  • vue-pdf的使用
    package.json{"name":"CmsWap","version":"1.0.0","description":"","main":"main.js","dependencies":{"vue-pdf":"^4.3.0"......
  • Vuex 快速入门
    安装npmivuex--save//main.jsimportvuexfrom'Vuex'Vue.use(vuex)conststore=newVuex.store({//...})...state可以理解为vue文件里面的dataVue.use(vuex)conststore=newVuex.store({state:{name:'tyj',psd:'12......