Unity VR 球体中的倒置视图

Inverted View in VR sphere in Unity

我一直在尝试在 Google Cardboard VR 的翻转法线球内投射 360 度视频。视频工作正常,只是它是水平反转的,只有当屏幕上有一些文字时才会注意到。我已经包含了视频的屏幕截图和它前面的 UI.Text 元素以进行比较。

我试图通过 projectionMatrix 反转相机的视图,但它最终变成空白 space。截图:

我想不出使视频项目正确的方法。请帮忙!

在球体上翻转法线是不够的,您还需要反转 UV 坐标的 U 部分(即,将所有值 U 更改为 1-U)。设置了一个球体,以便外部从右到左正确呈现文本。当你翻转法线时 "right" 从外面看仍然在右边...这意味着从里面看它在 左边

您需要自己手动编辑 UV 坐标,或者从资产商店获取预制倒球体(IIRC 有两个免费提供)。

这是一个正确显示内容而不反转它的着色器,我已经用 Unity 2018.1.1 测试了它,因为我目前在我的项目中使用它:

Shader "InsideVisible" {
Properties {
    _MainTex ("Base (RGB)", 2D) = "white" {}
}

SubShader {
    Tags { "RenderType"="Opaque" }
    Cull front    // ADDED BY BERNIE, TO FLIP THE SURFACES
    LOD 100

    Pass {  
        CGPROGRAM
            #pragma vertex vert
            #pragma fragment frag

            #include "UnityCG.cginc"

            struct appdata_t {
                float4 vertex : POSITION;
                float2 texcoord : TEXCOORD0;
            };

            struct v2f {
                float4 vertex : SV_POSITION;
                half2 texcoord : TEXCOORD0;
            };

            sampler2D _MainTex;
            float4 _MainTex_ST;

            v2f vert (appdata_t v) {
                v2f o;
                o.vertex = UnityObjectToClipPos(v.vertex);
                // ADDED BY BERNIE:
                v.texcoord.x = 1 - v.texcoord.x;                
                o.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex);
                return o;
            }

            fixed4 frag (v2f i) : SV_Target {
                fixed4 col = tex2D(_MainTex, i.texcoord);
                return col;
            }
        ENDCG
        }
    }
}

如果您需要有关着色器的更多信息,可以查看 this tutorial