FAQ
kanzi 中的多语言支持
kanzi 对多国语言的支持,采用的方法应该是目前最佳的方法。 Kanzi 支持导出文本资源到外部 excel或者 xml 文件,这些文件可以直接交给翻译人员翻译,翻译后直接导入工具生成多国语言的配置项,支持在工具中和 api 一键切换语言。 kanzi 支持 windows 标准的 ttf 字体,可以让开发人员轻易的设置各种字体。 Kanzi 支持从右到左的语言比如阿拉伯文,希伯来文,并且采用的是开源的方案,为用户节省成本。 Kanzi 支持 ...
Kanzi 是否支持多个KZB文件,启动时按需加载?
资源的加载策略是需要设置的,默认主场景下的所有界面都会被加载的,你需要告诉 kanzi 什么时候加载,加载什么等等。 在英文文档里搜索 preload resource 以及 Instantiating a prefab using a script Preload resource 是预加载资源,是后台加载资源的意思,用户可以在运行时使用Instantiating a prefab using a script ...
安装Kanzi Studio 的系统要求
使用 Kanzi 3.6.x 进行开发的最低系统要求: 在 PC 上: 64-bit Windows 7 SP1, 8.1, and 10 Anniversary Update (version 1607) or newer。 在 Mac 上:Boot Camp 中的任何上述 Windows 版本,或者带有 VMware Fusion 或 Parallels Desktop 的 OS X。 8 GB 的可用磁盘空间。 1 GB 的 RAM(建议 2 GB)。 支持 OpenGL 3.3 ...
正常情况下,一个工程师需要多长时间才能Kanzi上手?
经过现场的一周五天Kanzi工具的培训(程序员还需要一周五天的Kanzi API培训),设计师和程序员都可以上手进行项目的开发。
Kanzi 支持的3D 文件支持格式有哪些?
Kanzi 支持常用的 3d 软件导出的 3d 格式,比如 FBX、DAE、OBJ等,我们常用的 3ds max, maya 都可以导出。 DAE 是工业标准 3d 格式,OBJ 是最通用的格式, FBX 是 kanzi 最推荐的格式, 因为 FBX 可以打包贴图,其他格式不可以。 Kanzi 推荐使用 3ds max 或者 maya。
对于 3D 模型文件中包含的子父级关系是否能够识别?
可以识别,识别到的父子级关系完全一致。
3D模型导入Kanzi中坐标轴体系是否会发生错乱?
问: 3D工具创建的3D模型导入Kanzi中坐标轴体系是否可能发生错乱(以往的经验中,这个现象多与 3D 制作工具有 关) 答: 不会发生紊乱, max 中导出时选择坐标系下 Y up,导入到 Kanzi 中会是一模一样的。 在导入 3d 格式的时候也可以选择坐标系转换, 这个问题不会出现的。
3D 文件如何被kanzi识别,是否还可编辑?
问: 3D 文件导入后在编辑器中是以一个单体进行识别,还是能够成组识别对各个 单体组件进行逐个编辑(举例:我在 3D 文件中创建了多个组件且是独立的) 答: Kanzi 对 3D 格式文件的节点的识别是和 3D 软件工具中对应的,比如你在 3d max 中创建了多少节点,就会生成多少节点。 如果在 3ds max 中有 2 个模型 A 和 B,如果在 max 中把 A 和 B attach 到一起, 成为一个节点后导入到 kanzi 中也就一个节点,如果不 attach 就会有 A 和 B ...
主题和本地化切换具体怎么做?
安装好Kanzi Studio后,在Tutorials下面有本地化Localization和主题Theming的范例工程,可以参考一下。
kanzi 中判断页面显示与隐藏的机制
问: kanzi 中是否有类似于QT中onCompleted、omVisibleChanged(true/false)、onDestroyed 这种判断页面显示与隐藏的机制? 答: Kanzi 中的节点显示隐藏由用户自己控制,不需要回调,但是 kanzi 提供了 onAttached 和 onDetached操作, 如果把一个动态实例化出来的节点加入到 scene-graph 中去, 会自动调用 onAttached 但是只调用一次, 如果从 scene-graph 中 remove 会调用 ...
插件的Message 的消息参数只允许携带一个?
Message 可以带任意的参数, 只需要把参数注册进 message 即可。 参考 Examples 下的 Node3D_Plugin 范例
Kanzi 是否可以做出来高斯模糊的效果?
可以的,需要自定义材质, 写 GLSL 的高斯模糊的脚本。
如何显示小数点后一位?
问: slider 中 knob 显示滑动的位置并显示数值, 在radio制作中,knob如何实现小数点后一位? 答:
Kanzi 是否可以在启动应用的时候,传入 SurfaceID?
在做 platform support license 授权 porting 的时候可以提这样的需求,我们会配置好这样的参数。
kanzi 中线程与 Task 的区别
问: kanzi 中线程与 Task 的区别? Task 中的任务调度器,和系统的线程调度又有什么区别? 答: Task 是用户自己创建的,主要目的是用去处理资源的加载和更新界面在不同的线程中执行, task 的 handle接口在单独的线程中执行, task 的 end 接口在 kanzi 的线程中执行。
Node2DPlugin 范例里视频的更新和界面的更新有没有做同步处理?
Windows 上的确没有做同步处理,但是 android 平台下是做了同步处理的,可以参考此范例下的 android 下的代码,同步处理是用户自己来做的。
不同的操作系统kzb文件是否需要重新导出?
若 UI 和 Application 的接口(interface)不变,由 Kanzi Studio 所产生的同一个binary.kzb,可以在 Windows、Android、Linux 或 QNX 上使用,而不用重新 Export KZB Binary。 Design once, run everywhere.
程序员与UI如何交互?
程序员开发 Application, 是使用 Kanzi Engine 的 API,来和 UI(Kanzi Studio 产生的 .kzb) 做交互的。
程序员在不同系统上开发APP需要使用不同的Kanzi Engine吗?
问: 程序员在Windows、Android、Linux或QNX上的Application,是需要使用不同的kanzi Engine来搭配开发,对吗? 答: 是的,kanzi 的库的头文件是一样的,但是库不一样, 但是 kanzi 的 api 是跨所有平台的。
多个kzb文件在QNX上可以同时运行吗?或是轮流运行?
情况一:你可以有 3 个 kanzi app,每个 app 使用一个 kzb,三个 application 同时存在,这是可以的。 情况二:一个 application 使用一个主的 kzb,可以在需要的时候加载其他 2 个 kzb 里面的资源,但是不可以替换主的 kzb 内容的。 比如多国语言, 你可以把语言包做成不同的 kzb,在需要的时候像打补丁一样替换不同语言包的 kzb。
Kanzi Application的结构图
Kanzi application 包含 kanzi engine , opengl ,以及 kzb。
Kanzi DataFeeder插件相关问题
问: 使用 Kanzi datafeeder 将 CANoe 的 data input 至Kanzi Studio 中作 demo,请问做这个 demo 时, 是使用 CANoe 的 Simulated bus,所以不用连接真的CANoe device,对吗? 那如果 Kanzi Studio 和 CANoe 二个软件安装在不同的 Notebook 上, 也可以做这种 demo 吗? 答: 是的;应该也可以的,因为 CANoe 是通过 com 端口与 kanzi studio ...
Kanzi DataFeeder如何实现数据与UI的Bind?
Kanzi 的 datafeeder 基于 MVC 架构 M 就是数据 在 kanzi studio 展示如下 V 代表显示层, 界面 在 kanzi studio 展示如下 C 代表业务逻辑控制, 用于数据和界面的控制方式 Kanzi studio 中可以使用 binding 来进行,比如把速度的界面动画绑定到数据的 speeddata 上, 如下 仪表的业务数据逻辑相对来说比较简单, 数据主要以 PPS 过来的 CAN 数据为主, 业务也主要是数据展示为主, 反向的数据写入的操作不多, ...
能否提供 Kanzi data feeder 的接口文档?
Datafeeder 无法提供试用, 客户正式购买后, 我们提供支持和详细的文档说明, 告诉大家如何使用。
QNX上DataFeeder是否只支持PPS?更新延迟指标是多少?
datafeeder 是我们开发的付费插件,可以帮助虚拟仪表客户提升仪表业务逻辑开发的效率。 我们知道仪表开发中主要用到的数据有如下几种: 1. 来自 PPS 的 CAN 信号数据 2. CANoe 仿真 3. PCAN 硬件 4. IPC 进程间通信 5. TCP/IP 通信 6. Stateflow 的数据 7. Simulink 的数据 根据客户的不同的需求,原来用户需要自己写代码获取这些数据,然后使用代码把这些数据绑定到 HMI 界面上。 ...
Kanzi 对哪些系统基础组件驱动有依赖?
Kanzi 的引擎主要是基于 C++和 OpenGL ES 2.0, 这些都具有很强的跨平台性和通用性, ,除了 GPU 的 OpenGL ES 图形驱动和标准的 C++ 支持外, kanzi 基本不依赖于系统基础组件。 Kanzi KIP 指标: Kanzi 引擎启动性能,界面刷新率 60fps 启动速度的影响主要分 2 个方面来看, 一个是 kanzi 引擎的启动速度, 一个是用户资源的加载。 Kanzi 引擎的启动速度在 IMX 6D/Q QNX6.6 上可以达到 500ms 左右, 在 ...
i.MX6 中 IPU DP 的叠加功能是否启用?
i.MX6D/Q 有 2 个 Hardware Layer 可以用于多个应用程序窗口绘制之间的硬件融合,可以有效的提升多个 app 同时绘制的性能表现。
对目标机配置的要求
多媒体 ivi 这块 kanzi 有丰富的量产经验,从低端芯片到高端都有。 德赛西威出货的东南 DX7 使用的是 CSR Prema II 800x480, WINCE 5.0 , 内存 1G。 Audi 的出货的 Q7,A4,A6 等的多媒体采用的是 Nvidia Tegra 系列。 目前使用 1920x720 或者 1920x1080 分辨率高端平台的有 imx6q,TI J6,Renesas RCar H2/H3,Nvidia Tegra K1/X1,高通和 intel 的也有在尝试, ...
Virtual list box中,用户如何得知list数据已经加载完成到界面?
在 taskQueue 的 handlePendingTasks 中检测 m_tasks 队列是否为空的,如果为空代表所有的数据都加载完成了。
描绘的刷新率,一般是多少?
这个由平台的性能, HMI 场景的复杂度以及优化程度共同决定。 一般在高端平台上可以达到 60fps, 低端上达到 30fps 以上。 Kanzi 提供很多优化技术以及 debug 技术帮助分析性能的瓶颈以及提供优化指导。 因为既要考虑帧率也要考虑 CPU 占用率,一般 ivi 的帧率不会做的太高, kanzi 提供恒定帧率的方法可以降低 CPU 占用率。 Kanzi 还提供 cache 机制可以把不动的复杂场景 cache 起来。
大部分公司做电子仪表盘选择Kanzi工具的原因
Kanzi 作为一款革命性的 HMI 设计工具可以帮助主机厂主导 HMI 设计, 快速的实现从设计到产品的流程。Kanzi 完全面向设计师,是一款功能强大使用方便的完全可视化的 HMI 设计工具,其他的工具大都都是以程序员的角度来构建界面,难以解决设计到产品的鸿沟。 虚拟仪表是一个全新的领域, 发展迅速, 虚拟仪表对 HMI 的高要求和高需求,伴随着 Audi全数字仪表的问世, kanzi 被更多的主机厂和供应商选择。 Kanzi 对设计的强大支持,快速可视化设计到实现, 绚丽的设计效果, ...
是否支持同一个Surface内的多窗口叠加?Kanzi 是否能多个物理 Surface 同时渲染?
一个 kanzi 程序目前只有一个 OpenGL ES Surface,但是 kanzi 内部统一了 2d 和 3d,提供2d 和 3d 混合图层显示,多个 OpenGL ES surface 可以通过多个 kanzi app 来叠加混合显示,比如 kanzi 支持 wayland 窗口,就可以使用 wayland 的 api 把多个 kanzi 窗口叠加。 一个 kanzi 程序多个 OpenGL ES surface 的功能目前正在开发中,会在今年年底左右推出此功能。
触摸屏Engine接口能提供什么资源? Engine 接口文档是否提供?
Kanzi 提供了多种手势,比如点击,双击,长按, pinch, drag, drop, pan, 用户还可以轻松自定义自己的手势。 Kanzi 文档中有 api reference 文档,可供参考。 Examples 下的program tutorial 也可参考 api, kanzi 常用的 api 不多, 十几二十个。
Kanzi对于底层的定制程度如何?例如Kanzi底层能否对WAYLAND适配?
Kanzi 基于 OpenGL ES 和 C++,基于操作系统之上,对底层只做了跨平台的封装,并无修改,所以跨平台性尤为突出。 Kanzi 支持常见的窗口系统,比如 wayland,x11,qt 等等。
kanzi是否支持界面级同步?
界面级同步需要用户自己来协调控制, 暂无支持。
Kanzi 复用部分占用资源的情况,是否占用一份资源?
Kanzi 在复用方面做的非常出色, kanzi 提供了 prefab 机制就是为了最大限度的进行复用。 另外 kanzi 中所有的资源全局都只占用一份, 采用 resource url 来进行引用。 Kanzi 还提供从内存中共享资源的方法比如字库,大图片等等, 可以多个 app 共享同一个字库。
多次申请和释放内存是否会产生碎片化?
问: 内存管理问题:在多次申请和释放内存 是否会产生碎片化的问题 有什么机制可以保证 例如像 Java 虚拟机中其中一个算法:先申请两个大的 memorypool 在一定的实际采用相互 copy 来解决碎片问题。 答: 内存管理上 kanzi 内部使用像 vector 这样的方式来进行内存管理,一开始预申请内存块,申请好了后,后续的内存的分配和释放都只是对内存做标记而已,并不是真正的内存释放,所以效率很高,如果内存不够了,会动态的申请新的一批内存。
kanzi是否支持一个进程多个窗口?
一个 kanzi 进程内支持多个窗口的功能我们正在开发中, windows 上我们已经初步做到了,其他平台还在开发中。 不过目前这种需求不是很多,而且我们可以采用多个 kanzi 进程的方式来处理 ivi 的多个模块,稳定性会更好。 同一个 kanzi 进程内, kanzi 也可以通过支持多个 layer 的方式来显示不同的内容,比如一个 layer 显示视频,一个 layer 显示菜单。
页面的生命周期及其资源管理
问: 页面的生命周期管理:假设一个页面有多个功能键,每一个功能都点一遍,点过的资源是否会被释放? (1) 如果不释放 可能会对内存有很大的压力。 (2)如果直接释放 如果重复点击一个功能键 资源又加载一边 用户体验又不好。 不知道 kanzi 对页面的生命周期是如何管理的? 答: Kanzi 的资源采用引用计数的方式管理,资源第一次被使用的时候会载入内存,如果不再被引用会自动释放,也可以选择手动接触引用。 ...
Kanzi 对复杂 ivi 项目支持是否有问题?
Kanzi 一开始就是被奥迪运用于 ivi 项目开发中, kanzi 在最近几年的出货大部分都是 ivi 的项目,应对当前 ivi 规模, kanzi 是经过量产验证的。 Kanzi 支持动态创建页面与删除释放页面, kanzi 也支持虚拟列表可以支持大数据列表的展示,德赛西威使用 kanzi 做的量产项目中也有接近 100 个页面的,性能非常流畅。
Next page