纳金网

标题: 如何让模型产生双面法线效果 [打印本页]

作者: star-小虎    时间: 2013-10-16 15:52
标题: 如何让模型产生双面法线效果

在Unity的內建shader中,預設的顯像方式是 "Back-Face Culling",也就是背面是看不見的,如果需要呈現雙面法線時,我們可以透過修改Shader來達到正反面都顯示的效果。
1.預設的顯示模式,反面是看不見的。



2.新增一個自訂shader文件。



3.以內建的Diffuse為例,修改其中的Pass函数,增加一行 "Cull Off"。



4.新增一個材質球並套用修改過的shader,即可達到雙面顯像的效果。


Shader "DoubleSided" {
   Properties {
      _Color ("Main Color", Color) = (1,1,1,1)
      _MainTex ("Base (RGB)", 2D) = "white" {}
      //_BumpMap ("Bump (RGB) Illumin (A)", 2D) = "bump" {}
   }
   SubShader {      
      //UsePass "Self-Illumin/VertexLit/BASE"
      //UsePass "Bumped Diffuse/PPL"
        
      // Ambient pass
      Pass {
      Name "BASE"
      Tags {"LightMode" = "PixelOrNone"}
      Color [_PPLAmbient]
      SetTexture [_BumpMap] {
         constantColor (.5,.5,.5)
         combine constant lerp (texture) previous
         }
      SetTexture [_MainTex] {
         constantColor [_Color]
         Combine texture * previous DOUBLE, texture*constant
         }
      }
     
   // Vertex lights
   Pass {
      Name "BASE"
      Tags {"LightMode" = "Vertex"}
      Material {
         Diffuse [_Color]
         Emission [_PPLAmbient]
         Shininess [_Shininess]
         Specular [_SpecColor]
         }
      SeparateSpecular On
      Lighting On
      Cull Off
      SetTexture [_BumpMap] {
         constantColor (.5,.5,.5)
         combine constant lerp (texture) previous
         }
      SetTexture [_MainTex] {
         Combine texture * previous DOUBLE, texture*primary
         }
      }
   }
   FallBack "Diffuse", 1
}




作者: nts    时间: 2013-10-17 09:42
不错的教程,收藏了
作者: 幸福小猪    时间: 2013-10-28 10:39
http://auto.howstuffworks.com/question432.htm
作者: 52530740    时间: 2013-10-28 17:42
不错 不错 收藏了
作者: herry7x    时间: 2013-10-29 13:43
这样会有个问题存在,cull off的是将正面的渲染结果完整的复制到了背面,连同光照计算的结果也复制了,就会导致复制出来的面光照是错误的,本来在光的背面,结果显示也是亮的了。




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