Skip to content

Unity tool to generate components for head-source, IK-driven avatar motion in desktop VRChat

License

Notifications You must be signed in to change notification settings

kusomaigo/DeskyMode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeskyMode

VTube in VRChat: Unity tool to generate components for head-source, IK-driven avatar motion in desktop VRChat

neri_demo_0.5.mp4
Stream Usage Example
stream_clip_example.mp4

Uses proposed head tracking parameters in VRCFaceTracking (Head Parameters PR)

Setup Instructions

  1. Make sure your VRC Avatar Project is up to date
  2. Add VRCFury to your project
  3. Add VRLabs' Final-IK-Stub to your project
    • Alternatively, you can use the actual Final IK from RootMotion ($$$). YOU DO NOT NEED FINAL IK TO USE DESKYMODE. The stub works perfectly fine for VRC.
  4. Add DeskyMode to your project
    • Download the latest .unitypackage from the Releases tab and import it into your project
    • Download the Package zip, unzip it, and add the package via Unity Editor's Package manager

Updating Instructions

  1. Import the updated package, or unzip the package zip contents over the original install, or pull this GitHub repo if that's how you downloaded the package
  2. In your Unity Editor top toolbar: Tools -> DeskyMode -> Refresh Scripts

DeskyMode Instructions

DeskyMode can be added to any humanoid avatar that has been set up for VRChat.

  1. Make sure your humanoid avatar is properly set up for VRChat (with a VRCAvatarDescriptor)
  2. Open the DeskyMode tool menu in the top toolbar (Tools -> DeskyMode -> DeskyMode Window)

toolbar

  1. Drag your avatar into the Avatar slot
    • (Optional) Avatar Scale is set automatically based on your avatar's height. You should only set this manually if the motion of the targets seem too small/large for your avatar. Generally, you should not need to modify this value!
    • (Optional) Check the "Debug" checkbox to see the transforms DeskyMode uses in generating the FIK components (Avatar References and IK Targets)
    • (Optional) Check the "Add Mesh Renderers" checkbox if you would like mesh primitive debug visualizers on the IK targets
    • The default VRCFury prefab uses the synced parameters asset. Note that it will occupy 56 bits of synced avatar parameters space. You can drop in the other prefab (without the "Sync" suffix) that takes no synced parameters, but remote users will not see DeskyMode movement if you enter poses via stations or avatar animations or do anything that disables avatar IK Sync.

DeskyMode Window

  1. Click the "Apply All" button to apply DeskyMode to your avatar

TODO

  • Massive code refactor because it's a mess
  • Workaround the import compilation issue Find another hack for Package distribution
  • Better window UI
  • Add settings for control of certain FIK properties
    • Spine stiffness
    • Different "presets"
    • ...
  • VCC package?

Notes

By overriding VRC IK, you lose on avatar IK Sync, thus causing weird remote-only issues with things like Gogoloco (and no synced movement to remote users who don't have your animations shown). Overriding VRC IK is useful to keep your head origin aligned with your mouse cursor (when standing only, as this does not apply when crouching/prone). DeskyMode now has checks in the default animator to disable the VRC IK Override if in any state that isn't "standing", including Gogoloco poses.

There will be some "adjustment" movement if you enable/disable DeskyMode as the head/body snaps to DeskyMode animated/regular position. This also happens if deskymode enable is cycled due to Auto Toggle (i.e. crouching). Part of the delay between the toggle and adjustment is due to what seems like some fixed time used by the Tracking Control state behavior, and another part is the recommended transition time.

Entering GogoLoco poses with "Hand Lock" toggle enabled may sometimes cause the hands to lock in odd positions for remote users. This is because GogoLoco poses are updated by IK Sync, not animation for remote users. Thus, the timing of the pose update for remote users is not always consistent.

Be wary of avatar optimizers such as d4rkAvatarOptimizer that can unintentially remove the Final IK components. Since the Final IK components are disabled and stay disabled as they're used by IK Execution Order components instead, optimizers like d4rk's will remove the IK components during the build for upload with its default settings!

License

All of the source assets and all generated assets from DeskyMode fall under the MIT License.

Credits

About

Unity tool to generate components for head-source, IK-driven avatar motion in desktop VRChat

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages