【转载】Niagara 中 SampleTexture 的用法和拓展

392 阅读2分钟

原文链接:《Niagara 中 SampleTexture 的用法和拓展》 | 作者:帆起

效果图

juejuejue.gif

这次着重解析下 SampTexture 的特点和用法。

模块解析

点开进去是这样,其实非常简单。根据给定的 UV 值,对贴图进行采样,然后将采样的颜色储存到 SampleColor 属性中,将这次 UV 储存到 SampleUV 中。所以,我们可以通过遍历 UV 来对图片上的颜色进行保存,可以随机遍历也可以顺序遍历。

实现结构

因为做贴图采样, 请先把粒子类型改成 GPU

image.png

  1. 新建 UV 变量,然后设置成随机值,相当于随机遍历 UV 了,每个粒子的 UV 属性都会不同。

PS:这里可以写个模块根据粒子生成序号来有序遍历。

  1. SampleTexture 模块,附上贴图,同时将 Particle 属性赋给 UV 栏。

  2. 新建一个模块来根据 UV 设定位置,Chris 讲座中用的表达式实现,这里写了个模块,主要是可以扩展以及更方便的调试大小等属性,内部逻辑如下:

image.png

  1. 将采样的颜色设置给 Color 模块。

一些应用的拓展

1. 使用贴图采样数据更新粒子位置

图形学的领域里,颜色 = 向量。贴图记录位置是常规操作, Niagara 提供贴图采样意味着我们可以使用伪3d贴图实现连续波动的粒子,或者使用场景深度反推粒子位置 —— Chris的讲座就是这样做的,等一系列在 Shader 中常用的实现。

比如这里用一个简单噪波图来控制粒子高度:

juejuejue.gif

只是在 UVLocation 模块中修改了一点逻辑修改后逻辑如下:

image.png

红框是新增部分,采样颜色的 R 通道,加上原来的 z 值最后给粒子位置。

2. 搭配 RT 实现各种脑洞

Chris 讲座中利用 CaptureCamera 采场景深度,然后重投射世界位置实现了全息投影特效。

同样思路可以把 CaptureCamera 绑到玩家相机上,采样深度,实现全场景生成特效,类似量子破碎那种场景物体上冒出碎片的效果。

3. 采模型对象的 UV 图和颜色,搭配模型位置实现角色各种效果

可以直接通过粒子构成角色。或者对角色某些部件做定制粒子效果。

肯定还有些其他用法,希望大家有想法多多交流~

END~