查看原文
其他

Unity图像特效教程|保留指定颜色

2016-05-28 Unity官方 Unity官方平台
本文将为大家介绍在Unity中通过简单的脚本和着色器进行图像处理,在编辑器模式下实现整个场景只保留指定颜色,其余全变为灰度的效果。
点击[阅读原文]下载资源包
将资源包导入任意Unity项目中,找到Onoty3D/Scripts目录下的OnePointColorEffect脚本并绑定到摄像机上。然后将Onoty3D/Materials目录下的OnePointColorEffect材质手动赋值给脚本的Material字段。如下: 




脚本代码如下:


脚本各参数表示的含义如下:

  • Target Color:希望保留的颜色

  • Near:与Target Color的色调值(0~1)相近的范围。例如,色调值为0.5,如果将Near设为0.1,那么色调值在0.4~0.6范围内的颜色会被保留。


着色器的原理也非常简单,GetHue函数用于获取指定颜色的色调值并正规化至0~1的范围。再在顶点函数中将顶点坐标从模型空间转换到投影空间。然后在片段函数中保留指定色相值范围内的颜色值,并将其余部分颜色均做灰度处理。代码如下:



如果使用得当,就可以实现如下效果:




使用也非常方便,先取消脚本名称前的勾选,然后使用吸管工具选定适当的颜色,之后再勾选脚本即可。操作如下:


只需简单两步,就能让整个场景达到颜色过滤的效果。


本文来源于:onoty3d.hatenablog.com

原作者:onotchi

Unity官方活动


近期Unity官方将在上海举办官方教育培训活动,为参会者提供系统的Unity技能培训,梳理Unity相关的整个技能树以更好的应用到教学中。


如果您是院校老师(点击活动名称报名)

欢迎参与:Unity官方教育培训

活动时间:6月14日 - 6月16日

活动地点:上海


延展阅读

Asset Store疯狂促销来袭,最低四折!

沙盒游戏精品:《Besiege》

UnityEvent与C#事件系统性能对比

Unity中如何中断C#脚本的无限循环

如何高效参与测试项目帮助改进Unity?


我们还会分享更多Unity相关的技术内容在Unity官方中文论坛(forum.china.unity3d.com),请保持关注!



点击“阅读原文”进入Unity官方中文论坛!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存