为什么maya模型导入unity中有一面材质是透明的。球球大神 ...
出现这种情况是因为模型用了双面材质,而Unity不支持双面材质。故导入模型到Unity中,会出现一面有贴图,另一面透明的情况。解决方法:
1、自定义一个双面材质Shader,代码如下:
Shader "Nature/Vegitation Vertex Lit" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_FrontTex ("Front (RGB)", 2D) = "white" { }
_BackTex ("Back (RGB)", 2D) = "white" { }
}
SubShader {
Material {
Diffuse
Ambient
Shininess
Specular
Emission
}
Lighting On
SeparateSpecular On
Blend SrcAlpha OneMinusSrcAlpha
Pass {
Cull Front
SetTexture {
Combine Primary * Texture
}
}
Pass {
Cull Back
SetTexture {
Combine Primary * Texture
}}}}
2、在模型材质里更改的Shader为上面这个Nature/Vegitation Vertex Lit的这个自定义shader即可。 出现这种情况是因为模型用了双面材质,而Unity不支持双面材质。故导入模型到Unity中,会出现一面有贴图,另一面透明的情况。
解决方法:
1、自定义一个双面材质Shader,代码如下:
Shader "Nature/Vegitation Vertex Lit" {
Properties {
_Color ("Main Color", Color) = (1,1,1,0)
_SpecColor ("Spec Color", Color) = (1,1,1,1)
_Emission ("Emmisive Color", Color) = (0,0,0,0)
_Shininess ("Shininess", Range (0.01, 1)) = 0.7
_FrontTex ("Front (RGB)", 2D) = "white" { }
_BackTex ("Back (RGB)", 2D) = "white" { }
}
SubShader {
Material {
Diffuse
Ambient
Shininess
Specular
Emission
}
Lighting On
SeparateSpecular On
Blend SrcAlpha OneMinusSrcAlpha
Pass {
Cull Front
SetTexture {
Combine Primary * Texture
}
}
Pass {
Cull Back
SetTexture {
Combine Primary * Texture
}}}}
2、在模型材质里更改的Shader为上面这个Nature/Vegitation Vertex Lit的这个自定义shader即可。 Maya默认是双面显示。这是为了影视制作方便。因为影视制作不太需要注意正反面。
3D引擎,不管是Unity还是UE4还是其它的引擎,为了效率,通常会把背面剔除。这样在背面的面就不会被渲染。
这个问题也是从影视转到游戏或者初学者常碰到的问题。
解决方法也很简单,在用Maya制作模型时,养成时刻注意面的朝向的习惯。第一时间打开视口的背面剔除。这样在制作时就能时刻知道面是否正确了。
这个问题,在所有3D软件和所有3D引擎中都存在。包括Maya,Max,Blender, Unity,UE4. 另外,做影视的同学也应该注意这个问题。正确处理能大大减少渲染时间。 我不用unity,我用虚幻的,默认情况下虚幻的材质就是单面显示,不知道unity是不是这种情况,如果是的话你让它显示双面材质不就好了 可不就是默认单面显示么
页:
[1]