HuldaGnodim 发表于 2021-11-19 18:04

为什么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即可。

ainatipen 发表于 2021-11-19 18:07

出现这种情况是因为模型用了双面材质,而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即可。

c0d3n4m 发表于 2021-11-19 18:09

Maya默认是双面显示。这是为了影视制作方便。因为影视制作不太需要注意正反面。
3D引擎,不管是Unity还是UE4还是其它的引擎,为了效率,通常会把背面剔除。这样在背面的面就不会被渲染。
这个问题也是从影视转到游戏或者初学者常碰到的问题。
解决方法也很简单,在用Maya制作模型时,养成时刻注意面的朝向的习惯。第一时间打开视口的背面剔除。这样在制作时就能时刻知道面是否正确了。


这个问题,在所有3D软件和所有3D引擎中都存在。包括Maya,Max,Blender, Unity,UE4. 另外,做影视的同学也应该注意这个问题。正确处理能大大减少渲染时间。

rustum 发表于 2021-11-19 18:10

我不用unity,我用虚幻的,默认情况下虚幻的材质就是单面显示,不知道unity是不是这种情况,如果是的话你让它显示双面材质不就好了

super1 发表于 2021-11-19 18:19

可不就是默认单面显示么
页: [1]
查看完整版本: 为什么maya模型导入unity中有一面材质是透明的。球球大神 ...