UE基础 —— Components

news2024/11/13 20:39:19

目录

Component Instancing

Instanced Static Mesh Component

Instanced Static Mesh

Differences of an ISM and a Static Mesh Component

Hierarchical Instanced Static Mesh

Instancing Systems

Working with ISMs

Prefabrication

Custom Data

Creating and Editing ISMs


        组件(Component)是可以添加给Actor的一项功能;当为Actor添加组件后,Actor就可以使用组件提供的功能;如:

  • "聚光源(Spot Light)组件"将使Actor像聚光源一样发光;
  • "旋转运动(Rotating Movement)组件"将使Actor旋转;
  • "音频(Audio)组件"将使Actor能够播放声音;

与Actor不同,组件不能单独存在,只能绑定在Actor身上;

        为Actor添加组件的过程,相当于为Actor添加各个零件;例如,一辆汽车(Actor)由车轮、方向盘、车身、车灯等(组件)组成;再例如,玩家角色Actor通常包含一个单独的"骨骼网格体(Skeletal Mesh)"组件(表示角色外观)、跟随角色移动的摄像机,以及接收玩家输入的控制器;

        添加完构成Actor的不同组件后,即使不提供指示Actor应如何运行的任何 蓝图(Blueprint)脚本(或C++代码),也可以将Actor放置在关卡中;在上面的示例中,汽车(Actor)可以作为对象存在于世界(关卡)中,无需任何驱动程序(蓝图或C++代码)告诉它要执行什么操作;然后,可以使用蓝图或C++代码单独访问汽车的每个组件(例如,如果按下油门组件,蓝图逻辑可以使汽车加速);

Component Instancing

        与一般子对象的默认行为不同,Actor中充当子对象的各种组件都是实例化的,所有某个类的Actor实例都有着单独的组件实例;

        为了理解这点,想象一下上面的汽车示例;一个"汽车(Car)"类使用组件来表示汽车的车轮;四个"车轮(Wheel)"组件是该类的默认属性中的四个子对象,并指定给了"车轮(Wheels)"数组。当创建新的汽车实例时,会专门为该汽车实例新建"车轮(Wheel)"组件实例;否则,当世界中一辆汽车移动时,所有汽车的车轮都会转动;这显然不是预期的行为;让组件默认进行实例化,免去了为Actor添加唯一子对象的麻烦;

Instanced Static Mesh Component

        Actors的数量会影响性能,可以将相同的网格体打组到一个actor中作为实例化静态网格(ISM)组件,而不是在关卡中重复使用静态网格体actor;

Instanced Static Mesh

        ISM是一个包含一组相同静态网格的组件,组件中的每个静态网格代表静态网格资源的一个实例;ISM帮助提升性能,如降低 UOBjects 的内存;

Details Panel

        一个 instanced static mesh 是一个actor的组件,可在Details Panel内查看;另外,可在细节面板内查看和修改:

  • 被应用于actor组件的 static mesh 资产;
  • 组件内实例的数量;
  • 所有实例使用的材质;
  • 自定义每实例数据;
  • LOD;
  • 实例culling距离;
  • 面板中常见的其他属性;

Differences of an ISM and a Static Mesh Component

        当拖拽一个 static mesh asset 到关卡内,引用该资产的 static mesh actor 将自动被创建;一个actor内的每个static mesh通过组件引用;默认,当拖拽一个 static mesh asset 到关卡内,一个 static mesh component 被应用;

  • Static Mesh Component,具有自己的变换、材质和碰撞的单个静态网格表示;
  • Instanced Static Mesh Component,表示指定的静态网格的多个实例,共享相同的材质和碰撞特性;通常用于更有效地渲染使用不同的变换的相同静态网格;

Hierarchical Instanced Static Mesh

        传统上,分层实例化静态网格(HISM)为每个实例唯一应用细节级别(LOD),而ISM则将LOD应用于整个组件边界;但对于在5.4或更高版本中创建的项目,可以为ISM的每个实例使用LOD;

        LOD是同一网格在不同三角形数下的数组,具体取决于其在视口中的屏幕空间;减少三角形计数有助于减少计算时间,提高优化效率;可在Details panel调节ISM和HISM的LOD;

HISM和ISM的不同:

  • 如有1000个不移动的实例,HISM可能更好;在这种情况下,使用静态层次结构来加速culling和LOD过程;
    • 如有许多不完全静态的实例,则使用HISM的项目中可能会出现错误;
  • ISM没有静态层次结构,必须在GPU上cull & LOD每个实例,这在低功耗平台上可能很昂贵;
  • 如希望LOD与静态网格行为相匹配,则不能依赖HISM,因为它会处理多组实例;当单个LOD不是很重要时,HISM最有用;例如,具有少量三角形的网格;
  • 如项目只使用Nanite,那么ISM总是你的选择,因为Nanite有自己的culing和LOD系统;

