Create smoothed out animations that mimics IK Sync on avatars for OSC controlled parameters for VRChat.
Easily fix your choppy face-tracking, stuttery custom expressions, or other OSC controlled VRChat parameters by running your existing avatar setup through this tool!
OSCmooth is a VRCSDK tool to help easily convert your existing parameter driven animation setups to be smoothed out over the network, with the idea that OSC in its current state does not have any sort of officially supported network interpolation. This for all intents and purposes is designed to be an in-animator solution for that issue.
This tool started development after information released that IK Sync currently does not have any increased network frequency, contrary to information available on the VRC Docs, so using IK Sync only interpolates parameters. This means that the same or similar smoothing or interpolation system could replicate IK Sync without relying to heavily on the existing networking framework provided by VRChat.
- Download
OSCmooth.unitypackage
from Releases. - Import
OSCmooth.unitypackage
into your Unity project. - Access the tool from the top toolbar under Tools/OSCmooth.
- (Optionally) View the OSCmooth Workflow section for a quick-start
OSCmooth provides a neat interface to easily apply smoothing to multiple parameters at a time.
Settings:
- Avatar
- This is where you place your VRChat avatar or VRCAvatarDescriptor from the dropdown or from dragging the root of the Avatar into this slot.
- Layer
- This is the 'Playable Layer' controller that the tool will use. It must be filled out on your VRC Avatar Descriptor in order to be used in the tool.
- Config
- This is where you can load preset parameter configurations, either saved by you or shared by others.
- Use Playable Layer Parameters
- This will pull all editable parameters from the selected 'Playable Layer' to be configured in
Parameter Configuration
- This will pull all editable parameters from the selected 'Playable Layer' to be configured in
- Default Parameter Values
- These are the default settings that all new parameters in the
Parameter Configuration
will pull from.
- These are the default settings that all new parameters in the
- Parameter Configuration
- Parameter
- The name of the parameter to be smoothed out in the Playable Layer
- Smoothness
-
Local Smoothness
- How much smoothness is applied to your viewpoint for this parameter.
-
Remote Smoothness
- How much smoothness is applied that other users will experience for this parameter.
-
Proxy Conversion
- Convert existing animations to work with the output Proxy parameter generated from this tool.
-
Flip Input/Output
- A mostly redundant setting that will set the input to be the Proxy parameter and output to be the base parameter. Useful if an app outputs a proxy parameter.
-
- Parameter
OSCmooth is intended to make creating so-called 'feedback loop smoothing' blendtrees much more automated and easier to integrate into existing animation setups. These smoothing blendtrees will take your existing base parameters and output a smoothed out ...OSCm_Proxy
parameter that can then be used in animations.
The tool applies a smoothing blendtree to each parameter you run through the Parameter Configuration
in the tool, and optionally can convert your existing animations to automatically work with the smoothing blendtree.
A little showcase on how you would typically add OSCmooth to any parameter:
And the resultant animation setup:
- Potentially decouple animation layer from base Playable Layer, and merge on build for dynamically added, non-destructive implementation
- More generalized automatic setup, automatic implementation
- Allow third-party tools/animations/etc. to directly implement their own parameters into the smoothing layer without user intervention.
- Implement frame-time detection and smoothing correction.
- Simplify parameter setup
- Haï~ for the innovative blend tree smoothing technique
- Razgriz for coming up with the idea of compacting the huge animation setup using Direct blendtrees
- VRCFT Discord members and everyone who needed smooth face tracking for pushing me to develop this tool!