I've been working on the demo for the GDC 2018 with Oculus Avatars, and the demo is supposed to work locally (offline) because the internet on such major exhibitions is generally unavailable.
Today I tried to launch my demo with all computers connected to just LAN, without external internet access. Everything is working fine, except for the very slow creation of Oculus Avatars. Turns out, when the avatar prefab is instantiated in a scene, it needs to request an avatar specification from C API, although I am not using customized avatars, just the default blue transparent bodies that I postprocess manually. As I was able to discover, when there's no Internet connection, the avatars take forever to instantiate. With internet access, it's about 0.6 seconds, and without internet, it's ~22 seconds, which is critical for my current app.
Again, I am using UserID = 0, I do not have a registered Oculus App ID or anything like that. Is there a way to force it to load the default specification without asking a server?
The culprit is the function CAPI.ovrAvatar_RequestAvatarSpecification, which calls it's callback only after 22 seconds (I suppose that's when the HTTP timeout kicks in) It should return the native pointer (IntPtr) to be later used in ovrAvatar_Create. I tried to pass the null pointer (hoping that there's a basic check inside C function), but Unity just crashes.
Guys, I really need your help. You've made an awesome SDK, avatar animation works perfectly and all that. But this unexpected issue is killing my setup. I really need to find a fix in the next few hours or I'm in trouble 😞