Kanzi 3.8 发行说明

新增功能

  • Property Target Easing Interpolator

    当您想要动态设置属性的目标值,并希望使用缓动函数将当前值随时间插值到目标值时,使用 Property Target Easing Interpolator。缓动函数使您能够创建逼真的动画,从而提供更愉悦的用户体验。

    请参阅 使用缓动函数插值属性值。

  • 用于绑定表达式的新功能

    在绑定表达式中,您现在可以使用:

    • 三角函数

    • 关系运算符

    • 逻辑运算符

    • 访问器函数

    • 向量函数

    • 向量和四元数的乘法

    请参阅 Bindings expressions 参考。

    ../../_images/binding-operations.png
  • Asset Packages

    使用资产包,您可以创建一个包含内容的资产库,例如 UI 组件、材质、画刷、样式和纹理。使用资产包可以使这些内容在不同的 Kanzi Studio 项目中随时可用,或者在公司内部共享这些内容以用于所有的 Kanzi 应用程序。

    请参阅 资产包。

    ../../_images/myassetsource.png
  • Cubemap 渲染通道

    Cubemap 渲染通道可用于在 3D 节点的表面上创建环境的动态反射。

    请参阅 创建立方体贴图反射。

    ../../_images/preview-cubemap-reflections.gif

功能改进

  • Kanzi 现在将字体文件作为字体系列资源处理,该资源可以包含任意数量的字体文件:

    • 引入了 FontStyleDefinition 类以包含在 Kanzi 内传递的一组字体样式属性值。

    • 将字体样式设置器和获取器函数从 TextFormat 和 TextLayouter 类移动到 FontStyleDefinition 类。

    • 引入了 FontRuntime 类以在运行时将 FontStyleDefinition 映射到字体文件 (FontFile)。FontRuntime 是不可变的。当字体样式更改时,从 FontManager 请求一个新的 FontRuntime 对象。

    • 引入了 FontStyleConcept 类,其中包括用于 FontRuntime 的辅助函数。

    • TextFormat、TextLayouter 和 TextShaper 现在使用 FontRuntime 而不是 Font。

    • 您现在可以使用 Font Weight 和 Font Style 属性设置字体的外观,这些属性设置 Text Block 节点使用字体系列中的哪个字体文件来渲染文本。

    • Font 属性 (Node::FontProperty) 被 Font Family 属性 (Node::FontFamilyProperty) 替换。

    要了解如何将您的 Kanzi 应用程序迁移以使用更改后的 API,请参阅 字体更改。

  • 改进了绑定表达式的功能:

    • 添加了矩阵和变换函数 INVERSE 和 TRANSFORM。

    • 添加了对矩阵的支持以及矩阵与 SRT 转换之间的转换。

    • 您现在可以使用资源 ID 访问文本资源。

    请参阅 Bindings expressions 参考。

  • 在资源加载方面的改进:

    • ResourceManager::LoadTask 现在具有 LoadAndFinish 和 FinishOnly 加载任务类型。FinishOnly 加载任务跳过加载器线程,Kanzi 将它们直接排队到主线程 FinishingQueue。

    • 加载任务现在可以触发依赖项的后台加载。这改善了加载线程的使用,提高了加载时间,并使后台加载更加流畅。

    • 新增了这些资源类型以使用加载任务和加载任务依赖关系。

      • Brush

      • Material

      • Mesh

      • Render Pass Prefab

      • State Manager

  • 改进了在 kzb 文件中存储资源字典的方式。这使得具有大型未使用资源字典(例如本地化表)的 kzb 文件加载速度更快。

  • 引入了针对 setProperty、addPropertyModifier、removePropertyModifier、copyLocalValue 的速度优化。

  • 引入了 Kanzi Engine API,以便通知应用程序 UI 已挂起:

    • 添加了重写函数 onSuspend,该函数从 suspendOverride 调用 Kanzi。

    • 添加了取消 UI 挂起的功能。

  • 在 Kanzi Engine API 中引入了 PropertyTypeRegistry,它保留了应用程序中所有已注册属性类型的列表。请参阅 kanzi::beginPropertyTypes 和 kanzi::endPropertyTypes。

  • 改进了 ResourceManager 析构函数以打印引用资源的完整列表。

  • 添加了这些渲染目标格式:

    • ARGB 8位 (A8R8G8B8_UNORM)

    • Alpha 8位 (A8_UNORM)

    • 灰度 8 位 (L8_UNORM)

    • 灰度 alpha 8 位 (L8A8_UNORM)

    • Alpha Luminance 8-bit (A8_L8_UNORM)

  • 改进了预设依赖项的收集。对于在预设中使用的 State Managers 和资源 ID,Prefab View 异步预设更改现在可以在后台加载资源依赖项。

  • 将字体引擎后端转换为插件,使您能够同时为 Kanzi Studio Preview 安装 FreeType 和 iType 字体引擎。在支持动态库的平台上,这使您能够在应用程序启动时选择字体引擎。请参阅 FontEngine。

  • 在 Kanzi Studio 中,触发器现在是项目项,这使您能够:

    • 通过拖动重新排序触发器。

    • 复制和粘贴触发器、动作和触发条件。

    • 在项目的上下文中修改属性。

  • 对 Performance HUD 的改进:

    • 您现在可以配置 Performance HUD 的位置。请参阅 性能信息位置。

    • 在 Performance HUD 中,您现在可以看到计时器订阅、重复任务和动画的数量。请参阅 PerformanceInfoLevel。

  • 恢复了 Overdraw 可视化。

    Overdraw 可视化表示 Kanzi 多次渲染到同一像素的区域。较浅的绿色表示较高的过度绘制量。

    请参阅 排除应用程序性能问题。

    ../../_images/overdraw-enabled.png
  • 对 Kanzi 处理硬件按键的方式进行了以下改进:

    • 引入了 KeyManipulator 类。KeyManipulator 在用户按下和释放键时分派 KeyPressedMessage、KeyReleasedMessage 消息,并在取消时分派 KeyCanceledMessage 消息。Keyboard.KeyDown 和 Keyboard.KeyUp 消息现已弃用。使用 KeyManipulator 消息,并为每个您想处理的键使用专用的键操控器。

    • NavigationManipulator 类现在处理导航键,例如 ↑ (向上箭头)、↓ (向下箭头)、→ (向右箭头)和 ← (向左箭头)、Home、End、Page Up、Page Down 键盘键。

    • FocusNavigationManipulator 类现在处理用于焦点链和方向焦点导航的键。使用此操控器在焦点范围节点上。要在焦点范围上设置操控器,请使用 FocusScope。

    要了解如何将您的 Kanzi 应用程序迁移以使用更改后的 API,请参阅 硬件键处理更改。

  • 重构的 MessageType:

    • 将 kzuMessageType 替换为 AbstractMessageTypeDescriptor。

    • MessageType 现在自动附加其参数 metaclass。这使得使用宏 KZ_METACLASS_MESSAGE_TYPE 将消息类型附加到拥有类变得可选。

    • 对于 kzb 注册消息,消息参数类固定为 MessageArguments。

    • 将以 AbstractMessageType 作为参数的 MessageArguments 构造函数替换为 Node::dispatchAbstractMessage。

  • 引入了输入操控器节点组件,以维护附加到节点的操控器。您可以在 Node Components > Input Manipulators 中找到这些组件:Click Manipulator、Multi-Click Manipulator、Long-Press Manipulator、Pan Manipulator、Key Manipulator。请参阅 使用输入操纵器。

    ../../_images/input-manipulators.png
  • PanManipulator 现在在这些消息中报告速度:

    • PanManipulator::MovedMessage

    • PanManipulator::EnteredMessage

    • PanManipulator::LeftMessage

    • PanManipulator::FinishedMessage

  • 添加了功能和 Depth Compare Function 属性,用于在 Composition Target Render Pass 中设置深度渲染目标的深度比较模式。

    ../../_images/depth-compare-function.png
  • 改善了 Kanzi Studio 的可用性:

    • 在 Kanzi Studio 中,Node Components 中的项目现在使用树控件。此改进为您提供了更多的灵活性,并减少了在 Node Components 窗口中工作时弹出窗口的数量。

    • 您现在可以直接从 Kanzi Studio 在默认的 Windows 应用程序中打开文件。在 Library > Resource Files 中,右键单击一个文件,然后选择 Open With Default Windows App 或 Open With… 命令。

      ../../_images/open-with.png
    • 更新了 State Manager、State Tools 和 Styles 的 Kanzi Studio 图标。

