Beta 2024.9.4.357

From Resonite Wiki

Beta 2024.9.4.357 is a Resonite version released on 2024/09/04.

The following notes were sent by Frooxius:

Hello everyone! I've got a build for your after a while.
This one took a bit, because I spent a lot of time working on the new procedural locomotion animation system, which came up as a requirement for one of our business client. My goal was to get it as good as possible before release, but I've been getting progressively more fatigued with it, making it hard to make progress, but also because it already got merged internally, it was blocking releasing any builds.
Because of that, I'm releasing this in its current state - it should be polished enough to be better than the existing animations and any major bugs and issues should be sorted out. However the animations themselves aren't as tight and tuned as I'd like them to be, which means they can look a bit goofy.
Fortunately the system is highly configurable and we've had a number of dedicated community members helping fine tune the default parameters. This will continue to help make the default animations look better and if you're like to nab any of these tunings and use them right now or even contribute to the process, go here: https://github.com/Yellow-Dog-Man/Resonite-Issues/discussions/2799
There are other additions as well that you can use right away - there's a new set of components for animating fingers! You can use those to setup custom finger pose systems and smoothly blend between those and the finger tracking solutions on the avatar.
A lot of things got fixed up and tweaked too. This build also contains significant improvements to our universe system, which is very useful for corporations and organizations - but some of them can be useful for you as well. Overall these help make Resonite a more well rounded solution for those, which helps support our team.
I'll be focusing on a few issues that have been piling up and some other stuff I wanted to do for a bit in the new few builds, before I circle back and integrate some of the polish for the animations.
Also big thanks to everyone who participated so far helping test and fine tune the procedural animations: @troyBORG, @gamethecupdog, @Foolish, @Shifty, @orange, @Psychpsyo, @June, @Modern, @Nuki Raccoon ♀, @Rabbuttz(あむ)/Amu, @Veer, @Modern, @Jae “awa” J4, @Zyro and others (sorry if I missed your name, I'm compiling this from the GitHub issues & discussion - make sure to submit anything there!)

New Features:

  • Implemented a new procedural animation system for animating avatar feet, hands and head when they are not tracked
    • This system simulates the end feet and hand positions as well as head offsets and finger poses
    • The system uses semi-physical simulation, reacting to user's movement in world
    • Multiple gaits are supported - animation parameters are interpolated depending on user's speed
    • The system supports self-collisions of hands with body
    • The system also supports feet colliding with the environment
    • When in full body, the system will only override feet when moving fast enough and when you're not horizontal - the horizontal angle can be configured in Settings under "Controls -> Full Body Tracking"
    • IMPORTANT: This system still needs a number of tweaking and fine tuning - which you can contribute to as well
  • Added LocomotionAnimationConfiguration (under Users/Common Avatar System/Animation)
    • This allows you to provide your own configuration for how the procedural animation looks by placing it on your avatar
    • If this component is absent, world's default configuration will be used instead
  • Added LocomotionAnimationFeetMetrics and LocomotionAnimationHandMetrics (under Users/Common Avatar System/Animation)
    • These allow overriding poses and distances of hands and feet on an avatar to make the animations better fit the avatar
    • It's useful if the avatar has less typical proportions - short/long arms or legs
  • Added LocomotionAnimationColliderBlock (under Users/Common Avatar System/Animation)
    • Add this to the top of the hierarchy of any colliders on your avatar that you don't want your avatar hands colliding with
    • You can also add this to the environment colliders, if you want the feet to ignore and not collide with them
  • Added LocomotionAnimationSuppressor (under Users/Common Avatar System/Animation)
    • Placing this on avatar and enabling SuppressFeetSimulation will stop the animation system from taking control over the feet, allowing systems like posers to work
    • IMPORTANT: Please note that generally we advise against hijaking systems you don't control for your own functionality - the way a system controls something can change, breaking your own systems that might depend on particular behavior or pattern of control! (see: https://wiki.resonite.com/Things_to_Avoid)
  • Added "Supress Feet Simulation" setting under Misc -> Legacy Feature Settings
    • Enabling this will supress the feet simulation, allowing systems like posers to take control
    • Note that this is only meant to be enabled when you want to use such systems - it will make the body animations look incorrect
  • Added AvatarUserViewHeadOverride
    • This automatically sets up and controls RenderTransformOverride to ensure that any head bobbing animations are not visible while in first person mode
  • Added FingerReferencePoseSource which provides a finger pose based on an in-world reference skeleton
    • This can be used as a basis to build custom finger posing systems, combined with the additional components below (based on requests by @Toni Kat, @Jack, @Stella, InconsolableCellist, @Furf, @Dogbold_system 🐧, issues #42, #935 and #1307)
    • To ease creating of poses, the inspector actions provide several methods to capture existing poses
    • You can capture a pose from a pose source
    • You can also capture your current left or right hand pose - this lets you make a pose with your controller or finger tracking solution
    • This will automatically create necessary skeleton for capture, which you can then modify
    • Note that the skeleton MUST use the coordinate conventions of Resonite's input system, you cannot use arbitrary skeleton
  • Added FingerPoseLerp
    • This will accept to finger poses sources as input and compute a new pose that's a blend between them
  • Added FingerPoseMultiplexer
    • This allows you to switch between multiple sources of finger poses
    • When switching to a different pose, the poses are briefly interpolated during transition
  • Added FingerPoseModifier
    • This accepts a finger pose as source and will offset the poses of individual fingers
    • You can offset the curl/splay of individual fingers on the hand
  • Added FingerSplayModifier
    • This accepts a finger pose source and will modify the global splay of the fingers
    • You can use this to essentially make the fingers more spread apart or closer together
  • Added FingerPosePreset
    • This provides common finger pose presets for easy development and testing
    • Currently Idle, Fist and Point presets are added. More can be added in the future
  • Improved Universe support for corporations and other organizations (implemented by @ProbablePrime)
    • Universes can have a primary group associated with them
    • Users within an universe are automatically added to the universe's primary group
    • Added UniverseStatus component, which allows accessing details of the current universe
    • Universes can now add their own overrides to locale
    • Universes can have their own default homes, dashes
    • Universes can have their own branding, enabling whitelabel support
  • Added global locale arguments that can be used in any locale string (based on locale work by @Toni Kat, PR #753 in Locale, implemented by @ProbablePrime)
    • Currently supported arguments are appName, supportUrl and moderationUrl
  • You can now hold X to align your vertical axis in desktop while in three axis locomotion mode (implemented by @ProbablePrime, requested by Spacerocket1)
  • Added "ZOOM FOV when sprinting" setting (requested by @terpyderp32, issue #2163, implemented by @ProbablePrime)
  • Automatically started sessions can now wait for user to login before they're started (implemented by @ProbablePrime)
    • Add "waitForLogin": true to the entry for the world
  • Added "Normalize" field action to vector fields
    • This will normalize the vector
  • Added support for inspector section headers to help readability for components with lots of properties
    • Note that only a few use this right now, we'll have to do a pass over components with lots of fields to help split them up
  • Added -FastCompatibility arguments
    • This speeds up startup when compatibility hashes are not computed for assemblies
    • This is only useful for development, because the build will not be compatible with any other build (even another instance of itself)

Locale:

  • Merged German locale update by @Muppeq
  • Merged Chinese locale update by modimobeikete
  • Merged Japanese locale update by @Aesc
  • Merged Spanish locale update by @Ruz🦌🦊
  • Merged Korean locale update by @MirPASEC
  • Merged French locale update by @Jae “awa” J4
  • Merged Ukrainian locale update by @Antonne
  • Merged Russian locale update by @Shadow Panther [RU/EN, UTC+1/+2]
  • Merged English locale fixes by @Delta and @Muppeq
  • Merged Thai locale update by @Naborisk

Tweaks:

  • Exiting Resonite while in universe (used for business / education) will now use blank void rather than local (implemeneted by @ProbablePrime)
  • When custom inspector UI builder throws an exception, it will be displayed in the generated UI if possible to indicate that something went wrong, rather than showing incomplete UI

Fixes:

  • Fixed new world dialog issues when LNL ports are restricted by config (fixed by @ProbablePrime)
  • Fixed Replace First Substring node not behaving correctly (reported by @mpmxyz, issue #2550, fixed by @Cyro)
  • Fixed loading indicator now showing the world name in some cases (reported by @Zyro, issue #2284, fixed by @ProbablePrime)
  • Ensure access level is provided to local/cloud home as soon as possible, to avoid it being briefly public (reported by @Dante, issue #448, fixed by @ProbablePrime)
  • Fixed Pow operation on quaternions sometimes returning NaN
  • Fixed VRIKAvatar using wrong side offset for left foot position
  • Fixed render overrides sometimes not overriding properly due to no render context switches
  • Fixed BipedRig wrongly indicating if right hand fingers were detected
  • Fixed floating point editor fields producing NaN values when the field is empty
  • Fixed finger pose streams missing pinky tip bodynode