This page has been translated automatically.
Recent news:
Table of contents:

UNIGINE 2.18:性能优化、内置 VR、新曝光和增强功能色调映射器、新事件系统、实验性动画改进

主要变化

  • DirectX 12 和 Vulkan 作为主要图形 API
  • VR在引擎核心:无插件,统一API,更广泛的VR设备
  • 众多性能优化
  • 优化内存消耗
  • 新的事件系统代替回调
  • 异步着色器编译
  • 改进的变形目标支持
  • (实验性)动画系统改进(新 API、基本 IK、重定向、帧蒙版)
  • 改进的曝光和白平衡校正
  • 本地色调映射器
  • 多项视觉改进:Mipmap 的锐化和模糊、更快的次表面散射、改进的半透明度等等
  • OpenSSL 支持
  • 编辑器:批量重命名,更多可视化工具,改进的世界节点层次结构选项卡,改进的 Cleaner,大量生活质量改进
  • 新的无人机演示项目
  • 免费学习课程

此版本为 DirectX 12 和 Vulkan 带来更高的稳定性和可靠性,包括开箱即用引擎核心的 VR 支持、引擎和编辑器的大量性能优化和生活质量改进、大量更新对于大多数编辑器工具来说,一系列重要的动画更新以及新的动画系统(在此版本中处于实验阶段,但已经进入最后阶段)、用于替换过时回调的新事件系统、新的无人机演示等等。

DirectX 12 和 DirectX 12 Vulkan 作为主要图形 API

我们继续完善 DirectX 12 和 Vulkan 的集成,包括进一步的稳定性、优化和新功能。做了以下几件事:

  • 集成 D3D12 内存分配器消除了创建静态网格物体和只读纹理时的峰值。
  • 修复了大场景中具有大量样本的烘焙灯崩溃的问题。
  • 修复了 Linux 上 Vulkan 的离屏渲染问题。
  • 使用 Projection 插件的项目现在可以在 Vulkan 和 DX12 上按预期工作。
  • 修复了根据 NVIDIA 控制面板中的 Vsync 设置在 DX12 上显示不正确帧速率的问题。
  • 修复了更新 DX12 上的投影矩阵的问题。
  • 性能分析器中的 Primitives 和 Total GPU 计数器现在显示 Vulkan 的正确值(AMD GPU 除外)。
  • 修复了最小化窗口时的崩溃(Vulkan + AMD)。
  • 修复了 Vulkan 上线性和弯曲 360 度全景渲染的问题。
  • 除此之外,还修复了一些崩溃和小问题,以确保稳定可靠的运行。

引入了一系列优化来提高 CPU 性能。

一般性能优化

减少内存消耗

我们继续提高引擎的整体资源效率。这次,我们对节点(贴花、网格簇、网格杂乱)进行了多项改进,有效减少了 RAM 消耗。

材质造成的 RAM 消耗也显着减少了约 20%

更快的次表面散射

我们改进了次表面散射 (SSS) 效果的性能,在产生相同图像的同时提高了2倍

交错间接照明

作为一项性能优化,我们为间接光照添加了交错渲染 - 不是一次渲染间接光照的 4 个相邻像素,而是在 4 个后续帧中渲染它们,从而产生 4倍 间接照明性能增益。在 2.18 之前,您只能对整体照明使用交错模式,但有时仅优化间接照明就足够了,同时保持直接照明不变。以前的 Indirect Lighting 选项已重命名为 Direct Lighting Interleaved Rendering

交错降噪器

降噪器对于 GPU 来说是一种很酷但相当重的效果,因为它使用非常复杂的模糊算法。为了提高性能,您可以打开 Interleaved 模式,全分辨率下的计算将分为 4 帧。因此,效果将变得快4倍

灯光优化

我们优化了 World Light 源的渲染,通过引入 One Cascade Per Frame 模式。此模式将阴影级联的更新分布在多个渲染帧中:来自静态几何体的阴影每帧仅渲染到一个级联中。

DirectX12 和 Vulkan 的阴影渲染性能的差异(在我们的 Oil Refinery 演示项目上测试)显示在下表中(数值可能会根据特定项目的内容和设置而有所不同)。

重用阴影

节省应用程序性能的另一个选项涉及昂贵的阴影渲染。