Instancing Systems

        虚幻引擎提供了将实例优化应用于网格的系统;这些系统(如Nanite)的使用取决于项目和目标平台;

  • Dynamic Instancing,通过组合具有相同材质和网格的静态网格绘制,可以减少绘制调用;
  • Nanite,虚拟化几何系统,其中框架预算不再受多边形计数、绘图调用和网格内存使用的限制;可以在ISM和HISM组件中引用启用了Nanite的网格;
  • Procedural Content Generation,程序生成内容的框架;
  • Niagara,创建视觉效果的系统,在渲染时实例化粒子网格体;

Working with ISMs

        ISM的主要功能是提高项目的性能;如果逐一复制每一片树叶,绘制森林的速度会非常慢;使用Folage Mode等工具,可以通过同时放置多个分组实例来节省工作流和计算时间;

Prefabrication

        将相同的静态网格分组到一个组件中,是设计优化关卡的有价值的工作流程;ISMs可以帮助完成关卡设计,例如在环境中放置背景道具或重复建筑实例以创建塔楼;

        这种类型的预制与合并网格以创建新的静态网格资源的工作流程不同,因为每个实例都是相同的、可选择的,更新一个实例会更新所有实例;

Custom Data

        ISM可使用 Custom Primitive Data 和 Per Instance Custom Data 去降低绘制调用,通过传递数据而不为每个网格生成新的动态材质实例;可使用蓝图读取数据进入材质并管理它;

  • Custom Primitive Data,储存在primitive上的额外浮点数据;
  • Per Instance Custom Data,每实例的额外浮点数据;

Creating and Editing ISMs

Instance Selection

  • 控制台命令 TypedElements.EnableViewportSMInstanceSelection ;
  • 细节面板内的 Instances 选项;
  • ISM编辑器;

Blueprints 可使用一个蓝图actor来添加ISM或HISM;

Merge Actors 由多个合并static mesh actor工具组成,其中之一Batch

Harvest Instances Tool 选择static mesh actors批量处理以创建ISM或HISM组件;

Foliage Mode 用于放置static mesh和actor foliage,以快速填充大型环境;

Packed Level Actor 从蓝图创建packed level actor,有助于创建预制对象;

Pattern Tool 工具Pattern技术创建mesh并作为ISM输出,此工具有以下类型single actors, dynamic mesh, instanced static mesh;

ISM Editor 选择ISM组件的实例并执行变换,也可添加、替换、删除实例;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2068911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

吴恩达机器学习课后作业-04神经网络

神经网络 对y进行独立热编码处理(one-hot处理)序列化权重参数前向传播代价函数反向传播神经网络优化可视化隐藏层 对y进行独立热编码处理(one-hot处理) def one_hot_encoder(raw_y):result[]for i in raw_y:#1-10y_tempnp.zeros(1…

网络编程之初识

目录 ​前言 发展史 网络互连 局域网(LAN) 广域网(WAN) 网络通信基础 IP地址 特殊IP地址 端口号 网络协议 协议的作用 五元组 协议分层 含义 OSI七层模型 TCP/IP五层协议 网络设备所在分层 封装和分用 发送方 接收方 前言 在这个科技发达的时代&#xff0…

初识C语言指针(3)

目录 1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. 冒泡排序 5. 二级指针 6. 指针数组 7. 指针数组模拟⼆维数组 结语 1. 数组名的理解 对于数组名想必大家并不陌生,数组名就是该数组首元素的地址,设想有一个arr 数组。我们…

文本是否换行显示

多行文本 1、white-space: pre-wrap; 保留连续的空白符。在遇到换行符或 <br> 元素时&#xff0c;或者根据填充行框盒子的需要换行。 2、word-break: break-word; 如果单词太长而无法在当前行容纳&#xff0c;浏览器可以尝试在单词内部进行断行&#xff0c;以避免内容…

轻松获得ADSL代理服务

ADSL 代理服务接入常见问答 在当今激烈的网络爬虫与反爬虫斗争中&#xff0c;各大网站和应用程序采取的风险管理手段愈加严格&#xff0c;其中最常见的一种措施是 IP 封禁。 为了有效应对 IP 封禁带来的挑战&#xff0c;设置代理服务成为一种非常有效的解决方案。配置完代理后…

数论之高斯消元

高斯消元&#xff1a; 前置知识&#xff1a; 高斯消元五步骤法 枚举每一列c 找到绝对值最大的一行 将该行换到最上面&#xff08;第r行&#xff09; 将该行的第c列数字变为1 把该行下面的第c列数字全部变为0 代回求解 #include <bits/stdc.h>using namespace std;…

Linux LVM 详解

Linux LVM 详解 1. 简介 参考链接&#xff1a; https://blog.csdn.net/qq_35745940/article/details/119054949 https://blog.csdn.net/FP202530/article/details/125140176 &#x1f449; LVM&#xff08;Logical Volume Manager&#xff09;逻辑卷管理 是在硬盘分区和文件系…

面向对象02:构造器详解

本节内容视频链接&#xff1a;面向对象05&#xff1a;构造器详解_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p64&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 构造器&#xff08;‌Constructor&#xff09;‌是一种特殊的方法&#xff0c;‌用于初始…