更改

  • 将 PVRTexTool 更新到了 4.20.0 版本。

  • 引入了具有主要和次要修订的 kzb 格式版本控制。在 Kanzi 3.8 中,kzb 格式版本为 11.0。

  • 将 Kanzi Engine 插件元数据属性的语法从 SortingIndex 更改为 metadata.sortingIndex。请参阅 SortingIndex。

  • 移除的遗留功能:

    • 旧版 kzb 格式支持

    • kzs_thread

    • kzc_file 和 kzc_input_stream

    • kzc_output_stream

    • kzs_mmap

  • 在 Kanzi Studio 中,自定义 Message Types 现在与 Property Types 分开。在 Kanzi Studio 中,您可以在 Library > Message Types 中找到它们。

    ../../_images/library-message-types.png
  • 在 Kanzi Studio 中统一了绑定操作的名称和大小写。

  • 平台包 qnx700_screen_aarch64 对于 Kanzi 3.8 不支持 ES2。

  • Kanzi Studio 现在更定期地向 Rightware 发送使用报告,这使我们能够不断改进 Kanzi Studio。

要了解如何迁移您的 Kanzi 应用程序以使用更改后的 API,请参阅 Kanzi 3.8 迁移指南。

文档 (Documentation)

修复

ID

描述 (Description)

