卡了一天了,如何用脚本动态修改材质属性


这么改没有效果,求助如何用脚本动态更改toon材质的USE_OUTLINE_PASS属性

material.define

能写的完整点吗,好几种写法都试过了不行

https://forum.cocos.org/uploads/default/original/3X/9/c/9c93e31e529cdd731bcd1a8e674d7d3b8e999aac.png 这个是3.0里的写法。
完整帖子: 分享一个shader Lod的实现

常用material.setProperty(‘mainColor’ / ‘mainTexture’ / ‘albedo’, …)

稍微试了一下,看起来执行时recompile已经修改了属性,但是显示效果似乎确实无变化,也许lz需要new material试试


image
关键的材质更换代码按照你的改了~log出来USE_OUTLINE_PASS这个值已经修改成功
但模型没有变化

各位大佬是否有其他轮廓描边的方案?实际上我需要的只是做一个模型选中的外轮廓描边效果,相当于3D模型投影到2D平面的图形加上2D轮廓描边,引擎自带的Toon材质主要是做卡通渲染的,我只需要面向镜头的2D裁面外轮廓描边效果

那要不弄个摄像机拍选中的模型,然后把拍到的图片做2D的外轮廓描边,2D的轮廓描边在论坛上挺多的

好的,我尝试一下。

之前就遇到过,已经放弃了;我的shader是自己写的卡通瞄边,现在方案是一个角色2个材质,一个带outline,一个不带;需要时候切换材质。。

我写的是Creator 3D版本。另外我是clone了一个新的材质

可以试下两个material切换,也可以试下设置lineWidth为0

好的,我试下lineWidth,刚刚试了下standard材质,用recompileShaders修改defines属性是生效的,知道为什么toon材质修改就没有效果

刚试了下,修改lineWidth可以生效,感谢

如果想要standard材质, 加上toon的描边,有办法将2个材质结合吗

只能找引擎effect代码试下结合吧,我也不太会shader


简单粗暴的把toon的这部分copy到standard里,是OK的

但是这种方案感觉还是好复杂~模型有非常多零件 每个零件都有不同的材质~ 如果要在运行时动态加上秒变,得递归所有meshrenderer节点,动态更换材质

导入自带的outline-vs.chunk,参考toon shader,前面显示描边踢出背后即可 cullMode: back