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

[Feature Request]: Add VQT Material Swap Component for Game Object Level Control #25

Open
Amoenus opened this issue May 22, 2024 · 2 comments

Comments

@Amoenus
Copy link
Contributor

Amoenus commented May 22, 2024

User Story

As an asset maker / avatar editor, I want to add the VQT Material Swap component to individual props (game objects), so that I can have more granular control over material swapping, enhancing the modularity and ease of use of my assets with tools like VRCFury.

Current Limitation

Currently, material swapping is managed at the avatar root level using the Material Conversion Settings -> Additional Material Conversion Settings. This setup limits the flexibility and reusability of material swap configurations. It also makes it cumbersome to apply the same configuration across multiple avatars or specific game objects within an avatar.

Acceptance Criteria

Component Addition:

  • The VQT Material Swap component can be added to any game object within an avatar.

Material Selection:

  • The component allows users to select and swap materials specifically for the game object it is attached to and its children.
  • The material selection is limited to avoid abuse, ensuring only materials associated with the game object and its child objects can be selected.

Shader Compatibility:

  • By allowing full material replacement. The component supports the transition between custom shaders for PC and simplified shaders for VRChat Mobile. E.g particles.

Context

  • This functionality is aimed at improving the drag-and-drop experience for modular assets.
  • It allows asset makers to package props in a way that maximizes compatibility and ease of use with VRChat's PC and Android platforms.

Benefits

  • Enhances the modularity and flexibility of asset creation.
  • Improves user experience for asset makers using modular tools like VRCFury.
  • Ensures better asset compatibility between PC and VRChat Mobile versions.
  • Simplifies automatic avatar conversion without additional changes after conversion.
@kurotu
Copy link
Owner

kurotu commented May 22, 2024

Thank you for the detailed and clear explanation. Your suggestion sounds great.

Currently I'm working on another project, so I won't be able to start on this immediately. However, I would like to add this feature in the future.

I have a few questions to clarify:

  • The root level Additional Material Conversion Settings has options other than Swap. Do you think Swap alone is sufficient? Would it be better to develop another VQT Material Convert in future?
  • When both parent and child objects have VQT Material Swap for each of them, should the child component settings take priority?

@Amoenus
Copy link
Contributor Author

Amoenus commented May 23, 2024

Hi @kurotu, thanks for the quick reply,

Question 1

In my opinion, achieving feature parity with Additional Material Conversion Settings makes the most sense.

However, it depends on how difficult it is to implement. If the scope needs to be small, a simple Swap could be sufficient as a start.

Question 2

Yes! The child component settings should act as an 'override' for the global (avatar root) defaults. This should also apply to any 'nested' child objects.

So, if there are any conflicts, the logic as I see it would be:

Global (avatar root)
└── Child 1 (overrides Global)
    └── Child 2 (overrides Child 1 and/or Global)
        └── Child 3 (overrides Child 2 and/or Child 1 and/or Global)

This way, we keep the current flow 'as is' but add additional control only when it's needed.

Thanks again, and let me know if you have any more questions.

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

No branches or pull requests

2 participants