当多个视口渲染场景时,阴影贴图通常会为每个视口单独渲染。这很重要,因为渲染到视口中的每个摄像机都有其独特的转换。但是,当摄像机彼此靠近时,阴影看起来非常相似,因此对于某些视口和摄像机配置,您可以通过启用 Reuse Shadows 模式(render_shadows_reuse 控制台命令)。在此模式下,阴影贴图仅针对主视口渲染,然后用于其他视口。

DirectX11, DirectX12 和 Vulkan 的渲染性能差异取决于 Reuse Shadows 选项(在我们的 Oil Refinery 演示项目上进行了测试,渲染到4个视口),如下表所示(值可能根据特定项目的内容和设置而有所不同)。

虽然此技术提供了性能增益,但它并不是灵丹妙药,并且可能会导致伪影。

异步着色器编译

UNIGINE 流系统现在提供异步着色器编译和加载。此改进解决了着色器编译期间引擎冻结的问题,显着增强了性能。

此外,它还导致了一些 API 的更改。以前,在编译着色器程序之前需要加载所有必需的子着色器(顶点、片段等)。您还必须考虑子着色器的加载顺序,因为它会影响结果。现在,UNIGINE 可以一次性编译带有所有必要子着色器的着色器程序。

有两种编译模式可供选择:异步强制 。在强制模式下,当前帧所需的所有着色器都会在当前线程中同时编译并加载到 RAM 中。默认为异步模式。

你可以通过以下方式切换模式: 在 UnigineEditor 中(Settings-> Rendering -> Streaming -> Shaders -> Compile Mode)、通过控制台(render_shaders_compile_mode) 或通过 API。

性能分析器现在提供有关已编译和加载的着色器数量的信息。

更新的 FPS 计数器

用每秒帧数 (FPS) 来衡量应用程序的帧率对于为用户提供一致的体验来说并不理想。假设,在运行时,您的应用程序在0.7秒内渲染59帧,但渲染第60帧需要0.3秒。60帧/秒的平均帧率很好,但实际上用户会得到一个卡住的效果,因为最后一帧需要0.3秒。

因此,针对每帧的特定时间预算非常重要,即CPU 时间 + GPU 时间。这为您在分析和优化应用程序时提供了坚实的目标,并为用户创造了更流畅、更一致的体验。每个帧都会有一个基于您的目标 fps 的时间预算。以 60 fps 为目标的应用程序每帧的时间应始终少于 16.66 毫秒 (1000 毫秒/60 fps)。

我们更新了引擎 FPS 计数器,使其更加有用且信息丰富:除了帧速率计数器之外,您还会看到以下两个计数器(以毫秒为单位):

  • CPU:显示在 CPU 上准备当前帧所需的时间
  • GPU:显示在 GPU 上渲染当前帧所花费的时间

如果有 CPU 瓶颈,您会看到“CPU limit”对于 GPU 计数器,反之亦然。如果您启用了垂直同步,计数器也会指示它。

  • 受 GPU 限制 如果 GPU 上的帧渲染比 CPU 上的处理花费的时间超过帧预算,则这种情况下需要GPU优化。
  • 受 CPU 限制 如果 CPU 上的帧处理比 GPU 上的渲染花费的时间超过帧预算,优化 GPU 性能对此毫无帮助。

曝光和白平衡校正

基于曲线的校正

我们添加了一个选项,使自动曝光调整更加灵活和方便,使您能够通过校正曲线控制整体场景饱和度,以满足您的需求。

测光蒙版

我们在 Camera Effects 设置中添加了 Metering Mask 纹理,以控制自动曝光和白平衡校正对整个屏幕的影响,其中每个像素根据指定的纹理蒙版加权重要性。让屏幕中心的像素比边缘的像素更重要,这有助于稳定自动曝光。

改进的降噪器

我们投入了大量精力来减少引入新降噪器后出现的伪影,从而显着减少了重影和噪音。所有相关内置预设的设置都更新了,所以没有必要使用自定义预设和更改它们,除非你清楚地了解整个过程。

局部色调映射器

具有高动态范围的图像在场景中最亮和最暗的对象之间具有高亮度比。全局色调映射方法提供了计算简单的解决方案,但是这些解决方案对图像的所有像素应用相同的映射函数,导致对比度和细节的损失。例如,如果屏幕上同时有明亮的天空和黑暗的区域,我们最终会得到接近纯黑色的阴影区域,或过度照亮(“过曝”)的天空。局部色调映射方法使用由像素邻域确定的空间变化映射函数,这可以增加局部对比度和图像某些细节的可见性。

