使用 Blur Effect 2D 效果¶
使用 Blur Effect 2D 效果对二维节点应用高斯模糊。
了解如何通过完成教程来使用 Blur Effect 2D 效果。请参阅 教程:创建高斯模糊效果。
为二维节点创建模糊效果¶
要为 2D 节点创建模糊效果:
在 Library 按 Alt 并右键单击 Effects 中选择 Blur Effect 2D。
在 Node Tree 或 Prefabs 中创建一个要应用模糊效果的2D节点。
从 Library > Effects > 2D Effects 将 Blur Effect 2D 效果拖到 Node Tree 或 Prefabs,并将其放到您想要应用模糊效果的 2D 节点上。
通过这种方式,您可以在该 2D 节点中将 Effect Prefab 属性设置为 Blur Effect 2D 效果。
在 Library 中选择 Blur Effect 2D 效果,并在 Properties 中添加和设置 Blur Effect 2D 属性。
Blur Radius 通过定义相互混合的像素圆形区域的半径来设置模糊量。默认半径为 8 像素。
此属性还决定了模糊在节点边界处扩展渲染区域的像素距离,除非您启用 Masked Blur 属性。
Blur Quality 设置模糊的视觉质量。较低的质量使用较少的计算和内存资源。
Masked Blur 设置是否仅模糊 alpha 通道值不为零的像素。
当您启用此属性时,模糊不会扩散到完全透明的像素,并且内容的边缘保持清晰。
自定义模糊效果的实例¶
当您在 Library > Effects 中编辑效果的属性时,您会更改使用该效果的所有节点的外观。您可以通过覆盖效果属性值来自定义每个效果实例。例如:
当您创建 Shadow Effect 2D 效果时,您可以在该效果的不同实例中改变阴影的柔和度。
当您创建 Mask Effect 2D 效果时,您可以在该效果的不同实例中改变遮罩的大小。
当您创建 Blur Effect 2D 效果时,您可以在该效果的不同实例中改变模糊的程度。
当您创建 Outline Effect 2D 效果时,可以在该效果的不同实例中改变轮廓的颜色。
要自定义效果的实例:
创建一个效果并设置一个节点来使用它。
例如,创建一个 Shadow Effect 2D 效果,并设置一个 Image 节点来使用它。请参阅 为二维节点创建阴影效果。
在效果中自定义属性:
在 Library 中,选择您创建的效果。在 Properties 中,在您要自定义的属性旁边,单击
。Kanzi Studio 从该属性创建一个自定义属性,将其添加到效果预设的根,并在2D效果中创建一个到该属性的
##Template绑定。例如,单击
,旁边是 Shadow Blur Radius 属性。Kanzi Studio 创建一个自定义 Shadow Blur Radius 属性,将其添加到根效果预设,并在 Shadow Effect 2D 效果预设中创建一个 ##Template绑定到自定义 Shadow Blur Radius 属性。
在 Node Tree 或 Prefabs 中,选择使用您创建的效果的 2D 节点。在 Properties 中,点击您自定义的属性旁边的
,并设置该属性的值。Kanzi Studio 向 2D 节点添加了一个 To Source 绑定,该绑定将该属性的值推送到通过节点的
Node2D.Effect属性提供的效果实例。您可以设置多个 2D 节点以使用相同的效果,并且在每个 2D 节点中,您可以添加和设置属性以具有不同的值。
例如:在 Properties 中,添加 Shadow Effect 2D Properties > ShadowEffect2D.BlurRadius 属性,并使用它仅在 Image 节点中调整阴影的柔和度。
(可选) 对您要自定义的每个效果属性重复上一步。
小技巧
当您想从节点中移除属性及其 To Source 绑定时,右键单击该属性并选择 Remove Property And Binding。
使用 API 中的 Blur Effect 2D 效果¶
要创建模糊效果:
// Create a blur effect template.
NodeEffectTemplate2DSharedPtr blurEffectTemplate =
NodeEffectTemplate2D::create(BlurEffect2D::getStaticMetaclass()->getName(), "BlurEffect");
// Set the value of the RadiusProperty in the blur effect template.
// RadiusProperty defines the amount of blur.
blurEffectTemplate->addPropertyValue(BlurEffect2D::RadiusProperty, Variant(6.f));
// Create a blur effect prefab.
NodeEffectPrefab2DSharedPtr blurEffectPrefab =
NodeEffectPrefab2D::create(getDomain(), "BlurEffect prefab", blurEffectTemplate);
// Assign the blur effect to a 2D node.
node2d->setEffectPrefab(blurEffectPrefab);
// Get the node-specific effect instance created from the assigned prefab.
BlurEffect2DSharedPtr blurEffect = dynamic_pointer_cast<BlurEffect2D>(node2d->getEffect());
// Set the MaskedProperty to true. Masked mode maintains the original alpha channel and
// prevents the blur from spreading to fully transparent pixels.
blurEffect->setMasked(true);
有关详细信息,请参阅 BlurEffect2D 类。