查看: 3233|回复: 0
打印 上一主题 下一主题

[unity3D教程]一种镂空效果的实现

[复制链接]

3795

主题

2

听众

5万

积分

版主

Rank: 7Rank: 7Rank: 7

纳金币
53202
精华
32

活跃会员 优秀版主 推广达人 突出贡献 荣誉管理 论坛元老

跳转到指定楼层
楼主
发表于 2013-3-16 00:29:15 |只看该作者 |倒序浏览


u3d的遮罩网上很多转载的,  就是下面这篇,我也是用这个来做的

Shader "mask shader"
{
   Properties
   {
      _MainTex ("Base (RGB)", 2D) = "white" {}
      _Mask ("Culling Mask", 2D) = "white" {}
      _Cutoff ("Alpha cutoff", Range (0,1)) = 0.1
   }
   SubShader
   {
      Tags {"Queue"="Transparent"}
      Lighting Off
      ZWrite Off
      Blend SrcAlpha OneMinusSrcAlpha
      AlphaTest GEqual [_Cutoff]
      Pass
      {
         SetTexture [_Mask] {combine texture}
         SetTexture [_MainTex] {combine texture, previous}
      }
   }
}但是光有这个很多人恐怕还是做不出来,这先得用ps做一个遮罩的图片,先填充一个全黑的,然后羽化删除出一个圆
效果如下,黑色不透明的部分为可见部分,白色透明部分为“镂空”的部分
这个是遮罩的图片:


下面的这个是设置了Alpha cutoff 拉倒最大的时候的情况

----------------------------------------------------------------------------------
四眼田鸡的效果? 当然  只要你有足够的创意。。。
    这里设置成:
-----------------
另外找到一个渐变的效果:大家可以参考下这个,从一个图片渐变到另一个图片
http://www.unity3d8.com/content/unity3d-shader-%EF%BC%88cube%E4%B8%A4%E5%BC%A0%E6%9D%90%E8%B4%A8%E9%80%90%E6%B8%90%E8%BD%AC%E6%8D%A2%EF%BC%89
-----------------------
还有之前有位楼主说鼠标点哪就空哪里的效果看来我是做不到了
这应该是某种动态的修改shader的方式,可惜我不会shader 也不太会opengl  无力 ....  大概代码是这样的,错了别喷我
private Material  mat ;
void  Updata() {
    if(鼠标点到哪里){
    mat = new Material (
        "Shader NewMaterial" {" +
        "SubShader {" +
        "    Pass {" +
        "    动态改变镂空的位置
        "    }" +
        "}" +
        "}"
    );
    物体的Material = mat  ;}
}
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

手机版|纳金网 ( 闽ICP备2021016425号-2/3

GMT+8, 2024-11-12 04:13 , Processed in 0.091519 second(s), 32 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部