cancel
Showing results for 
Search instead for 
Did you mean: 

Meta Avatars SDK (Feedback/Issues)

mouse_bear
Retired Support

Do you have any feedback and/or issues in regards to the Meta Avatars SDK? Use this place to discuss, as we'll have members of the engineering team reviewing this thread!

 

Read the blog on the Meta Avatars SDK here: https://developer.oculus.com/blog/meta-avatars-sdk-now-available/

 

Refer to the Meta Avatars SDK documentation here: https://developer.oculus.com/documentation/unity/meta-avatars-overview/

108 REPLIES 108

cazforshort
Expert Protege

The documentation shows how to get your userID, but not how to set the userID on a remote avatar. My work flow is currently:

  1. Get user ID on local machine
  2. Send user ID & RecordStreamData() to remote model
  3. Instantiate remote avatar on networked client
  4. Get user ID from remote model
  5. ??? Apply User ID some how ???
  6. Use ApplyStreamData() for positioning avatar

What do I need to do in step 5?

Hi cazforshort-

 

You don't really need to worry about the user ID of an Avatar once you have loaded it using LoadUser(). So it sounds like the way you need to apply the remote avatar's user ID is to call LoadUser() - but that only needs to be done once.

 

Please see: https://developer.oculus.com/documentation/unity/meta-avatars-load-avatars/

 

I hope this helps. Let me know if it doesn't.

 

-Mike

RickEGM
Explorer

Hello! I've come across what I believe is a bug in the Meta Avatar SDK v13+

 

Bug: “Bones do not match bindpose” error appears when using UNITY skinning.

 

Unity Version 2021.3.3f1

Oculus Integration SDK v41

OVRPLugin: 1.73.0

Meta Avatar SDK v14.0.0.44.95

 

Explanation:

Currently setting the avatar skinner to UNITY will cause a “Bones do not match bindpose” error in Unity both in editor and on device (Quest 2).

 

Steps to Repro:

  1. In Unity 2021+ Import Oculus Integration SDK v41
  2. Import Meta Avatar SDK V14
  3. Open the example scene “MirrorScene” in Oculus/Avatar2/Example/Scenes/MirrorScene
  4. In the scene, select the AvatarSDKManagerHorizon gameobject, and on it’s OvrAvatarManager component, under Skinning Settings, make sure the only skinner supported is UNITY.
  5. Run the game.

 

Note: This is reproducible in any scene with the avatar skinners forced to UNITY.

 

Results:

The following error will appear:

BonesDoNotMatchBindPoseBug.png

Nomallonious
Explorer

Hi there.

We have encountered an issue (or at least unexpected behavior) when loading a built-in avatar using either LoadAssetsFromZipSource or LoadAssetsFromStreamingAssets. It seems that if we are creating and loading multiple avatars using the same built-in avatar but with different desired LOD levels then we get a result of (UnmatchedLoadFilters) from OvrAvatarEntity_LoadUriWithFilters on subsequent calls. This behavior appeared after upgrading to Meta Avatars 12 from a much earlier version. This situation can arise when two player that have not configured their custom avatars enter multiplayer together. The local player uses higher LOD levels than the remote player (for performance reasons) but both players are using the first built-in avatar (avatar 0) by default.

 

The ideal behavior would be to have the ability to load different / additional LOD levels for a built-in avatar as needed rather than having to restrict all applications of a specific built-in avatar to certain LOD levels or having to load all levels in a worst case. I'll look forward to hearing more. Thanks!

It is needed if I want other users in the same room to see my avatar and me to see theirs? 

Right now all the users just end up looking like me.

Hey Mike,

I have the user Id saved in the OVRAvatarEntity as _userId. When I then call LoadUser() I get error after error, but theyre all empty and have no details about what went wrong. Just a response code 400 and

"transfer failed...error: No error" a weird one for sure.

cazforshort_1-1658186841936.png

 

Not sure if the image is clear, but here are some of the console errors:

 

[ovrAvatar2 native] stats::url file transfer failed: http response code: 400
 uri: https://graph.oculus.com/4990112214450051?fields=id,avatar_v3{model.profile(rift_v03).platform(pc).sdk_version(Avatar2%20runtime%20SDK%2012.0.0.24.280%20client%20SDK%2012.0.0.24.280).client_version(0.1%2B2020.3.33f1).client_name(Cazforshort.Normcore%20MetaQuest){url,id,creation_time,animation_set}}
 error: No error
 error details: 
 trace-id: AoNu4I+D9uV
UnityEngine.Debug:LogError (object,UnityEngine.Object)
Oculus.Avatar2.OvrAvatarLog:Log (Oculus.Avatar2.OvrAvatarLog/ELogLevel,string,string,UnityEngine.Object) (at Assets/Oculus/Avatar2/Scripts/OvrAvatarLog.cs:101)
Oculus.Avatar2.OvrAvatarLog:LogCallBack (Oculus.Avatar2.CAPI/ovrAvatar2LogLevel,string,intptr) (at Assets/Oculus/Avatar2/Scripts/OvrAvatarLog.cs:83)

 

