Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(animation) : Animation fixes and improvements #170

Draft
wants to merge 154 commits into
base: main
Choose a base branch
from

Conversation

kaosat-dev
Copy link
Owner

@kaosat-dev kaosat-dev commented Mar 19, 2024

fixes #167
fixes #131
closes #37
closes #175
closes #177
fixes #178
fixes #180
fixes #145
closes #140
fixes #179
fixes #176
fixes #166
closes #152
fixes #186

 * added tests for orphan data
 * changed handling of animation data slightly
 * trying to figure out source of various issues
 * now trying to copy the animation to the "empty" placeholder using animation linking operator
 * now in gltf viewer we can see the two animations/actions, but still nothing in Bevy
…prints entities that have animations

 * allows to not be restricted by bevy's a bit weird logic for AnimationPlayers
 * updated crate & tooling
 * updated testing example with a bit more complex nesting cases for testing
…hies

 * now various forms of nesting with parenting (not within collections) should be handled correctly
 * restructured a large part of creating copies / duplicates
 * removed some obsolete code
 * related cleanups
  * fleshed out testing of hierarchy
  * added export of serialized hierarchy from the bevy side & comparing it with a reference
 one on the python side
  * various tweaks
 * auto_export now injecting the list of available animations into the "Animated" component
  for any object with animations
 * modified bevy side struct to match
 * sucessfull experiment with ways to animate world level objects, using
the same logic as the blueprint animations
 * made required changes
…nstance animations

 * renamed existing animation components with Blueprint prefix
 * added almost identical but seperate InstanceAnimations & InstanceAnimationPlayerLink
 * added additional component on the Bevy side + experimented with handling the data in the testing setup
 * added parsing of animation markers on the Blender side + injection of custom property/ component
 * rough around the edges, but the basics work !
 * renamed Animated component to AnimationInfos, fleshed it out with additional
frame informations etc
 * restructured & cleaned up Bevy & Blender code in those areas a bit
 * various related minor tweaks
 * moved triggering of frame marker events to the blueprints crate
 * added additional handling of frame markers for blueprint animations (yikes is this convoluted)
 * added additional animated blueprint for testing blueprint animation markers
…o get access to standard gltf exporter settings

 * got a basic working version that runs the standard exporter with some overrides,
deletes the temporary exported gltf file, extracts the scene level settings etc
 * convoluted as hell , but still better than the alternatives
 * added both gltf exporter button AND auto export button to side bar
 * added storage of gltf settings
 * auto_export now uses stored gltf settings
 * updated override strategies of defaults vs gltf settings
 * removed all gltf specific (not auto export) parameters from preferences
 * updated auto export operator params changed logic to use updated system
 * updated bevy integration test
 * ui improvements
 * various tweaks
 * now all centralized in the operator's did_export_settings_change() function
 * now works correctly ! ie only compares the parameters for auto & gltf
at the time of exporting ! ie it does not matter anymore how many parameters you changed, until you save/export
 * this solves a lot of randomness bugs in change detection
 * related & various cleanups
 * added workaround for backing up & restoring gltf export settings if there where any,
because it turns out in the glTF2_pre_export_callback, they already get created !
 * added workaround for deleting the temporary gltf file, aka it needs an additional timer, because
the post export callback fires too early !
 * added workaround to deal with the fact that operator uis have global state !!
aka make sure the settings used when calling the gltf exporter do not "contaminate" the normal exporter
 * it all works, but sigh ...
 * rewrote & cleaned up material handling, seems to work well !
 * attempts at unifying parsing of geometry/shader node parsing seems to lead to geometry node parameter changes not being dected
  * wip
…geonodes

 * manual tests are coherent, and allow for very fine grained changed detection, yeah !!
 * overhauled generic_fields_hasher_evolved a bit
 * fixed/ resolved issues with parameters handling for materials vs modifiers
 * related minor tweaks & fixes
 * node trees are now using the same logic as other types
 * cleaned up & restructured code accordingly
 * added more failure handling for project serialization & diffing
 * experimenting with ways to deal with scene renaming
 * minor tweaks
…ssets" tab)

 * added basic logic, ui, level selector operator etc
 * fixed issues with asset dialog
 * added experimental "always_export" flags for collections & scenes to enable always
