Malt插件和自定义节点
插件
Malt主要是通过插件添加自定义节点的
-
从github下载示例插件
PluginExample -
新建一个
Malt_Plugin文件夹,将示例插件PluginExample文件放到里面
- 打开Malt,在插件设置中添加插件路径,如图所示
注意
输入的路径应该是PluginExample所在的上一级目录Malt_Plugin,不要把PluginExample也加到路径里去了
-
保存插件设置,重启blender (1) ,现在你应该可以在节点添加菜单中看到新的节点
- 或者使用渲染管线旁的刷新按钮
注意
如果插件中添加了新的文件,需要重启渲染器才能读取
自定义节点
将PluginExample复制一份,修改一下文件夹名字如MyPlugin
打开文件夹中的__init__.py,这个文件,修改为:
| __init__.py | |
|---|---|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Shaders文件夹里的glsl文件添加到渲染管线中
在Shaders文件夹下新建一个my_shader.glsl文件,删掉原本的PluginExample.glsl
添加以下代码:
| my_shader.glsl | |
|---|---|
1 2 3 4 5 6 7 8 | |
按下ctrl+S(1)保存文件后你的blender应该会卡一下,然后你应该就能看到新加的节点
- 第一次需要重启渲染器
因为Malt没有自带SmoothStep这个节点,所以我们自己做一个
1 2 3 4 | |
注意
META 部分的格式一定要写正确,有错误的话虽然能看到节点,但是可能会有稀奇古怪的问题
如果出现奇怪的问题可以删掉META再测试一下
函数一般使用in和out关键字定义输入输出接口,返回空void
如果只有一个返回值也可以直接返回
1 2 3 4 5 6 | |
至于这个SmoothStep函数要怎么写,直接网上毛一个过来就行了,或者叫ai写一个
override覆盖参数
如果想让使用同一个Shader的材质,拥有不同的参数效果该怎么办,就要需要用到参数覆盖了
点击任意一个节点,可以看到N面板的节点选项卡中的属性右边有一个小眼睛的图标
打开眼睛图标的参数就会在材质面板显示出来,在材质面板中勾选属性右边的√,就可以为每一个材质单独设置参数
像是贴图参数等每个材质都不一样,就可以显示在材质面板中
数据类型
Malt节点中不同的数据类型会自动隐式转换
详细参考Malt数据类型
- 布尔型:
bool - 浮点型:
float - 整数型:
int - 无符号整数型:
uint - 二维向量:
vec2 - 三维向量:
vec3 - 四维向量:
vec4 - 布尔矢量:
bvec(n) - 整数矢量:
ivec(n) - 无符号整数矢量:
uvec(n) - 4*4矩阵
mat4 - 一维纹理
sampler1D - 二维纹理
sampler2D - 包含int值的(n)纹理
isampler(n)D - 包含uint值的(n)纹理
usampler(n)D - 结构体:
struct - 数组:
array(size)
其他
内置节点的GLSL在
插件文件夹\BlenderMalt\.MaltPath\Malt\Shaders下
内置的变量可以查看插件文件夹\BlenderMalt\.MaltPath\Malt\Shaders\Node Utils 2\Input.glsl文件,里面有一些关键字可以使用
比如POSITION,NORMAL,view_direction()等,可以直接在函数中使用,也可以在META中设置为默认值:
1 2 3 4 5 6 7 8 9 | |