[ovrAvatar2 native] stats::Timing: Avatar specification retrieval failed, 0 bytes took 0.084287 seconds, http response 400
UnityEngine.Debug:Log (object,UnityEngine.Object)
Oculus.Avatar2.OvrAvatarLog:Log (Oculus.Avatar2.OvrAvatarLog/ELogLevel,string,string,UnityEngine.Object) (at Assets/Oculus/Avatar2/Scripts/OvrAvatarLog.cs:109)
Oculus.Avatar2.OvrAvatarLog:LogCallBack (Oculus.Avatar2.CAPI/ovrAvatar2LogLevel,string,intptr) (at Assets/Oculus/Avatar2/Scripts/OvrAvatarLog.cs:83)
Oculus.Avatar2.CAPI:OvrAvatar_Update (single) (at Assets/Oculus/Avatar2/Scripts/CAPI/OvrAvatarAPI_Avatar.cs:256)
Oculus.Avatar2.OvrAvatarManager:Update () (at Assets/Oculus/Avatar2/Scripts/OvrAvatarManager.cs:510)

 

[ovrAvatar2 native] specification::Failed to retrieve Avatar Specification for user id 4990112214450051
UnityEngine.Debug:LogError (object,UnityEngine.Object)
Oculus.Avatar2.OvrAvatarLog:Log (Oculus.Avatar2.OvrAvatarLog/ELogLevel,string,string,UnityEngine.Object) (at Assets/Oculus/Avatar2/Scripts/OvrAvatarLog.cs:101)
Oculus.Avatar2.OvrAvatarLog:LogCallBack (Oculus.Avatar2.CAPI/ovrAvatar2LogLevel,string,intptr) (at Assets/Oculus/Avatar2/Scripts/OvrAvatarLog.cs:83)
Oculus.Avatar2.CAPI:OvrAvatar_Update (single) (at Assets/Oculus/Avatar2/Scripts/CAPI/OvrAvatarAPI_Avatar.cs:256)
Oculus.Avatar2.OvrAvatarManager:Update () (at Assets/Oculus/Avatar2/Scripts/OvrAvatarManager.cs:510)

 

@mikedurand Just checking in. I can't seem to find any info about this error in the documentation.

mikedurand
Oculus Staff

Mitigating The Changes In File Locations In SDK v14 And Newer


What Happened

In order to make our shaders easier to be used by apps integrating the Meta Avatars SDK we moved several files from the Examples folder in the Meta Avatars SDK to Assets/Oculus/Avatar2/Scripts/ShaderUtils in SDK version v14 and newer. Here are the files that were moved:

 

Assets/Oculus/Avatar2/Scripts/ShaderUtils/AvatarCustom.cginc

Assets/Oculus/Avatar2/Scripts/ShaderUtils/AvatarCustomTypes.cginc
Assets/Oculus/Avatar2/Scripts/ShaderUtils/AvatarSubmesh.cginc
Assets/Oculus/Avatar2/Scripts/ShaderUtils/OvrAvatarMotionVectorsCore.hlsl
Assets/Oculus/Avatar2/Scripts/ShaderUtils/OvrAvatarVertexFetch.hlsl

Assets/Oculus/Avatar2/Scripts/ShaderUtils/OvrDecodeFormats.cginc
Assets/Oculus/Avatar2/Scripts/ShaderUtils/OvrDecodeUtils.cginc

 

This had the unfortunate consequence of potentially breaking projects that were referring to these shaders and includes from the previous location. 

 

Mitigation

When upgrading the SDK version from a version prior to v14 to v14+, please delete the files under Assets/Oculus/Avatar2 from your project before installing the new version of the Meta Avatars SDK. If this is your practice before taking an upgrade then you likely were not affected by this change.

 

If, however, you have added or modified files under the Avatar2 directory structure and cannot delete the entire directory structure safely, then please make sure to delete the following files after importing the newer version of the SDK:

 

Oculus/Avatar2/Scripts/Skinning/GpuSkinning/Shaders/OvrDecodeFormats.cginc

Oculus/Avatar2/Scripts/Skinning/GpuSkinning/Shaders/OvrDecodeUtils.cginc


We apologize for any inconvenience this has caused.

 

Hi @mikedurand , 

that still doesn’t seem to fix the 400 error I’m seeing with Normcore. 

StefaSic
Explorer

I have a question regarding using avatars cross-platform. I've managed to get the preset avatars loading in for other platforms (ex. SteamVR). However when it comes to networking, if a player on SteamVR joins a player on Quest, the player on SteamVR won't be able to load in the Quest player's user avatar. It uses a random preset for the Quest user, presumably because it's trying to use the CDN to load the Quest user's avatar with their user id, but there is no access token on SteamVR so the call fails.

 

So my question is: for cross-platform multiplayer, is there a way for an Oculus player's user-created avatar to load for other players who aren't on an Oculus platform? Thanks