纳金网
标题: 如何让模型产生双面法线效果 [打印本页]
作者: 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 |