App Lab, VRC.Quest.Functional.5, The app appears to only support 3DOF, Using OVRCameraRig
Hi, So I have had my app fail to publish to App Lab with the error: 'The app appears to only support 3DOF. Apps on the Quest platform must support 6DOF and respond to the HMD's positional tracking as well as orientation.' error: VRC.Quest.Functional.5 Firstly the I have uploaded 3 apps to App Lab using exactly the same build from Unity just changing the cube map renders, all other uploads have been fine. I am running Unity 2019.4.13f1, using the OVRCameraRig as I need to use per eye skyboxes for my stereoscopic renders, (I have tried using the new XR camera but I need to use per eye unique skyboxes). Everything functions great within the app, I only need 3DOF, and I presume my app is 6DOF with developing for quest, just un-noticeable due to being a camera viewing skyboxes and only physical 3D geometry clickable buttons? NOTE: If I turn on Position tracking in the camera the app feels rubbish, with buttons moving slightly. Is there another setting I have missed? Is this a recent test that other apps have passed before? Or is this just a random test fail and I need to just re-submit with a note saying I only need 3DOF for the client? I have had apps fail before due to icon pixel size and had to add a note saying it is exactly what is required then it gets passed!! Please could anyone give some guidance.1.3KViews0likes1CommentCharacter Camera Constraint not working properly
In Unity for as long as I can remember there has always required a "Character Camera Constraint" component attached to the "OVRPlayerController" game object in order to keep the OVRPlayerController game object following the player camera utilizing the 6dof of the Oculus Quest . Ever since Oculus Intigration 12.0 was released It seems like they have changed how the Character Camera Constraint component works as it now required several other components to function without throwing any errors. Even with all of these components (Capsule Collider, Rigidbody, Simple Capsule with Stick Movement) the OVRPlayerController only rotates with the player camera, the position never changes. Does anyone know how to fix this problem/ how to get this to work, or does Oculus have to patch it?4.3KViews2likes5CommentsQuest: Does Unity support surface shader tessellation for Android / OpenGL ES
I'd asked this on the Unity3D reddit, but haven't got a clear answer wrt the Quest. I'm not a coder at all (a filmmaker) using Unity and creating stereoscopic VR video, and now looking at depthmap driven - for pseudo 6dof- video on the Quest. I've not been able to get a definite answer on if Unity supports surface tessellation shaders on android/Quest. The reason I ask is, because I'd like to convert the below shader (taken from github) which works perfectly on the Quest, to a tessellation based shader so in theory (in my thinking) I can use a lower triangle count sphere and still get smoother displacement. Currently I'm using a 1million triangle sphere with video mapped on it (top half 2d, bottom half grayscale depth map) for doing simulated 6dof vr video. Any help and insights, I'll be very grateful. Kind Regards. Shader "PointCloud/Displacer/Spherical_OU"{ Properties{ _MainTex ("Texture", 2D) = "black" {} _Displacement ("Displacement", float) = 0.1 _Maximum("Maximum", float) = 99.0 _BaselineLength("Baseline Length", float) = 0.5 _SphericalAngle("Spherical Angle", float) = 10.0 _FocalLength("Focal Length", float) = 90.0 } SubShader{ Tags { "RenderType"="Opaque" } Cull Back Lighting Off LOD 300 CGPROGRAM #pragma surface surf Lambert vertex:disp nolightmap // #pragma target 3.0 #pragma target 4.6 sampler2D _MainTex; float _Displacement; float _BaselineLength; float _SphericalAngle; float _FocalLength; float _Maximum; struct Input{ float2 uv_MainTex; }; inline float getDepthSpherical(float d) { return asin(_BaselineLength * sin(_SphericalAngle)) / asin(d); } inline float getDepthFlat(float d) { return (_FocalLength / -100.0) * _BaselineLength / d; } void disp (inout appdata_full v){ v.vertex.xyz = v.normal * clamp(getDepthSpherical(tex2Dlod(_MainTex, float4(v.texcoord.xy * float2(1, 0.5), 0, 0)).r), -_Maximum, 0) * _Displacement; } void surf(Input IN, inout SurfaceOutput o){ fixed4 mainTex = tex2D(_MainTex, IN.uv_MainTex * float2(1, 0.5) + float2(0, 0.5)); //o.Emission = mainTex.rgb; o.Albedo = mainTex.rgb; } ENDCG } FallBack "Diffuse" }1.5KViews1like0Comments