用来在球中播放全景视频
方法一:C# 法线翻转
转自:https://blog.csdn.net/ch080239/article/details/52099544
int[] triangles = gameObject.GetComponent<MeshFilter>().mesh.triangles; for (int i = 0; i < triangles.Length; i += 3) { int t = triangles[i]; triangles[i] = triangles[i + 2]; triangles[i + 2] = t; } gameObject.GetComponent<MeshFilter>().mesh.triangles = triangles;
方法二:Shader
哪里找的忘记了...
Shader "Unlit/VRShader" { Properties { _MainTex ("Texture", 2D) = "white" {} } SubShader { Tags { "RenderType"="Opaque" } LOD 100 Cull Front //剔除正面,用于看到球体的内 Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag #pragma multi_compile_fog #include "UnityCG.cginc" struct appdata { float4 vertex : POSITION; float2 uv : TEXCOORD0; }; struct v2f { float2 uv : TEXCOORD0; UNITY_FOG_COORDS(1) float4 vertex : SV_POSITION; }; sampler2D _MainTex; float4 _MainTex_ST; v2f vert (appdata v) { v2f o; o.vertex = UnityObjectToClipPos(v.vertex); o.uv = TRANSFORM_TEX(v.uv, _MainTex); UNITY_TRANSFER_FOG(o,o.vertex); return o; } fixed4 frag (v2f i) : SV_Target { float u_x=1-i.uv.x; //因为球的内部是像镜子一样反着的 float u_y=i.uv.y; //所以要改变其uv坐标 i.uv=float2(u_x,u_y); //只改变x,就行了, fixed4 col = tex2D(_MainTex, i.uv); UNITY_APPLY_FOG(i.fogCoord, col); return col; } ENDCG } } }
评论已关闭