引入一种新的局部色调映射器,该映射器具有基于整个图像生成的掩模,可提供更令人满意的结果,因为人类视觉对局部对比度更敏感。

局部色调映射器可通过Rendering SettingsColor Correction部分进行调整,也可以通过控制台命令和 API。

改善半透明度

表面法线对半透明效果的影响变得更加显着,使整个图像看起来更加令人信服。

倒影中的云

如果在包含 3D 体积云和大量反射表面的场景中使用多个视口和动态反射,则在反射中渲染云可能会显着影响性能。对于这种情况,我们添加了新的云渲染模式 (Render To Panorama),使您能够每帧将它们渲染到全景立方体贴图纹理中一次。这会自动使云在基于简单默认环境的反射中看到,使它们看起来更自然,从而降低成本。但是,此模式有局限性,仅适用于不需要从云内部渲染视图的情况(Volumetric 模式)。

要激活此模式,请在 Clouds 部分的 Mode 下拉列表中选择 Render To Panorama (Settings -> Render -> Clouds -> Mode).

体素探针乘法混合

为体素探针添加了新的 Multiplicative 混合模式 Voxel Probe。它可用于将模拟环境光遮挡的体素探针与探针下方可用的间接照明混合在一起。为了将环境光遮挡烘焙到体素探针,您可以启用 Multiply By Sky Color 选项,用一次反射烘焙探针,然后禁用该选项。因此,体素探针将包含来自天空的白色,可用作环境光遮挡。

Mipmap 的锐化和模糊

使用 mipmap 会减少纹理细节,但另一方面,在某些情况下,太锐利的 mipmap 可能会导致视觉伪影,使图像产生噪声。为了解决这个问题,我们在 Mipmap Type 切换器中添加了两个选项: SharpenBlur。顾名思义,您可以在下采样期间使 mipmap 更加锐化(以恢复一些信息丢失)或变得模糊(以减少伪像),并可以控制所应用效果的半径。对于锐化,如果需要,您还可以控制效果的强度并将其仅应用于 HSL 亮度值。

其他渲染改进:

  • 我们改进了介电材质表面的反射阴影,使其符合能量守恒定律并消除过多的镜面高光。
  • 环境探测在Raymarching 模式现在用于半透明
  • 更新了半透明渲染:现在它使用我们的漫反射 BRDF 而不是 Burley BRDF。

动画改进(实验性)

我们继续开发新的动画系统:为新的多功能 Sequencer 工具奠定了坚实的基础,以取代旧的 Tracker 系统的所有限制,并使动画处理变得简单而高效,释放您的创造潜力,使您能够实现您想要的任何目标放。我们在这里取得了相当大的进展,尽管还有一些事情要做,并且 Sequencer 正处于积极的开发阶段,但我们希望将进展作为实验性功能与您分享。

动画系统使您能够以多轨模式创建和播放游戏内动画。 动画序列是通过创建Playback、向其中添加Layer以及向这些层添加Track来定义的,并且能够控制轨道序列和混合不同层之间。 用户可以通过添加抽象对象Modifier来定义每个Track的构成,以根据关键帧定义对象及其参数随时间的变化。 对于每对键,可以指定单独的插值模式(恒定、线性、各种贝塞尔曲线)。 支持所有当前可用的参数(从 intdvec4),并单独支持 ObjectMeshSkinned 骨骼转换。

