This Week in Fyrox #6
Fyrox is a Rust game engine with lots of out-of-box game-ready features and a full-featured editor. The engine now supports animation layers in animation blending state machines, it is also possible to add signals to an animation from the editor.
# Animation
Animation blending state machine now support multiple layers. What does that mean? On the gif above you can see the example of a machine with two layers: one for upper body and one for lower body. Each layer is has its own state machine inside and all layers blends into a final animation which is then applied to a model. Such layering allows you to animate parts of models independently. For example lower layer can contain running and idling animations, upper layer in its turn contains animations for aiming, running, idling. In such configuration you can get any combination of animations: running while aiming, idling while aiming, etc. This is how the animation works in most of modern games.
To animate only specific nodes (bones in most cases), all you need to do is to specify layer mask. Layer mask is simply a hash set that allows the engine to quickly understand whether or not it is needed to animate a node. Layer mask contains handles of nodes that won't be animated, it is just a sort of black-list. To fill a layer mask, you need to click on "sink" icon and select all the nodes that needs to be excluded from the layer.
Ability to add signals to animations is another important feature. A signal is just a "tag" with some time position on the timeline. When playback time steps over a signal, it emits an event with the id of the signal. After that you can process all the signals in your code and do some specific action. For example you can create signals for footsteps sound in a walking animation, or create signals on which you'll apply damage to an enemy in some melee animation.
There's also some quality-of-life improvements - models imported from FBX files will not have Animation Player
node
if there's no actual animation in an FBX file.
# Other
DropDownList
widget now correctly updates preview for selected item when changing its items. Previously you'd have
old preview for new items.
It is now possible to serialize HashSet
using standard engine's serializer.
# Full List of Changes in Random Order
- Remove link with external resources for animations
- Reworked animation signals - replaced numeric ids with UUIDs, added name, more management methods
- Ability to add animation signals on the time ruler in the animation editor
- Ability to drag and remove animation signals
- Do not create animation player when importing FBX without any key frames.
- Update selected item of drop down list when changing its items.
- Ability to enable/disable animation tracks in the animation editor.
- Enable/disable
OK
button in the node selector widget if selection is valid or not. - Removed unused
AnimationMachineContainer
- Refactored animation blending state machine to support multiple animation layers.
- Layer masks - allows you to enable or disable animation for a set of nodes.
- Implemented
Visit
trait forHashSet
# Support
If you want to support the development of the project, click one of the links below. Preferable way is to use Boosty (opens new window) - this way the money will be available for the development immediately. Alternatively you can can use Patreon (opens new window), but in this case the money will be on-hold for unknown period of time (details are here (opens new window)).
Also, you can help by fixing one of the "good first issues" (opens new window), adding a desired feature to the engine, or making a contribution to the book (opens new window)