Linear Interpolation::Substance Designer Custom Function

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_39812022/article/details/101719904

学习目标

理解像素处理器的运行原理,学习编基本函数的方法,把用户导入的图片在不使用外部节点的情况下直接变形。

学习量大累的函数和方案。
1. 归属于 Graph 的普通函数定义和函数的显示
2. 非归属于 Graph 的 (所属 Node 的) member 函数定义和使用。

归属于 Graph 的普通函数定义和函数的显示

非归属于 Graph 的 (所属 Node 的) member 函数定义和使用

这个是从 Substance designer 2019 版本以上的版本开始支持的功能。
简单看下案例,并摸索下使用方案。
案例是制作 Custom Blend node 。
我们来了解下 Input Value 。
这次案例会使用 Pixel Processor ,基本用法前面已经学过了。
一个个跟着做,实现 Custom Blend node。

先对 Blend 定义。
这是为了让输入的图片可以合成。
可以用多个合成公式做出结果,但是这次案例就用以下形式吧。

// Precise method, which guarantees i = i1 when w = 1.
//i is input image, w is blend weight
float lerp(float i0, float i1, float w) {
  return (1 - w) * i0 + w * i1;
}

在这里插入图片描述
做 Pixel processor 并添加 Input Value,变量名称是 w 。

在这里插入图片描述进到 Pixel processor 编辑窗,如上图制作2个 input sampler Color ,添加一个 Get Float 后输入的变量变更为 #w 。
用 Frame 套上,并写上要实现的算法也可以。
先做出 (1-w) * i0 部分的结构。

在这里插入图片描述添加固定常数 Flaot ,数值变为 1。
添加 Subtract 后固定常数 1 输出成 #w 。
添加 Scalar Multipication ,在 A port 连接 input 0 ,把刚才的 (1-w) 部分连接到 Scalar port。

在这里插入图片描述暂时从函数编辑窗口离开,在 Graph 上制作如上图的两个 Uniform Color ,都连到 Pixel Processor 。

在这里插入图片描述再回到 Pixel Processor 编辑窗口,用 input 1 变更第二次做的 Sampler 输入变量。
添加 Scalar Multification , #w 如上图连接。
这是整个数式的 w * i1 部分。

在这里插入图片描述根据 return (1 - w) * i0 + w * i1; 数式,加法最后做就可以了,所以 add 最后添加。

在这里插入图片描述最后用 (1 - w) * i0 实现的部分 w * i1 用 add node 加上就可以了。
别忘了, add node 要用 Set as Output Node 定义。

在这里插入图片描述但是仍然没有变化。
现在到了使用 Input Value 的时候。

在这里插入图片描述在 Graph 添加一个 Input Value 。

在这里插入图片描述Input Value 值变更为 0并连接上了。
Input Value 是对入到 #w member变量的值。
而且 w 是权重值,如果还是红色那就是正常启动了。
为了确认,来把权重也就是 Input Value 值变更为 0.25 吧。

在这里插入图片描述红色和绿色在用权重值混合。
确认结果是否如上图。

在这里插入图片描述
权重是(w) 1 的时候出现完整的绿色才行。
现在稍微扩展。
也可以使用 Mask 。
修改以上的学习内容,并添加 Mask 。

在 Weight 扩展 Mask 。
在这里插入图片描述

最终结果案例。

Mask 扩展需要 $pos 内含变量。

Uniform Color 虽然都是单一颜色,但 Mask 要理解成其他颜色或者以浓度组成的像素的组合。会需要像素的 XY 位置信息。

在这里插入图片描述
添加一个 Gradient Linear 1 ,然后追加连接到 Input 2 上。
用于 Mask Texture 的 Node 要连接到 Pixel Processor 的 Input 2 上。

在这里插入图片描述
添加 Get Float2 后,在内含变量中选择 $pos 。
然后再添加一个 Sampler ,输入变量变更为 input2 。

在这里插入图片描述
乘与 #w 和添加的 Mask 输入部分。

在这里插入图片描述w * i1 部分也修改成 (w*maks)*i1 的形态。

在这里插入图片描述完成的函数。

再加强以上函数。
现在输入的两个 Uniform Color 是的单一颜色,所以不需要 $pos 。

在这里插入图片描述考虑输入的 Input 0 和 Input 1 是普通贴图的情况,都添加 $pos 来测试吧。

在这里插入图片描述
权重 Weight 设成 1的情况下 Mask 替换成了 Checker 1 ,这是两个输入图片也都替换成了贴图后确认的结果。

Related tutorial

Transform2D Rotation Matrix

About JP

链接: Website.
在这里插入图片描述
在这里插入图片描述
出生在韩国的TA。
1997年开始从事电脑图形视觉化工作后,在这个行业已经有21年经验了。
在多个网络游戏公司引领过美术团队,之前在allegorithmic担任TA负责人,在中国网易盘古工作室担任TA总监,现在是巨人网络TA部门的总负责人。
懒惰的人才有创意”是他坚信并执行的哲学道理。

猜你喜欢

转载自blog.csdn.net/qq_39812022/article/details/101719904