找回密码
 立即注册
查看: 437|回复: 4

为什么maya模型导入unity中有一面材质是透明的。球球大神 ...

[复制链接]
发表于 2021-11-19 18:04 | 显示全部楼层 |阅读模式
出现这种情况是因为模型用了双面材质,而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 [_Color]                                             
            Ambient [_Color]                                             
            Shininess [_Shininess]                                    
            Specular [_SpecColor]                                 
            Emission [_Emission]                                    
        }
        Lighting On                                             
        SeparateSpecular On                                       
        Blend SrcAlpha OneMinusSrcAlpha                        
        Pass {
            Cull Front                                    
            SetTexture [_BackTex] {                             
                Combine Primary * Texture
            }
        }  
        Pass {
            Cull Back                                         
            SetTexture [_FrontTex] {                             
                Combine Primary * Texture
}}}}
2、在模型材质里更改的Shader为上面这个Nature/Vegitation Vertex Lit的这个自定义shader即可。
发表于 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 [_Color]                                             
            Ambient [_Color]                                             
            Shininess [_Shininess]                                    
            Specular [_SpecColor]                                 
            Emission [_Emission]                                    
        }
        Lighting On                                             
        SeparateSpecular On                                       
        Blend SrcAlpha OneMinusSrcAlpha                        
        Pass {
            Cull Front                                    
            SetTexture [_BackTex] {                             
                Combine Primary * Texture
            }
        }  
        Pass {
            Cull Back                                         
            SetTexture [_FrontTex] {                             
                Combine Primary * Texture
}}}}
2、在模型材质里更改的Shader为上面这个Nature/Vegitation Vertex Lit的这个自定义shader即可。
发表于 2021-11-19 18:09 | 显示全部楼层
Maya默认是双面显示。这是为了影视制作方便。因为影视制作不太需要注意正反面。
3D引擎,不管是Unity还是UE4还是其它的引擎,为了效率,通常会把背面剔除。这样在背面的面就不会被渲染。
这个问题也是从影视转到游戏或者初学者常碰到的问题。
解决方法也很简单,在用Maya制作模型时,养成时刻注意面的朝向的习惯。第一时间打开视口的背面剔除。这样在制作时就能时刻知道面是否正确了。


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-19 18:10 | 显示全部楼层
我不用unity,我用虚幻的,默认情况下虚幻的材质就是单面显示,不知道unity是不是这种情况,如果是的话你让它显示双面材质不就好了
发表于 2021-11-19 18:19 | 显示全部楼层
可不就是默认单面显示么
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-9-23 03:27 , Processed in 0.091408 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表