区域

102522

修复了蒙皮网格导入和骨骼矩阵计算的问题。

请参阅 蒙皮网格的更改内容。

Kanzi Engine

10852, 10731, 10651

改进了对损坏的 PNG 和 JPEG 图像的处理。现在,Kanzi 在尝试加载损坏的 PNG 或 JPEG 图像时会抛出异常。

Kanzi Engine

10678

修复了渲染某些无法打印的字符的问题。在此修复之前:

  • FreeType 字体引擎后端按照不影响渲染的零宽度可渲染字形渲染无法打印的字符。

  • iType 字体引擎后端使用未找到的字形渲染无法打印的字符。

10688

修复了一个问题,该问题导致在资源加载器线程处于活动状态时,加载具有自定义过渡动画或某些触发器和操作的 State Manager 时出现断言。

Kanzi Engine

10624

修复了对已损坏或不完整的 UTF-8 字符串输入的处理方式。

Kanzi Engine

10539

使用 iType 字体引擎时,Kanzi 现在将字距调整委托给 WTShaper。WTShaper 从字体的 GPOS 表中读取字距调整数据,对于未在 GPOS 表中定义字距调整的字体,使用 kern 表作为后备。

Kanzi Engine

10487

当使用从 State Manager 中的属性值读取的 SetPropertyAction 修补节点时,Preview 不再终止。

Kanzi Engine

10320

修复了无法显示所有启动性能剖析程序的问题。

Kanzi Engine

10193

当您不使用动画在状态之间进行过渡时,状态管理器现在会发送 Transition Started 和 Transition Finished 消息。请参阅 在状态间进行动画迁移。

Kanzi Engine

10178

修复了导致缩放节点的内容显示在另一个节点中的问题。

Kanzi Engine

10172

修复了静态寿命的 MessageArguments 实例导致内存泄露的问题。

Kanzi Engine

10125

当 State Manager 在状态转换期间分派 Left State 和 Entered State 消息时,它现在在这些消息上设置 StateGroup 参数。

Kanzi Engine

10107

修复了将不可见 Model3D 替换为 nullptr 后,无法释放其纹理资源的问题。

Kanzi Engine

9955

修复了 FromToAnimation,以便在所有情况下的持续时间内返回 To 值,尤其是在持续时间为零的时间点。

Kanzi Engine

10647

修复了导致 Preview 错误显示 State Tools 处于 Edit 模式的问题。

Kanzi Studio

另请参阅

Kanzi 3.8 迁移指南

已知问题