Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
197 stars 9 forks source link

Support for Twist Bones (Additional Torsion) in the VRIK #1601

Open Mattyrogue opened 3 years ago

Mattyrogue commented 3 years ago

Is your feature request related to a problem? Please describe.

Presently, NeosVR has no support for Twist Bones, leading to some confusion for long-time creators setting up avatars when they ask why their avatar isn't 'bending their arm like x/y'.

While the IK in Neos is good, if not incredibly robust, it stands to reason that the additional torsion and twist points provided by twist bones could enhance avatars further, allowing for even more natural movement and less edge cases in the IK 'breaking' and producing weird bends and shapes.

Additional context

I've been trying to get in touch with such creators, for examples and use cases of twist bones, apparently these are commonplace in any Valve official IK rig (such as the Metrocop from Half Life: Alyx) and in a number of upmarket Gumroad/Booth VR avatars (such as ZaWoo's 'Rascal Rabbit')

Included citation of twist bones; https://cascadeur.com/help/twist_bones (Twist Bone Documentation on Cascadeur) https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/ (Mecanim Humanoid, utilizes Twist Bones) https://youtu.be/LTQ9gyeaeWI (Blender) https://youtu.be/UC_voh3sGy4 (3ds Max) https://vrcat.club/threads/tutorial-guide-twist-bones-what-are-they-and-how-do-you-use-them.3622/ (VRChat discussion)

Models making extensive use of Twist Bones; https://gumroad.com/zawoo#XKOLP (ZaWoo Rascal Rabbit)

Further citation and documentation needed.

TehTurk commented 3 years ago

This wouldn't be a bad addition, but it'd also be a matter of when previously I had asked that Twist Bones would typically be ignored from IK setups currently #1301 due to them false rigging or identify as hand or arm bones due to how the importer will use it for heuristics. I'm aware twist bones could also be technically setup in a fashion with Logix but I can also understand how this might be unideal.

InsaneGrox commented 3 years ago

Bit unrelated, but it is indeed possible to do these using logiX, it's slightly jank, but I did do it on my avatar. https://youtu.be/gk_J5w9KwAs (still want official support for them though)

shiftyscales commented 3 years ago

Regarding twist bones, Frooxius has noted before that:

The IK is based on the actual body being the one that provides the natural restrictions. It makes it more performant that way and better behaved for the most part, as you don't have to solve the constraints or worry about the "virtual body constraints" not perfectly aligning with your real body ones.

https://discord.com/channels/402159838827905024/477711742001086505/679179580015378462

This has also come up on issues like #1507. I definitely understand the appeal for twist bones, particularly to allow content creators to ensure their model moves and acts in the way they want it to, but it's generally easier/better to work with the existing systems as much as possible than trying to work around them.

All the more so if the official systems can be improved/extended to behave better/be even more robust.

Aerizeon commented 3 years ago

@shiftyscales Well, considering the LogiX method is the only thing i've seen that makes your wrists not look like they were ran over by a truck in some poses, I feel that the performance impact argument isn't really that great - the LogiX will be more expensive than having a system built in, that has adjustments for constraints.

TehTurk commented 3 years ago

Maybe having access to Generalized IK Systems? It's not like they need to be apart of the VRIK inherently I know access to them as been wanted for a lil bit. With Twist bones being auto setup when doing Avatar Setup.

shiftyscales commented 3 years ago

@Aerizeon - hence why I mentioned issues like #1507 to help improve the system, which lessens the needs to work around it with other solutions like twist bones in the first place. Also what do you mean 'performance impact argument'? Where/when did I say anything on performance? Are you misreading something?

3x1t-5tyl3 commented 3 years ago

I'm certain that @Aerizeon meant the quote from Froox you quoted @shiftyscales . An excerpt of which states "It makes it more performant that way"

shiftyscales commented 3 years ago

Yeah, but that quote (in context) is outside of the scope of this issue. @3x1t-5tyl3 - Frooxius was just providing insight on why the system was designed the way it was, not comparing it to what users would make in Logix. I was using it, like the one in #1507 to note why the system was built the way it was.

As far as generalized IK systems/components, @TehTurk had mentioned, #1677 had already been opened for that.