UE基础 —— Components

目录

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.mzph.cn/pingmian/52249.shtml

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

相关文章

ElasticSearch 8.15.0 与 Kibana 8.15.0 尝鲜体验

还不算晚,虽然已经距离发布过去了快半个月~ 跟着下面的步骤进行一步一步操作(CV),只需要改动一下用户名、密码这些数据即可从零开始用 Docker安装 ES 与 Kibana 最新版,据说 Kibana 还有 AI 助手嘞(虽然是 8.12 推出的)~ 最后强调一点&#…

自动化开发流程:使用 GitHub Actions 进行 CI/CD

在现代软件开发过程中,持续集成(Continuous Integration, CI)和持续部署(Continuous Deployment, CD)是确保高质量软件交付的关键组成部分。GitHub Actions 提供了一种简便的方式来实现 CI/CD 流程的自动化。本文将介绍…

Unity XR Interaction Toolkit 通过两个手柄控制物体放大缩小

1:给物体添加 XR General Grab Transformer 脚本 2:XR Grab Interactable 的 select mode 选择 Multiple

java-队列--黑马

队列 别看这个,没用,还是多刷力扣队列题 定义 队列是以顺序的方式维护一组数据的集合,在一端添加数据,从另一端移除数据。一般来讲,添加的一端称之尾,而移除一端称为头 。 队列接口定义 // 队列的接口定…

Linux——驱动——杂项设备

一、杂项设备驱动 1、概念 杂项设备(Miscellaneous Devices)在Linux内核中是一种特殊的设备类型,用于表示那些不适合被归类为其他标准设备类型的设备。这些设备通常具有不规则的特性和非标准的通信协议或接口。 2、操作流程 杂项设备注册过…

中国数据库的崛起:从本土化挑战到全球化机遇

引言 谈起中国的崛起,大家第一反应可能是“中国制造”“高铁奇迹”“电商帝国”,但今天我们要聊的,是一个比这些还要神秘的存在——中国的数据库技术。或许你平时并不会经常关注它,但这个隐身在你手机、电脑、服务器背后的无形力…

002、架构_概览

GoldenDB 主要由管理节点、计算节点、数据节点、全局事务节点等模块组成,各个节点无需共享任何资源,均为独立自治的通用计算机节点,之间通过高速互联的 网络通讯,从而完成对应用数据请求的快速处理和响应。 管理节点在数据库中主要…

如何在寂静中用电脑找回失踪的手机?远程控制了解一下

经过一番努力,我终于成功地将孩子哄睡了。夜深人静,好不容易有了一点自己的时间,就想刷手机放松放松,顺便看看有没有重要信息。但刚才专心哄孩子去了,一时就忘记哄孩子之前,顺手把手机放哪里去了。 但找过手…

种树问题——CSP-J1真题讲解

【题目】 小明在某一天中依次有七个空闲时间段,他想要选出至少一个空闲时间段来练习唱歌,但他希望任意两个练习的时间段之间都有至少两个空闲的时间段让他休息。则小明一共有( ) 种选择时间段的方案 A. 31 B. 18 C. 21 D. 33 【答案】 B 【解析…

Vue.js学习笔记(七)使用sortablejs或el-table-draggable拖拽ElementUI的el-table表格组件

文章目录 前言一、el-table-draggable是什么?二、使用步骤1.安装使用2.sortablejs 总结 前言 记录 el-table-draggable 插件使用方法。 一、el-table-draggable是什么? el-table-draggable的存在就是为了让vue-draggable支持element-ui中的el-table组件…

卸载nomachine

网上的方法:提示找不到命令 我的方法: step1. 终端输入 sudo find / -name nxserver 2>/dev/null确认 NoMachine 的实际安装路径。你可以使用 find 命令在系统中查找 nxserver 脚本的位置。 找到路径后,你可以使用该路径来卸载 NoMachine。 如下图,紫色框中是我的路径…

Android - lock/unlock bootloader

在执行 adb remount 时高版本经常会提示失败 此时就需要对设备的进行解锁操作。记录两个部分,Google解锁和展锐解锁。 目录 一、Google解锁 二、展锐解锁 三、补充跳过按键检测的方案 一、Google解锁 官网介绍的unlock方法如下:锁定/解锁引导加载程序…

RK3588 技术分享 | 在Android系统中使用NPU实现Yolov5分类检测-迅为电子

随着人工智能和大数据时代的到来,传统嵌入式处理器中的CPU和GPU逐渐无法满足日益增长的深度学习需求。为了应对这一挑战,在一些高端处理器中,NPU(神经网络处理单元)也被集成到了处理器里。NPU的出现不仅减轻了CPU和GPU…

Linux基础环境开发工具gcc/g++ make/Makefile git

1.Linux编译器-gcc/g使用 1. 预处理(进行宏替换) 预处理功能主要包括宏定义,文件包含,条件编译,去注释等。 预处理指令是以#号开头的代码行。 实例: gcc –E hello.c –o hello.i 选项“-E”,该选项的作用是让 gcc 在预处理结束后停止编译过程。 选项“-o”是指目标…

【Java数据结构】---二叉树OJ

乐观学习,乐观生活,才能不断前进啊!!! 我的主页:optimistic_chen 我的专栏:c语言 ,Java 欢迎大家访问~ 创作不易,大佬们点赞鼓励下吧~ 文章目录 相同的树另一颗树的子树翻…

linux死锁问题和cpu使用率过高问题排查

1、问题共同点 死锁问题和cpu使用率过高都是需要我们找出对应的问题线程。 死锁问题需要我们找出哪两个线程出现了死锁情况。 cpu使用率过高需要我们找出哪个或哪些线程占用了大量的cpu。 2、命令排查 2.1、查看机器上的Java进程 jcmd或 jps2.2、查看对应Java进程的线程级别…

五子棋理解C++思想

双人五子棋项目目录: class Game { public:Game();void init();bool waitPlayerPutChess(Player* player, int& oldi, int& oldj);void draw();void play();bool isOver(int playerId);public:int whoWin -1; // 谁赢了(0:白棋&a…

科创中心“核”动力|趋动科技:AI算力界的领跑者

近日,趋动科技与深信服正式推出联合解决方案。联合解决方案将深信服EDS的高性能存储与趋动科技OrionX AI算力资源池化软件、以及GeminiAI训练平台有机结合,整合存力与算力资源的同时,帮助用户建好AI平台、管好AI资源、用好AI服务。 双方已完成…

Web3链上聚合器声呐已全球上线,开启区块链数据洞察新时代

在全球区块链技术高速发展的浪潮中,在创新发展理念的驱动下,区块链领域的工具类应用备受资本青睐。 2024年8月20日,由生纳(香港)国际集团倾力打造的一款链上应用工具——“声呐链上聚合器”,即“声呐链上数…

Facebook的区块链战略:如何在社交媒体中实现去中心化

随着区块链技术的发展,Facebook(现Meta)正积极探索如何将这一技术整合进其社交平台中,以提升用户体验和数据安全。区块链技术以去中心化、透明性和不可篡改性为特点,为社交媒体带来了新的可能性。本文将探讨Facebook在…