使用 Cardboard 在 Unity 3D 中带有 alpha 的 Skybox

Posted

技术标签:

【中文标题】使用 Cardboard 在 Unity 3D 中带有 alpha 的 Skybox【英文标题】:Skybox with alpha in Unity 3D with Cardboard 【发布时间】:2016-02-10 10:22:59 【问题描述】:

我已经按照instructions in the Unity guidelines 设置了我的 Photoshop 文档。

我意识到这是针对带有 alpha 的 textures,但我尝试使用相同的技术创建天空盒。当我使用纹理设置场景时,alpha 通道被保留(所以我的 PSD 看起来是正确的):

但是,当我将图像设为“立方体贴图”并且着色器是接受“立方体贴图”的“天空盒”时,Alpha 通道会丢失:

我认为这里有两个选择,1)将图像用作纹理并渲染背面,2)找到它无法在“天空盒”中渲染 alpha 的原因。

有人遇到过这个问题或有什么有用的建议吗?

【问题讨论】:

【参考方案1】:

仅测试 Unity 5.3.2

此脚本将帮助您使场景中的所有网格物体的法线指向您的 Cardboard 相机。创建一个自定义 C# 脚本并将其放入其中。

void Start () 
        MeshFilter filter = GetComponent(typeof (MeshFilter)) as MeshFilter;

    if (filter != null) 
        Mesh mesh = filter.mesh;

        Vector3[] normals = mesh.normals;
        for (int i=0;i<normals.Length;i++)
            normals[i] = -normals[i];
        mesh.normals = normals;

        for (int m=0;m<mesh.subMeshCount;m++)
        
            int[] triangles = mesh.GetTriangles(m);
            for (int i=0;i<triangles.Length;i+=3)
            
                int temp = triangles[i + 0];
                triangles[i + 0] = triangles[i + 1];
                triangles[i + 1] = temp;
            
            mesh.SetTriangles(triangles, m);
        
    

【讨论】:

以上是关于使用 Cardboard 在 Unity 3D 中带有 alpha 的 Skybox的主要内容,如果未能解决你的问题,请参考以下文章

Unity:如何将 VR Cardboard 游戏嵌入网站

Sphere 未在 Unity 中为 Google Cardboard 渲染

Unity 5.6 与 Google Cardboard 在每只眼睛中显示非常不同的图像

如何使用 Google Cardboard SDK for Unity 创建 VR 视频播放器

鎵挎帴cardboard澶栧寘锛寀nity3d澶栧寘锛堝寳浜姩杞€?璋锋瓕CARDBOARD鐪熷己澶э級

导入Cardboard SDK后Build到安卓平台出错:Unable to merge android manifests. (已解决)