继上篇和大家分享了HMI敏捷开发秘笈—技术设计师之后,今天向大家介绍如何使用Kanzi蒙板缓存渲染技术,实现3D内容以及蒙板缓存定义区域的渲染。
首先向大家介绍的是Kanzi渲染中的3个基础概念,分别是标签 (Tag),过滤器 (Filter)和渲染通道(Render Pass)。
01
标签的主要作用是分组、查找及过滤工程中的节点。 用户可以分配多个标签给一个节点,也可以将同一个标签分配给不同的节点。以下是标签在Kanzi Studio中的定义界面。

02
过滤器的主要作用是收集与重新组织Kanzi工程中的场景对象。可以使用它们来确定不同渲染通道中需要渲染的场景对象。
在设置一个或多个过滤器或对象源之后,过滤器会收集并输出一组与过滤器中定义要求相匹配的场景对象。通过过滤器可以调整整个Kanzi应用程序、特定节点以及节点组的渲染行为。
多数情况下,过滤器将与渲染通道配合使用。用户可以为特定的渲染通道设置对象源,使渲染通道只渲染由对象源传送的对象。以下是Kanzi Studio中创建Filter的界面。

03
渲染通道的主要作用是定制化节点的渲染。
用户可以在渲染通道中选择特定的过滤器和对象源,作为一次渲染的节点集合,这样可以精确的定义Kanzi渲染场景(Scene)或2D视口(Viewport 2D)节点的内容顺序。以下是目前Kanzi中支持的渲染通道种类。

在了解了这些基础概念后,接着为大家介绍的是蒙板缓存渲染在Kanzi Studio中的应用。
▶蒙板缓存
蒙板缓存区是当前帧缓冲区中的图像,可以用当前帧缓冲区控制 Kanzi 渲染哪些像素。根据蒙板缓存区值的使用设定渲染通道放弃或渲染内容中的特定像素。
通过这种方式,可以将渲染区域作为蒙板缓存的节点形状。节点形状用作蒙板缓存中的间隙,确定内容中哪些部分是可见的。
蒙板缓存时,首先会被清除为0,之后在模蒙板缓存中使用1填充一个节点形状。场景中的片段只会在片段模具值为1的时候被渲染(其它的将被丢弃)。
1. 创建
选取Stencil节点,标签过滤器Stencil Filter,选取除Stencil节点之外的所有节点。创建标签过滤器Content Filter。
2. 应用
a)创建组渲染通道Group Render Pass 来容纳应用蒙板stencil到内容的渲染通道。
b)创建清除渲染通道Clear Render Pass,添加Clear Stencil属性,将其设为0。这样可以在蒙板缓存区中将0值写入所有像素,从而清除蒙板缓存区。
c)选择包含Stencil 节点的Scene节点及使用蒙板缓存的节点,并在属性中将Render Pass属性设置为Stencil Render Pass。使Kanzi用Stencil Render Pass渲染Scene。

d)创建管道状态渲染通道Stencil Write,设置相关属性,创建绘图对象渲染通道Draw Stencil,在属性中添加Object Source属性,设置为Stencil Filter标签过滤器。使用对象源将要渲染的节点传递至绘图对象渲染通道。Stencil Render Pass根据Scene节点的内容仅渲染Stencil节点。

e)创建管道状态渲染通道Stencil Test,设置相关属性,创建绘图对象渲染通道Draw Contacts List,设置对象源属性为Content Filte标签过滤器。Kanzi将渲染Scene中的所有节点,Stencil节点除外。

▶效果
未使用蒙板缓存VS使用蒙板缓存后:
未使用蒙板缓存
使用蒙板缓存
蒙板缓存形状:

如图所示,使用蒙板缓存后将根据设置,使3D内容仅渲染蒙板缓存定义的区域,其余区域将被舍弃。
本次关于蒙板缓存(Stencil)渲染技术在Kanzi中的应用就介绍到这里,想要了解更多Kanzi软件的使用操作,请继续关注怿星科技微信公众号。
相关精彩推荐:

![]()
怿星一意,专注车载
引领汽车科技新高度