exporting on save for select blueprints & levels (no logic yet, just UI)
 * various tweaks & minor experiments
 * fixed broken removal of assets
 * added visual indication of prevention of adding the same asset twice
 * removed "asset type" selection, useless
 * improved & streamlined UI
 * related tweaks
 * fixes & experiment to auto export
 * added support for "always export" functionality for blueprints & levels
 * fixed issues with asset management
 * fixed issues with tracker
 * more ui improvements (display of the number of assets etc)
 * a lot more minor tweaks
 * quick superficial hooking up of data
 * more ui improvements & tweaks
 * various minor related experiments
 * main/library/nothing is now an enumProperty on scenes themselves
 * main/library scene listing is a dynamic property of the Blenvy core class instead of CollectionProperties
 * this means that removing / renaming scenes using the normal blender workflow automatically changes things for Blenvy as well !
 * overhauled & simplified main/library scenes ui accordingly
 * same for all the code that needed access to the main/library scenes
 * added main/library scene NAMES computed property for convenience
…ed scenes/gltf files

 * added extraction of local/all (wip) assets into auto export
 * added injection of LocalAssets & AllAssets (unsure)
 * related tweaks & experiments
 * also cleaned up asset ui for external assets
 * started updating the bevy integration tests
 * also started moving code to a new "assets" mod in preparartion for bigger changes
 * added injection of assets lists to blueprints at export time
 * assets & co related tweaks & experiments
 * tweaks on the bevy side
 * all wip !
 * removed/ obsoleted blueprintsList
 * now using AllAssets (meh naming)
 * modified example & internals to enable loading levels as Blueprints as well
 * internals quite messy for now, needs a big cleanup still
 * disabled materials library for now, needs to be overhauled to make use of asset logic as well
 * added more mock assets for testing
 * related changes to blender & bevy side
 * split out materials scan from injection of materialInfo into objects
 * added material Asset injection into list of assets at scene level
 * related tweaks & cleanups
 * continued overhaul on the bevy side
…lutter

 * removed format, materials library path, & library path from blueprints, obsoleted through "blueprints_path"
 * related cleanups
 * added back materials library support but using the assets path
 * added some material helpers (wip)
 * copied over old docs & images from old add-ons
 * removed old blender add-ons, there is now only Blenvy !
 * updated most of the main docs accordingly
 * updated project name in main README
 * etc
 * related tweaks
 * removed obsolete / overly complex pieces of UI
 * complete rework of component selections: much nicer, searchable, simpler ui
 * main component selector & per "error" component selectors , as well as bulk replace
ones are now all independant
 * overhauled a lot of helpers to work with both objects & collections
 * reworked ui ordering for upgrade/ rename
 * more clearer status display for invalid components
 * etc etc
 * all operators, panels etc are now respecting the Blender naming convention
 * tweaks & improvements to some of the component operators
 * clearer naming for the "advanced" tools for components
 * now works correctly for both single, bulk, on objects & collections
 * related fixes , tweaks & UI improvements
…onents

 * fixed broken registry reload
 * fixed incorect handling of the "invalid" flag when reloading the registry should fix that
 * fixed unreliable generate_propGroup_name : now uses tiger-hash to generate hashes of nested paths + long names
  this ensures that even if there are additions & removals to the registry, it does not break existing components !
 * fixed & overhauled list & map components ui handling for objects + collections/blueprints
 * merged the various list component ui operators into a single one
 * removed obsolete code in registry & components
 * improved handling of invalid components in the UI: now they are not displayed ! much cleaner & simpler
 * overall cleanup to components
 * lots of minor tweaks & co
…handled

 * to fix issues with hash collisions because of incomplete & incorect "component paths"
(ie the different nesting levels of the structs within components)
 * removed short name nested component path passing
 * changed the way the composite paths are created & the hash is generated
 * a lot of other related changes
 * also changed the registry's default path, to use the blenvy level assets path
 * now correctly using nested long names + attribute name for structs
 * so no more hashing collisions for all test cases !
 * restructured internals of property group generation & registration
 * dynamically generated property group classes are now unregistered correctly
 * lots of minor related tweaks & improvements
 * tweaked & changed code where relevant
 * also added support for the new gltf_xxx_extras in bevy_gltf_components
 * animation support needs an overhaul given the extensive changes in v0.14 (wip)
 * still a giant mess, but works
 * examples not yet updated, will get overhauled
 * testing project is now independant from the "common" example code: ie no debug ui, no physics,
no bevy_asset_loader
 * testing project WORKS , even without any of the above, so asset loading (even if rough), is functional !
 * added VERY rough hierarchy/ components debug to testing project to visualize things
without bevy_editor_pls egui & co
 * related tweaks & changes
…grade

 * aka we have scene_gltf_extras, no more need for cumbersome xxx_components objects !
 * still wip
 * includes components, registry export & blueprints
 * overhauled settings / config to match the new structure
 * keeping the different sub plugins for now
 * cleaned up some of the internals of the blueprints code
 * related tweaks & cleanups
 * added events to blueprints : for when assets have been loaded & when a blueprint has been spawned (wip)
 * various experiments with blueprints
 * updated testing to make use of new crate & logic
 * moved multiple blendfiles example to be the main "demo"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment