02:快速掌握kanzi的文件管理
其他/设计爱好者/64天前/359浏览
版权
02:快速掌握kanzi的文件管理
一、kanzi的工程文件说明
1、Kanzi Studio 目录
在kanzi安装完成后,系统会创建工作区目录,如D:\KanziWorkspace3_9。在D:\KanziWorkspace3_9中,文件夹结构如下:
- Assets目录包含 RuntimeAssets 和 kzuiassets 两个 Kanzi Studio 项目。RuntimeAssets 用于为引擎默认着色器和材质生成二进制着色器,减少启动时的编译时间;kzuiassets 用于为 3D 文本渲染生成二进制着色器,优化 3D 文本的渲染性能。
- Engine目录包含 Kanzi Engine 二进制文件:
- applications目录包含 kzb 播放器的源代码,用于在目标平台加载和运行 kzb 文件,可用于预览验证或作为构建自定义应用的参考。
- cmake目录中包含使用 Kanzi Engine 构建项目的 CMake 配置文件。
- configs目录包含使用 Kanzi Engine 构建项目的配置文件。
- include目录包含 Kanzi Engine 的 .h 和 .hpp 的头文件。
- lib目录包含每个平台的 Kanzi Engine 二进制库,以及用于使用 Kanzi Engine 构建项目的 CMake 配置文件。
- libraries目录包含 Kanzi Engine 所需的第三方库。
- scripts目录包含为不同平台构建 Kanzi 应用的脚本。
- Examples目录包含 Kanzi 示例项目,展示了某些 Kanzi 功能的运作方式。
- Projects目录是Kanzi Studio创建项目的默认位置。
- Templates目录包含你可以作为 Kanzi 应用程序编程起点的模板。
- Tutorials目录包含 Kanzi 教程的项目和资源。
2、创建kanzi工程
打开 Kanzi Studio,在启动时的窗口点击
New Project
。选择创建工程的路径。根据需求在
Template中
选择工程类型。随后点击Create即可创建kanzi工程。
创建后的
工程位置
如图所示:
工程的template类型分为:
- Kanzi Studio project:只做渲染、不写代码逻辑
- 只创建 Tool_project,没有 C++ 应用代码。
- 适合纯 Studio 逻辑。
- Application:应用程序模板创建 Kanzi Studio 项目,使用 Kanzi Engine 应用程序
会创建:
- Application 目录:包含 C++ 应用的结构和模板代码。
- Tool_project 目录:Kanzi Studio 工程。
适合要用 C++ / Kanzi Engine API 写逻辑的应用。
- Application with Kanzi Engine plugin:带有 Kanzi Engine 插件.
会创建:
- Application:包含 C++ 应用 + 原生 Engine 插件模板代码。
- Tool_project:Kanzi Studio 工程。用于需要自定义组件、扩展 Engine 功能的场景。
- Application with data source plugin:带有数据源插件模版
会创建:
- Application:包含 C++ 应用 + 数据源插件模板代码。
- Tool_project:Studio 工程。
- Android application:Android 应用模版
创建基于 Kanzi Android framework 的工程(含 Gradle 工程),用于 Android 目标平台。
- Android application with Java plugin:带有 Java 插件模板的 Android 应用
会创建:
- Application:Android 应用 + Java 插件的工程结构与模板代码。
- Tool_project:Studio 工程。
3、kanzi工程文件结构介绍
kanzi工程的文件结构如图所示:
如果创建kanzi工程时,只选择
“Kanzi Studio project”
模板(只做渲染,不带引擎应用),则
不会
有 Application 目录,因为该类型项目不包含应用程序代码,只用于资源和场景编辑。
3.1 Tool_project:Kanzi Studio 工程部分
Tool_project 目录中包含 UI 工程和资源文件,是导出 kzb 的来源。这些目录在 Kanzi Studio 中对应 Library 面板下的 “Resource Files”,Studio 会自动与磁盘目录同步。其中主要包含这些内容:
- 工程文件(kzproj),描述项目中的节点、资源、属性设置等。文件内容为XML 格式,是在 Kanzi Studio 里打开和编辑的主文件。
- 3D Assets,存放导入的 3D 资源文件(如 FBX 等)。Kanzi 会从这些文件中提取网格、动画等,在导出 kzb 时只导出提取后的数据,不直接导出原始 3D 文件。
- Images,存放导入的图片文件(PNG、JPG 等),用于纹理、2D 图像等。
- MeshData,存放导入的 3D 网格数据。
- Scripts,存放脚本文件。
- Fonts,存放字体文件(ttf/otf 等),用于文本渲染。
- Shaders,存放着色器文件。
- Generic,存放 Kanzi 不识别为 3D、图片、字体或 shader 的其他文件。Kanzi 不对这些文件做处理,但会原样打包进 kzb,可供插件或自定义逻辑在运行时从 kzb 中读取。
- Temp,存放临时文件和缓存目录。
3.2 Application:应用程序代码部分
当用Application、Application with data source plugin、Application with Kanzi Engine plugin的kanzi模板创建工程时,会自动生成 Application 目录。有应用程序代码开发相关使用者需要了解Application中的这些内容:
- bin,存放从 Tool_project 导出的 kzb 文件和应用配置文件。这是运行时加载 UI 内容的地方。
- cmake,存放 CMake 构建配置的辅助脚本。
- configs,存放针对不同平台的构建配置文件(例如 Windows/Android 等)。
- src,C++ 应用源码目录。这里实现应用逻辑、与 Kanzi Engine API 交互等。
- CMakeLists.txt,用于 CMake 生成 Visual Studio 解决方案的脚本,描述如何编译链接 Kanzi 应用。
- generate_cmake_vs<Version>_solution.bat,生成 VS 工程的批处理脚本,例如 generate_cmake_vs2019_solution.bat。
- build_vs<Version>,运行生成脚本后出现,里面是 Visual Studio 解决方案和工程文件。
3.2.1 关于Application中源码编译和开发环境的说明
- Visual Studio (Windows):在 Windows 平台上,Kanzi 应用通常使用 Microsoft Visual Studio 进行代码编写、编译和调试。上述的 .bat 脚本和 build_vs* 目录就是为此准备的。需要预先安装 Visual Studio(2017、2019、2022) 和 C++ 开发组件。
- 其他平台 (例如Android):构建过程略有不同。需要使用 CMake 命令,并指定对应的构建配置(在 configs/ 中)来生成适用于 Android Studio (Gradle/NDK)的项目。
- 核心流程:无论使用哪种开发环境,基本流程都是:编辑 src/ 下的源码 -> 使用 CMake 生成对应平台的工程 -> 在生成的工程中编译 -> 运行生成的可执行程序。
二、kanzi的导出文件说明
1、什么是kzb?
kzb 文件
是 Kanzi Studio 项目的二进制打包结果,运行 Kanzi 应用必须先把项目导出为 kzb。导出的kzb文件默认放在<ProjectName>/Application/bin,或你在 Project > Properties > Binary Export Directory 里设置的目录。Kanzi 会把 kzb 中的内容加载到内存和 GPU,需要渲染时再使用这些资源。
.kzb.cfg
文件
.kzb.cfg 文件的主要作用是列出并配置应用要加载的 kzb 文件,相当于“kzb 清单/配置文件”。
kzb 的内容和大小取决于项目以及导出配置,一般会包含:
- 属性类型(Property types)
- 渲染通道 prefab(Render pass prefabs)
- 资源字典(Resource dictionaries)
- 资源文件(图片、着色器等,3D 资产文件本身不导出,只导出从中导入的网格、动画等)
- 状态机(State managers)
- 样式(Styles)
- 标签(Tags)
- 纹理(Textures)
- 主题(Themes)及其资源(可作为主题资源包单独导出)
注意
:
- 描述信息(Description 属性)不会导出到 kzb,只用于项目文档。
2、主 kzb 与资源包
2.1 主 kzb
使用菜单 File > Export > Export KZB 导出主 kzb。
- 默认导出到项目属性里的Binary Export Directory指定目录。
- 默认包含整个项目内容(除被标记为单独打包的主题/本地化资源等)。
Screen 节点是否导出到 kzb 会影响该 kzb 能否作为启动 kzb 使用
- Screen 的Disable KZB Export关闭(默认):kzb 中包含 Screen,可作为应用启动 kzb。
- 打开:kzb 不含 Screen,只能在运行时由已有 Screen 的应用动态加载。
2.2 主题资源包
主题资源包是只包含某个 Theme 资源的 kzb,用于减小主 kzb、按需加载或在有限存储/内存下切换主题。
- 非 baked 主题 + Theme packs主 kzb:包含节点树和所有主题共用资源。每个被勾选导出的 Theme:生成一个独立 kzb,只含该 Theme 使用的资源(不含共用资源)。目录结构:主 kzb:<Project>/Application/binTheme packs:<Project>/Application/bin/Theme_packs
- Theme pack 文件名 = Theme 名。
- baked 主题 + Theme packs(Theme Group 级)
烘焙主题就是把 Theme 选择在导出时固化进 kzb,使节点直接引用最终资源,从而换取更低内存和更好性能,但失去在不加载新 kzb 的前提下自由切换主题的能力。
当 Theme Group 启用
Export Baked Usages
并使用 “Export Baked Theme Binaries” 导出时,
- 为每个被导出的 Theme Group 生成一个主 kzb:包含应用节点树 + 多个 Theme 共用资源。路径:<Project>/Application/bin/<ThemeGroupName>=<BakedThemeName>
- 为 Theme Group 中每个被勾选导出的 Theme 生成一个 Theme pack:只含该 Theme 独有资源。路径:<Project>/Application/bin/<ThemeGroupName>=<BakedThemeName>/Theme_packs文件名 = Theme 名。
3、kzb文件的导出方式
- Export KZB:导出主 kzb 文件。可通过命令参数控制是否将主题和本地化资源单独导出为资源包,以及是否同时导出 XML 版本的 kza 文件。
- Export Baked Theme Binaries:导出 baked 主题相关的 kzb。根据 Theme Group 设置,可生成单个完整应用 kzb,或 "Theme Group 主 kzb + Theme packs" 组合(主 kzb 含公共资源,Theme packs 含各主题专用资源)。
- Export Descriptions:导出项目中 Description 文本到一个 txt 文档(仅文档用途,不进 kzb)。
- Export as KZB Player for Windows:从项目导出 kzb 文件,再用内置的 kzb Player 打包成一个可直接运行的 Windows exe 应用。
可以
自定义导出内容
:在 Project > Properties > Binary Export 中配置导出行为(如网格优化、图片处理、着色器源码导出等)。对于不需要的节点或资源,可在其 Properties 中启用 "Disable KZB Export" 属性,将其从 kzb 中排除。
4、kzb文件使用方法
- 在 Windows 上预览 kzb(kzb Player)
当使用Export as KZB Player for Windows方法导出kzb后,生成的应用默认位于Tool_project\Application Player文件夹中,有 exe 文件,双击即可在 Windows 上运行。如图所示:
exe 文件运行失败常见原因:缺少运行时依赖库:需要安装 Microsoft Visual C++ 或 Java 插件路径问题:使用 Java 插件时,需将 JDK 的 bin 和 bin/server 目录加入 PATH 环境变量。
- 应用启动时,Kanzi 根据配置加载指定的 kzb:
- 在 application.cfg 中:BinaryName = "my_application.kzb"
- 加载流程1:
2.1 Kanzi 引擎启动时自动查找 application.cfg
2.2 解析配置文件获取 BinaryName 值
2.3 加载指定路径的 KZB 文件
2.4 反序列化二进制资源到内存
3. 加载流程2:
3.1 或在 C++ Application::onConfigure 中:configuration.binaryName = "my_application.kzb";
3.2 Kanzi 运行时初始化
3.3 创建 Application 实例
3.4 调用 onConfigure() ← 开发者可在此设置 binaryName
5、kza文件
kza 是 kzb 的 XML 版本,Kanzi 可以在导出 kzb 时,同时生成一个 .kza 文件,它是同一项目内容的 XML 形式表达,用于查看和分析。与 kzb 内容对应,只是以 XML 形式存储项目中的节点属性等,用于阅读和比较,而不是运行时加载。
KZA文件导出方法
- 菜单栏:Edit → User Preferences
- 在Advanced中找到"Create XML version (kza) of kzb file"并勾选。
即可在导出kzb文件时同时导出kza文件,kza文件与kzb文件同目录。
示例
:当在kanzi studio中的Screens/Screen/RootPage/Viewport 2D/下添加了一个Text Box 2D节点
导出kza的XML文件中,可以清楚的看到节点节点的基本信息以及属性。描述了这个文本框节点,显示 "Hello world",字体大小 36,宽度 400,位置 (317, 321),水平内边距 20,垂直内边距 10。
如下图所示:
三、
kanzi工程的application.cfg配置说明
1、application.cfg文件作用
application.cfg 是 Kanzi 应用的配置文件,用来在
不改 C++ 代码、不重新编译
的情况下,设置应用启动和运行时的一系列参数。当你启动 Kanzi 应用时,应用会根据application.cfg中的参数配置你的应用。
2、application.cfg文件使用方法
在工程对应目录创建或编辑 application.cfg,按“键 = 值”的形式写入配置项。当application.cfg不存在/配置项缺失时,Kanzi引擎会使用系统默认配置/C++代码中Application::onConfigure设置的值。
- 如果是一个没有 C++ 应用程序的 Kanzi Studio 项目,文件在<ProjectName>/Application Player中。 默认定义了如下配置:
SurfaceClientAPI = "gl":指定渲染使用 OpenGL 作为图形 API。
GraphicsContextAPI = "wgl":在 Windows 上使用 WGL 作为 OpenGL 上下文创建方式。
FontEngine = "freetype":启动时加载 FreeType 字体引擎 来渲染文字(这是默认字体引擎)。SurfaceColorSpace = "srgb":把渲染表面的颜色空间设为 sRGB,配合 线性颜色工作流 使用,由 Kanzi 负责线性↔sRGB 转换。
ModuleNames = "kztargetpreview":启动时加载名为 kztargetpreview 的插件模块(ModuleNames 用来列出要加载的插件名)。
- 如果带有C++应用的Kanzi Studio项目,文件在<ProjectName>/Application/bin中。应用启动时会自动读取同目录下的 application.cfg,其中的设置会覆盖C++ 中 Application::onConfigure 里设置的值。(仅对应相同配置项才会覆盖,未配置项仍使用代码中的默认值) 示例: 在Application/bin中,默认定义了如下配置:
典型的 8‑8‑8 颜色格式(每个颜色通道 8 位),提高颜色精度;如果想让平台自己决定,可以把这些值设为 "unspecified"。
3、application.cfg的常用配置
application.cfg的常用配置包括:
- 窗口位置和大小:WindowWidth, WindowHeight, WindowX, WindowY, WindowOrder控制应用窗口在屏幕上的位置(左上角坐标)和尺寸,以及窗口的 Z 顺序(Z-order,在多窗口/多应用时谁在最上层)。
- 抗锯齿:SurfaceSamplesAntialiasing = 4(整应用的 MSAA 采样数,如0、2、4、8),0为关闭抗锯齿。设置整个应用使用的多重采样抗锯齿样本数,例如 4 表示 4x MSAA,提升边缘平滑度,但会增加显存和带宽消耗。
- 图形后端选择(Windows):SurfaceClientAPI = gles|gl,GraphicsContextAPI = wgl|egl|glx在 Windows 上选择使用 OpenGL ES 还是 OpenGL,以及使用哪种上下文 API(WGL/EGL/GLX),方便在 PC 上模拟目标平台或切换驱动栈。
- 性能监控与帧率控制:LogOpenGLInformation、PerformanceInfoLevel、MaximumFPS
LogOpenGLInformation:启动时打印 GL vendor/renderer/version 等信息,便于确认 GPU 和驱动环境。
PerformanceInfoLevel:控制是否显示 FPS/完整性能 HUD,用于调试和分析性能瓶颈。
MaximumFPS:限制最大帧率(0=不限制,默认 60)。常见值 30/60,按性能消耗或流畅度需求选择。
- 图形日志:GraphicsLoggingEnabled, LogOpenGLExtensions, LogOpenGLInformation
GraphicsLoggingEnabled:输出每个图形 API 调用,适合深入调试渲染问题(但会明显影响性能)。
LogOpenGLExtensions:启动时打印支持的图形扩展列表,方便确认硬件特性。
LogOpenGLInformation:打印基础 GL 信息(厂商、渲染器、版本、着色器语言版本)。
- 渲染质量与颜色相关:SurfaceBitsRed / Green / Blue / Alpha、SurfaceColorSpace
SurfaceBitsRed/Green/Blue/Alpha:设置颜色和 Alpha 通道的位数(如 8-8-8-8),在画质和带宽/显存之间做权衡。
SurfaceColorSpace:选择输出色彩空间(如 "srgb"线性工作流,自动转换、"legacy"传统非线性工作流,无自动转换、"passthrough"直通模式,需自定义转换),决定 Kanzi 是否做线性工作流和自动 gamma 转换。
- 资源加载与部署:DeploymentQueueBudget、LoadingThreadCount、MaxPendingResources
DeploymentQueueBudget:限制每帧在主线程用于“把资源部署到 GPU”的时间预算,平衡加载速度和 UI 流畅度。
LoadingThreadCount:设置后台加载资源使用的线程数,利用多核 CPU 加快纹理/网格/Shader 等从磁盘到内存的加载。(0代表禁用并行,大于0代表后台线程数)
MaxPendingResources:限制“已由加载线程处理但尚未部署到 GPU”的资源数量上限,在加载速度和峰值内存占用之间做平衡。
点击 Studio 主菜单中的Help > Documentation,即可查看对应版本的kanzi官方文档资料。
4
Report
声明
收藏
Share
相关推荐
in to comment
Add emoji
喜欢TA的作品吗?喜欢就快来夸夸TA吧!
You may like
相关收藏夹
Log in
4Log in and synchronize recommended records
收藏Log in and add to My Favorites
评论Log in and comment your thoughts
分享Share



































































