目前,这是一个基于代码的动画平台,具有支持所有语言(C++、C# 和 UnigineScript )的API,可以通过应用程序逻辑中的代码使用(因此目前对程序员更友好)。但下一阶段将为您带来 GUI 部分,通过小部件和窗口来控制整个事情(对每个人都友好)。实际上这是目前正在该平台基础上开发的新的强大 Sequencer 工具。您将在下面找到有关该平台当前状态的一些详细信息。

动画播放节点

为了您的方便,我们添加了一个新的 Animation Playback 节点 (NodeAnimationPlayback) 来演示新动画系统的功能。 该节点使您能够将旧的动画轨道文件(*.track 格式)转换为新的 *.utrack*.uplay 格式,以及播放新的动画轨道,能够更改播放速度并设置特定时间以查看应用于场景的相应动画帧。

一组 Animation 个示例(<SDK_folder>/source/samples/api/animation)已添加到SDK中,以演示使用的各个方面。

有关动画系统的更多详细信息,请参阅动画文章。

基本动画重设目标(实验)

我们添加了动画重设目标(在此版本中为实验性),使您能够在具有不同比例但使用相似骨架或具有相似骨骼层次结构和略有不同 T 型姿势的模型之间共享和重用动画。

下面的四个角色具有不同比例的骨骼,但共享相同的动画(重设目标):一个挺拔的男人(这个模型的动画用于其他模型),另一个矮但较粗的男人,以及两个女人(正常和胖乎乎的)。他们都按照动画移动,同时保持比例。如果不重设目标较小(女性)以及较矮男性的骨骼,则在应用挺拔男的动画后,骨骼将会扭曲。

如果您只需要重设目标骨骼的某些子集(例如:重设目标具有不同名称的骨骼,然后仅使用蒙版),则可以忽略模型限制。

动画帧蒙版(实验)

蒙版是重用动画的最简单的方法,简单介绍一下它们的功能。可以为 ObjectMeshSkinned 的每一层分配一个动画,并且基于它的帧动画将改变这一层的骨转换。您可以使用蒙版来选择动画帧的哪些组件(位置,旋转,缩放,它们的组合或所有组件)用于每个特定的层。如果蒙版中缺少任何组件,则从T型姿势中取相应的值。

基础 IK(实验)

ObjectMeshSkinned 现在支持骨骼链(IK 链)的基本逆运动学(IK),提供了一种从末端执行器位置处理关节旋转的方法。 IK 解算器尝试找到旋转,以便最终关节尽可能与效应器的给定位置重合。这可用于将角色的脚正确定位在不平坦的地面上,并确保与世界的可信交互。

每个 IK 链可以具有任意长度(包含任意数量的骨骼),并且它具有一个辅助向量,使您能够控制弯曲方向。您还可以设置链条最后一个关节的旋转。每个 IK 链都有一个权重值,可用于控制目标对链最后一个关节的影响。这使您能够从源动画平滑过渡到肢体所需的目标位置。

为了您的方便,有一个针对选定 IK 链的可视化工具。

改进的变形目标支持

我们为 DirectX12 和 Vulkan 创建了增加每个表面活动变形目标的最大数量的选项:它现在默认设置为100,甚至可以更多(但是,对于 DX11 和 OpenGL,它仍然是 7)。

我们还扩展了FBX模型导入设置:在导入 Morph Target 时,您现在可以决定法线导入的方法:

  • 使用基础网格的法线
  • 使用导入资源的法线
  • 使用指定的角度值重新计算变形目标的法线,以使边缘更平滑或更锐利

变形目标预览 Morph Targets 已添加到 Skinned Mesh 对象 的 Parameters 窗口。

请记住,着色器缓存要针对任何具有一定数量活动变形目标的 ObjectMeshSkinned 进行编译(活动变形目标是启用的(通过setTargetEnabled)并且具有非零权重的目标)。

虚拟现实改进

VR应用程序的开发现在变得更加简单! VR 支持已从插件转移到 UNIGINE 引擎的核心: 使其使用更加方便(统一的 API、更容易的初始化、项目中的文件更少)。这也为更深入的性能优化打开了大门。

实现类似功能的 VR 插件(OpenVR、Varjo、Oculus)已被视为已弃用,并将在下一个 SDK 版本中删除。

UNIGINE VR 系统提供 OpenVR 和 Varjo 集成,并支持现代图形 API: DirectX 11、DirectX 12 和 Vulkan - 开箱即用。它使您能够在各种 VR 设备的支持下为各种 VR 平台创建 VR 和 XR 应用程序。

自 2.18.1 起,对 OpenGL API 的内置 VR 支持将不再可用,因此如果需要,您必须使用已弃用的 VR 插件。

OpenVR 集成使您能够为 SteamVR 和 Oculus VR 开发项目。通过 Varjo 集成,您还可以实现设计在 Varjo HMD 上运行的混合现实应用程序。

统一VR输入系统

UNIGINE 的输入系统现在提供对各种 VR 设备的访问。您可以管理来自 VR 控制器、头戴式显示器 (HMD)、基站和开箱即用的跟踪器的输入,以及获取设备型号、检查电池电量或访问您的其他属性和设置设备。

我们还为 VR 控制器和 HMD 实现了独立于模型的按钮和轴的统一处理。

虚拟现实模板

VR Template 已更新,以与内置 VR 功能保持一致:

  • 类和组件的实现现在使用新的 API
  • VR 控制器模型现在会自动从 OpenVR 加载,因此您无需手动将它们添加到项目中

新引擎事件系统

我们改进了跟踪引擎各处各种事件基础的结构。以前使用的基于回调的系统有许多问题和弱点,如下所列:

  • 用户必须保留并跟踪所有信号和处理程序才能正确手动取消订阅。
  • API 中的信号签名不明确,无需任何类型检查,您几乎可以订阅任何签名,然后成功编译(即使有一些错误),并在运行时获取无效数据。如果发生任何 API 更改,编译器不会发出通知,这又会导致在运行时获取无效数据。
  • 如果订阅的对象被删除,则使用类成员函数订阅时会发生崩溃(这是一种常见情况,因为用户经常忘记取消订阅)。
  • 需要调用 MakeCallback() 并对 lambda 表达式进行类型转换才能使用 addCallback( )函数。

引入新的事件系统来替代旧的回调,具有强大的可靠性和更好的灵活性,为您带来以下功能:

  • 新事件对函数签名进行严格的类型检查。现在可以清楚地看到回调(事件处理程序)函数需要多少个参数以及哪些参数。
  • 编译时检查确定参数类型是否与事件类型匹配。
  • 使用 lambda 函数更简单地订阅事件。无需执行内部类型转换。
  • 新的EventConnection 处理程序不需要您手动取消订阅。它会自动断开析构函数中的任何连接。
  • 更加灵活:您可以暂时禁用特定事件来执行某些操作而不触发它们,并且您可以仅打开和关闭特定连接 (EventConnection)。
  • 批量管理:一组不同的订阅可以链接到一个 EventConnections 实例,使您能够在一个时间段内取消订阅所有订阅单一函数调用。

新的事件系统将需要手动迁移。但无需担心,因为整个过程涉及在代码中查找“addCallback” 的所有实例,并用新方法替换它们按照API 迁移指南中的说明进行操作。对于中型项目,一名开发人员可以在几天内完成。

OpenSSL 支持

我们已从 axTLS 库切换为 OpenSSL ,一个商业级的 TLS(以前称为 SSL)的开源工具包,其功能更加强大、功能齐全且文档齐全。为了您的方便,新的 SSL Socket 示例已添加到适用于 Sim SDK 版本的 Sim C++ Samples 套件中。

景观地形改进

Landscape Terrain 需要处理大量数据。在此版本中,我们增强了无损和有损压缩模式下地形数据的压缩/解压缩。

根据所选择的算法(无损或有损),解压的速度变得~65%快,而压缩的速度7%74%快。

其他引擎改进

  • 为引擎添加了FastShutdown模式,由操作系统执行内存清理(通过 -fast_shutdown 启动命令行选项控制)。 默认情况下,启用此选项可确保您的应用程序快速退出并释放所有资源。 如果您需要在关闭引擎后重新初始化引擎(在 shutdown() 之后调用 init())而不重新启动应用程序,您可以禁用 此选项,但在这种情况下,引擎关闭过程可能会花费更多时间。
  • 改进了对包含非拉丁符号的正确处理的 STEP/STP/IGES/IGS 文件的导入。
  • 修复了启用 LOD 平滑淡入淡出选项时分配的不透明材质的 Mesh Cluster 阴影 LOD 突然切换的问题。
  • 光源变换中的缩放组件被锁定为 1,任何更改都会被忽略以避免视觉伪影。
  • 有关每个控制台参数的存储位置的信息现在显示在控制台命令说明中。
  • 当场景中没有处于此状态的对象时, Transparent Blur 缓冲区的渲染现在被禁用。
  • 修复了一些引擎子系统(分析器,屏幕上的消息,输入)在引擎启动时未聚焦并启用后台更新时无法操作的问题。
  • 修复了导入在 Daz3D 软件中创建的模型时导致导入模型的骨骼层次结构断裂的问题。

Unigine编辑器

全屏视口

您现在可以使用键盘快捷键在编辑器中最大化视口。只需在键盘上按F11,视口就会全屏显示。再次按F11 将使您退出全屏模式并将视口返回到其原始大小和位置。

更多可视化工具和助手

可视化调试有助于将场景中的内容和设置调整至完美,因此这里的工具越多越好!在此版本中,我们在 Helpers 菜单中添加了以下帮助可视化工具:

  • 对象选定表面的切线、双切线和法线 (TBN) 矢量的可视化工具。

  • 可视化工具照明模式使您能够检查哪些对象使用Static, DynamicAdvanced 照明模式。

并将可视化工具调试到渲染调试菜单:

  • 存储到最近表面的每像素距离的缓冲区的可视化器 (适用于 Raymarching Environment Probe)。
  • Metering Mask 纹理的可视化工具,用于控制自动曝光和白平衡校正对整个屏幕的影响,其中每个像素根据指定的纹理蒙版进行重要性加权。

改进的世界节点层次结构窗口

当您处理包含数千个节点的大型世界时,每个微小的细节都可以使频繁执行的操作更快、更容易,并且灵活性也很重要。为了简化世界管理并使其更加方便,我们更新了 World Nodes 窗口,将其分为以下列(能够选择要显示的节点):

  1. 带有节点类型图标的节点名称
  2. 显示是否有分配给节点的逻辑组件/属性
  3. 节点选择开关,允许你选择哪些节点可以被选择,以过滤掉那些不应该受到影响的节点(例如,如果你只想在森林中使用框架选择工具选择字符)
  4. 节点转换锁定使您能够防止特定节点的位置发生不必要的更改
  5. 节点启用/禁用切换

批量重命名

全新强大的 Batch Rename 工具现已推出,让您能够重命名多个对象(节点、属性、材质或资源)立即编辑,为您节省大量时间,尤其是在处理大型项目时。您可以使用该工具来:

  • 为所选对象的名称设置前缀
  • 为所选对象的名称设置后缀
  • 更改所选对象名称的大小写
  • 查找指定的符号组合并将其替换为您定义的组合

该工具可通过在主菜单中选择 Tools -> Batch Rename,或右键单击Asset Browser中的文件或任何层次结构窗口中的项来获得。如需了解更多信息,请参阅相关文章

更新了带有类似资源搜索的 Cleaner

Cleaner 是一款用于优化项目并通过删除不必要的资源来节省磁盘空间的工具。

现在,它使您能够找到类似的资源,以便您可以确定它们是真正需要的,还是您只是忘记了删除它们。根据所选分辨率(更高分辨率)生成的预览对资源进行预检查。您可以过滤掉要检查的资源类型(例如,仅将范围限制为纹理),指定相似度阈值来定义资源被视为相似的程度。该工具将显示按相似性分组的资源,以便您可以决定删除哪些资源。

Cleaner 工具的所有功能(之前显示在堆叠在一个窗口布局中的专用手风琴小部件下)已移至单独的选项卡,以便于专注于每个选项卡特定任务。

您可以在更新的文章中找到更多详细信息。

更好的 GLTF/GLB 支持

现在您可以导入 Mesh Skinned 对象、它的动画和变形目标;此功能在运行时也可用。

PBR 纹理的导入也得到了改进。

材质图编辑器更新

材质实际上可以修改对象的几何形状(置换贴图、曲面细分等),以防初始几何形状和材质更改后的几何形状之间的差异变得显着;它可能会导致视觉不一致(物体边界、遮挡等之间的接触检测不正确)。为了补偿这种差异,我们添加了通过基于图形的材质改变对象几何形状来改变对象边界的功能。在可视材质编辑器中,将参数或某个值连接到 Material 节点的 Vertex Offset 输入,会自动将 Bound Scale参数添加到材质的基本设置中。如果移位的顶点超出默认对象边界,您可以使用此参数手动调整补偿因子(要添加的值以扩展对象边界以覆盖最大差异)。

添加了以下新节点:

其他 UnigineEditor 改进

  • 编辑曲线变得更加方便,可以沿着两个轴放大和缩小曲线视图。

  • Parameters 窗口中的逻辑组件/属性及其字段的长列表现在可以通过单击相应的图标折叠和展开,就像在 World Nodes 层次结构窗口中一样。

  • 增加了Invert G-Channel的选项,用于从导入的模型批量导入OpenGL法线贴图。
  • 修复了曲线编辑器中的 Revert 按钮导致撤消/重做堆栈被清除的问题。
  • 在变换操作中按住 Shift 键现在将以正常速率的1/4变换对象,允许更精细的控制。
  • Cluster Paint Mode 中的画笔现在将忽略 Filter 列表中已关闭的对象,因此当上面的一个未选中时,您可以绘制底层集群。
  • Restore Defaults 按钮现在将值重置为用户选择的默认设置。
  • 热键预设(QWERTY、QWERTZ、AZERTY)现在会在您切换区域设置时自动更新。
  • 现在,当选择多个节点时,可以编辑掩模类型参数。
  • 现在,您可以通过相应的按钮在 World nodes 层次结构窗口中聚焦多个选定的节点。

  • 修正了整数参数滑块操作不正确的问题。
  • 修复了2D数组图像 Preview 中不可用的Mip级别选择的问题。
  • Parameters 窗口中的参数子类别(折叠式)的状态(展开/折叠)现在被保存,因此当您在节点,属性/组件或材质之间切换时,您将不必再次重新排列(重新展开/折叠)它们。
  • 添加了一个选项,使项目中的基础材质可编辑(User Project Settings -> Editable Base Materials)。
  • 优化了 Cluster Paint Mode 的绘制,具有大量集群元素(超过 5 万个)。
  • 修复了在重新导入大型 Landscape Layer Map 时,操作系统事件缓冲区溢出的问题,有时会导致意外删除相应的 *.lmap 资源。
  • 增加了为创建新节点时使用的许多设置设置默认值的可能性:Immovable、Lightmaps、Intersection、CollisionPhysics Intersection。 相关设置可通过 Settings 窗口获得(Settings -> Editor -> Project Settings -> Default Settings For Node Creation)。

  • 修复了对曲面进行多重编辑导致无法应用已为其中一个曲面设置的值的问题。
  • 修复了删除基础材质图后删除基于孤立图的材质的问题。
  • 修复了缩放对象的捕捉问题。
  • 单实例窗口的热键现在也可以打开和关闭它们。
  • 聚焦于 Player 现在意味着聚焦于其图标而忽略其视锥体的大小,而 Shift + F 允许聚焦于摄像机边界.
  • 固定克隆和移动操作 (LMB + Shift) 完成后克隆节点的选择,选择不复位。
  • 修复了模型导入设置中 Front/Up 轴的选择。
  • 修复了复制和粘贴表面参数的问题, Custom Surface 纹理也会被复制。
  • 修复了在 Tracker 工具中打开动画项目列表的目录图标不工作的问题。
  • 优化了在选择大量节点(数万)的情况下多重选择的参数显示,消除了编辑器冻结。多种材质的重新定义也得到了优化。
  • 修复了使用 Ctrl + P 组合时,上层定义的问题。
  • 修复了视口中表面 LOD 的选择。
  • 修复了使用 Randomizer 工具替换节点的问题。
  • 修复了当使用 Snap to Surface 工具时,沿表面法线方向不正确 (Orient By Normal) 的问题。缩放对象的抓取也固定了。
  • 修复了某些编辑器窗口在 Linux(Ubuntu 23.04、GNOME 44.3)上未显示的问题。
  • 修复了 Windows 上 DPI 缩放的一系列问题。

Sandworm 工具改进

  • 增加了对用于建筑物生成的基于图形的材质 (*.mgraph) 的支持。
  • 修复了 ObjectTerrainGlobal 上的接缝问题。
  • 修复了有道路和建筑物的区域中树木的生成。
  • 修复了使用压缩算法生成地形数据时导致伪像和数据丢失的问题。
  • 修复了以下问题:如果任一侧的边界大小超过 30 度,则无法使用 GeodeticPivot 投影生成 ObjectTerrainGlobal
  • 修复了植被蒙版的混合。
  • 修复了沿线性矢量对象应用的纹理之间存在间隙的问题。
  • 修复了影响建筑物生成的问题。

Add-On Store

  • 您现在可以对附加组件进行评分并留下评论,以分享您的想法、建议或使用它们的经验。
  • 添加了针对各种 SDK 版本和操作系统将多个包附加到同一附加组件的功能,因此现在无需为此目的创建多个附加组件版本。
  • 现在考虑到指定的过滤选项,提高了搜索结果的相关性。
  • 添加了通过专用反馈表直接向出版者发送问题的功能。

有关新功能的更多信息,请参阅更新版本的 Add-On Store 文档

IG更新

  • 添加了 GPU 粒子的界限,使其在光源渲染方面的工作方式与 CPU 粒子相同(考虑到为透明度渲染的光源数量的限制)。这使得GPU粒子照明看起来更加一致和稳定,而不需要随机切换世界上所有光源的开关(没有边界,就不可能定义应该渲染哪些光)。
  • 修复了通过 Particles Spacer 剪切具有高尺寸和长度参数值的 Length 类型粒子的问题。
  • 修复了与使用 CIGIConnector 相关的插值问题,导致图像抖动在大屏幕上尤其明显。

演示和示例

新无人机演示

推出新的 Drone Simulator 演示项目,展示在桌面和 VR 模式下在 UNIGINE 上渲染无人机图像的能力,同时还提供游戏手柄控制无人机。该演示使用基本的物理飞行模型,提供身临其境的飞行体验。此外,它还提供各种摄像机模式来模拟不同的 POV、连接类型和传感器。

该演示项目可以用作模板来涵盖典型的无人机用例:

  • 航拍
  • 基础设施检查与维护
  • 搜索与救援行动
  • 应急响应与灾害管理

新的 C++ SIM 示例

引入一组新的 C++ 示例,展示各种模拟任务(仅适用于 Sim SDK 版本),并将在即将发布的 SDK 更新中进行扩展。 High-Level Car Physics System 演示现已成为该套件的一部分,包括许多新示例:

  • Rope 模拟示例:
    • Crane 演示如何用吊绳转移物体来模仿起重机。
    • Wires 说明如何通过物理模拟创建逼真的电线。
  • SSL Socket 展示通过 SSL 连接与服务器进行消息交换的实现。

新 API 示例

展示新动画序列器的新 Animation 示例包已添加到 C++ API 示例中,包括以下内容:

  • MaterialAnimation 根据名称和索引显示材质的发射比例和颜色参数。
  • NodeAnimation 动画节点的位置、旋转和缩放。
  • PlaybackLayers 创建两个带有三个动画轨道(位置,旋转和缩放)的播放:第一个将每个轨道放在单独的图层上并同时播放,而第二个将轨道在单个图层中顺序播放。
  • PropertyAnimation 动画化一个属性参数。
  • SingletonAnimation 动画全局重力以及淡入淡出颜色渲染参数。
  • WidgetAnimation 动画小部件的字体颜色和大小以及它们的位置。

C++ 示例 套件已进行以下更新:

  • 用于从 Internet 流式传输文本数据和图像的新示例,展示了对服务器的异步 http 请求的实现并显示结果:第一个示例中为 PNG 或 JPEG 图像,第二个示例中根据输入的位置名称提供气象数据。
  • 添加了一个新的 Mask Paint 示例,演示如何在运行时使用自动生成的 ObjectMeshClutter 元素自动生成在其上绘制地形蒙版。

C# 组件示例 套件已更新为以下内容:

  • Boat 浮力示例展示了如何模拟物体的水浮力,使其漂浮在Global Water中。

免费学习课程

在 UNIGINE 上推出我们的免费学习课程!这是一门入门课程,专为具有基本 C# 编程技能和对 3D 应用程序有基本了解的个人量身定制,可帮助他们快速上手并运行。如果您已经使用过UNIGINE一段时间了,不要急于错过。看一眼,您可能仍然会发现一些有趣的东西,一些解决方案或部分代码可能会在您的项目中派上用场。

在这门综合课程中,您将深入研究广泛的主题,包括:

  • 动画和物理
  • 照亮世界:照明
  • 掌握材质创建
  • 音景:添加声音和音乐
  • 制作引人入胜的 GUI 元素
  • 实现最佳性能的优化基础知识
  • 通过视频录制捕捉您的创作
  • 另外,还有更多值得探索的地方!

成功完成课程后,您不仅会获得实践经验,还会通过四个令人兴奋的项目丰富您的作品集。这些项目基于提供的模板构建,包括:

  • ArchViz:使用交互式对象创建沉浸式室内场景。
  • FPS:通过简单但引人入胜的项目深入第一人称射击游戏的世界。
  • 竞赛:通过制作街机风格的越野赛车游戏来测试您的创造力。
  • VR:通过专为虚拟现实头盔设计的项目进入虚拟现实领域。

本课程专为与免费的 UNIGINE Community SDK 结合使用而设计,所有人均可使用,无需注册!不要错过抓住这个难得的机会来提高您的技能并拓宽您的视野。

准备好开始了吗?注册免费社区 SDK,访问 https://learn.unigine.com/ 立即开始您的 UNIGINE 学习历险记!

请注意,课程中使用的代码和内容目前针对 SDK 版本 2.17 进行了优化,但很快就会针对最新的 2.18 SDK 进行更新。

文档

感谢您的阅读,跟上更新,我们将继续努力让 UNIGINE 变得更好!

- 您的 UNIGINE 团队

Build: ()