解决Intel-12代13代14代大小核调用导致VMware虚拟机性能低

0x01 设备信息 近期入手的是一台2023款 y9000p 游戏本&#xff0c;CPU为13500h 显卡为RTX4060。 0x02 VMware虚拟机遇到的性能问题 尤其是windows虚机明显感觉性能非常差&#xff0c;开几个网页都很卡。 我一度怀疑是CPU i5性能差&#xff0c;还没我的轻薄本运行速度快&…

jmeter中CSV 数据文件设置用例

1、CSV数据文件的基础使用 线程组->添加->配置远近->CSV数据文件设置 2、多条用例运行CSV数据文件 由于我的csv请求的json数据有“&#xff0c;”所以我这边 分隔符选择了*号 写了两行需要测试的用例&#xff0c;需要添加一个“循环控制器” 线程组->添加-&g…

省时又省力!2024年最新录屏软件快捷键大放送

录屏工具可以帮我们录制教学视频、游戏精彩瞬间等内容。很多时候录制的过程瞬息万变&#xff0c;如果合理使用录屏快捷键就会极大的缓解我们录制时候的慌乱。今天&#xff0c;就让我们一起探索那些“大家都在用的录屏软件快捷键”&#xff0c;看看它们是如何让我们的录制工作变…

centos7 xtrabackup mysql(8)压缩 全量备份 还原(4)

centos7 xtrabackup mysql&#xff08;8&#xff09;压缩 全量备份 还原&#xff08;4&#xff09; 查看版本&#xff1a; xtrabackup --version qpress --help 主机端 mysql -u root -p 1234aA~1 use company_pro; insert into employee(name) value (‘20240823_1401’);…

2024.8.23

130124202408231008 DATE #:20240823 ITEM #:DOC WEEK #:FRIDAY DAIL #:捌月二十 TAGS < BGM "Forest Mixtape&#xff08;Tsuki)" > < theme oi-graph theory Eulerian > < [NULL] > < [空] > < [空] >冰岛的温柔是克莱因蓝再加点…

使用nfs搭建文件共享系统,以及windows环境如何访问linux系统中的文件共享目录

31、简介 在一些场景中&#xff0c;我们需要多台机器进行磁盘文件共享&#xff0c;集群中如果有linux机器&#xff0c;也有windows机器&#xff0c;如何设置进行文件共享&#xff0c;本文将详细说明。 注&#xff1a;本文linux系统使用的是 centos7&#xff0c;windows使用的是…

【Qt】常见控件 —— QWidget

文章目录 QWidget 的基本介绍QWidget 的 enable 属性QWidget 的 geometry属性 QWidget 的基本介绍 Qt 中 的 各种控件 都继承自 QWidget类 在 Qt designer 右侧 就显示出 QWidget的各种属性 并且也可以直接进行编辑 QWidget 的 enable 属性 enable 描述一个控件是否处于可用 …

前端面试题整理-webpack

实现前端模块化&#xff0c;将多个 js&#xff0c;打包成一个 bundle.js (其他类型文件交由各自的 loader 处理) 1. webpack 了解吗&#xff1f;大概介绍一下 一种打包工具&#xff0c;实现前端模块化&#xff0c;将多个 js&#xff0c;打包成一个 bundle.js (其他类型文件交…

Linux中查看端口被哪个进程占用、进程调用的配置文件、目录,address already in use端口被占用杀死并释放端口

1.查看被占用的端口的进程&#xff08;netstat和ss是一样的&#xff0c;较新的系统推荐ss&#xff09;: netstat -antulp | grep 端口号ss -antulp | grep :端口号lsof -i | grep 端口号2. 通过上面的命令就可以列出&#xff0c;这个端口被哪些应用程序所占用&#xff0c;然后找…

Java设计模式之策略模式详细讲解和案例示范

Java设计模式之策略模式详细讲解和案例示范 在软件开发中&#xff0c;策略模式是一种常见且非常有用的设计模式。它允许定义一系列算法&#xff0c;将它们一个个封装起来&#xff0c;并且使它们可以互相替换。策略模式让算法可以独立于使用它们的客户端而变化。本篇文章将详细…

VScode的python虚拟环境

1 创建虚拟环境&#xff08;venv&#xff09; 在VSCode中打开项目文件夹&#xff0c;键盘按住快捷键ctrl shift p&#xff0c;打开命令面板&#xff0c;输入python:创建环境 选择venv&#xff0c;输入解释器路径&#xff0c;此时左侧文件夹内会出现一个.venv文件夹 2 激活虚拟…

未来已来:探索机器学习如何重塑人工智能的未来方向

引言&#xff1a;机器学习室实现人工智能的关键技术手段&#xff0c;应用领域持续延伸 机器学习是人工智能的一个重要分支&#xff0c;主要研究如何让计算机系统通过数据学习并做出决策或预测&#xff0c;而不需要明确的编程。简单来说&#xff0c;就是让计算机利用经验来提高性…