纳金网

标题: [unity3D教程]一种镂空效果的实现 [打印本页]

作者: 驰骋的风    时间: 2013-3-16 00:29
标题: [unity3D教程]一种镂空效果的实现


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  ;}
}





欢迎光临 纳金网 (http://course.narkii.com/club/) Powered by Discuz! X2.5