Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

AvatarRoot API: Non-VRChat avatar support in VRCSDK projects #71

Open
wants to merge 6 commits into
base: main
Choose a base branch
from

Conversation

kaikoga
Copy link
Contributor

@kaikoga kaikoga commented Oct 29, 2023

Resolves #68, with avatar root detection logic described in the issue.

This is a potentially breaking change for VRCSDK + UniVRM environment. Current Non-VRChat avatar support (implemented in #34) is meant to not break existing NDMF plugins, which targets VRChat avatars only, in all projects including VRCSDK + UniVRM setup. This PR is the breaking part.

Explanation: VRM avatars were not AvatarRoots but would be. NDMF plugins expecting VRChat avatars may try to process VRM avatars, which would fail because VRCAvatarDescriptor does not exist. VRCSDK + UniVRM environment can be created using legacy UniVRM (0.99.4). info

User mitigation: Remove all VRM avatars, or all VRMMeta / Vrm10Instance components, when using VRChat only NDMF plugins in hybrid projects.

@kaikoga kaikoga marked this pull request as ready for review October 31, 2023 22:23
@bdunderscore
Copy link
Owner

Hmm. To resolve the compatibility issue, I think I'd prefer to have plugins declare what environments they're compatible with (with "vrchat" being the default). Let me noodle on this a bit and add that API first, before merging this.

@bdunderscore
Copy link
Owner

This will also need tests in a UniVRM environment... I'll have to look into auto-importing unitypackages.

@anatawa12
Copy link
Contributor

I think we should use upm version of univrm for testing since this pr expects upm version of univrm, not unitypackage one.

@kaikoga
Copy link
Contributor Author

kaikoga commented Nov 4, 2023

If ndmf is going to be aware of environments, perhaps we can warn if VRM version defines are not defined but installation is detected through AppDomain.CurrentDomain.GetAssemblies() (this should indicate a unitypackage installation)

@bdunderscore
Copy link
Owner

Sorry for the lack of replies - I haven't been able to do much development on NDMF/MA over the past few weeks. I'll hopefully be able to spend some more time on it in December.

@kaikoga
Copy link
Contributor Author

kaikoga commented Jan 27, 2024

Thoughts for this issue:

Theoretically, there may be three types of avatar setup when we want to create an avatar for VRC and VRM.
Which strategy should we support (or recommend)?

Setup as separate avatars

  • VRCAvatar (VRCDescriptor)
  • VRMAvatar (VRMMeta)

Pros: Currently available.
Cons: When VRC avatar (or MA outfit) is modified, manual sync to VRM avatar (or MA outfit) by hand.

Conversion plugin

  • VRCAvatar (VRCDescriptor)
    • → some ndmf plugin converts VRC components into VRM counterparts

Pros: Easy.
Cons: Requires development of conversion plugin, which may not be accurate enough or well customizable.

Universal avatar

  • VRCAvatar (VRCDescriptor) (VRMMeta)
    • → some ndmf plugin strips VRM components in VRC builds, vice versa.

Pros: Possible. Proof of concept ( docs_ja component ndmf pass )
Cons: Somewhat bloated avatar.

@kaikoga kaikoga force-pushed the avatar_root_true_xp branch 2 times, most recently from f724bbe to c26e478 Compare March 3, 2024 08:05
@kaikoga kaikoga force-pushed the avatar_root_true_xp branch 2 times, most recently from d9775df to 8e71646 Compare March 16, 2024 23:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improve RuntimeUtil.IsAvatarRoot()
3 participants