-
Notifications
You must be signed in to change notification settings - Fork 12
Load Alembic cache and manage as datablock #57
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
base: develop
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I tested with some files sent by Libor
It works, only thing which is not working is the switch function but I dont think we need to have that for the load alembic cache.
I believe we can remove the load_cache and load_camera_abc and simply use this loader to load camera and cache?
https://github.com/user-attachments/assets/58ef022c-6f4b-499c-adf3-3734d6a0d021
I'll need to test that switching. Did it actually error? or just fail to show any changes to the scene? I suspect the "old" objects stop moving? (because their object paths are not found in the new alembic, likely objects are named differently in the other file?) And the new geometry does not get loaded? If so, then yes - new geometry does not get 'created' currently on update or switch. It should be doable, I'm just not sure how trivial and sensible it would be. As in, I'm not sure if it'd be 100% reliable and if sometimes it'd then start creating objects that maybe the user deleted on purpose. :D |
It doesn't error and it does switch but the object in the scene does not get correctly updated. And it is supposed to be working for that switch function since the update function of the filepath works as expected.
|
|
I have tested Also my finding is that every node within Alembic gets Once overriden by turning the influence to zero, it holds the transforms user edit even when performing |
Thanks - yes. I actually wanted to do potentially do a few more things:
|
|
I got your points...sounds reasonable! One note tho: we are facing opposite issue with super long names which got unneccessary loong once asset got loaded - something which should be taken care of - this been issue mostly when going for nested scenes as the names got clipped off. So aiming for short and clear naming been the top priority speaking of blender integration... I will give some more info/ example of those issue connected asap. Also unnecessary grouping (via locators/ empties) occurs a lot making lot of cluttering in the outliner... |
Both valid points - then I'd be happy to keep it as barebones as is if there is no actual need in production for more uniqueness? |
|
Even tho its a bit off topic I will share it here...u can blame me later for sure :D For e.g creating its quite long as it uses This start to be an issue when loading such asset into So imho just optimizing it a bit could help a lot as this can be quite painful to navigate in. just small update note: it should get better with recently merged PR dealing with stripping |
|
@BigRoy any update on this sponsored PR? |
|
@BigRoy anything to say regarding this PR...is it still valid or no? Will we migrate to this or not? Im really not sure whats going on with this one....and is a bit stale. |
Extremely low prio for the client -hence... no time to spend on it really.
I think it has more merit as a means of managing what's loaded than how we're currently dealing with loading Alembics - but seems there's too little interest to have things changed around by clients - as such, it remains at low prio and no time to spend on it. Maybe @philippe-ynput can evaluate this workflow over the current Load Alembic logic in |
I am only concerned with switching function from alembic camera and alembic assets, but it is just a minor thing. Otherwise, it looks good for me. |
|
Non-critical, but: Just want to remark that this way of loading may face the issue that "Edge/Vertex Creases" are NOT loaded by the MeshSequenceReader on the objects in the scene, see Blender issue: https://projects.blender.org/blender/blender/issues/141633 However, there is a pending PR in Blender that does work to fix that https://projects.blender.org/blender/blender/pulls/141646 so it may solve it in future versions. |
|
@BigRoy ...sorry but I have merged latest develop into this branch due to outdated 'AVALON' container used in this branch but probably broke it by that... as I was not able to load any now giving me issue when trying set version via Manage> Some good news tho: I have tested anyway despite that error and it proved to be working for all occasions:
All seems good to me. |
|
@BigRoy one more question do we unify these entries in the Loader once merged? as Im not sure atm as there are multiple ABC loaders next to each:
|
…enhancement/load_cache_as_datablock
…com/BigRoy/ayon-blender into enhancement/load_cache_as_datablock
Not entirely sure yet - there could be reasons for both - e.g. |
I agree, i dont have any issue for this one. I am good to go, maybe ask @philippe-ynput |
|
Note: we should end up with single load action e.g. |
|
@moonyuet so can we wrap it up or ? its hanging here for serious time and its working, right? I dont know whats the blocker here. |
|
@BigRoy how about that, sir? |







Changelog Description
Load an Alembic and manage the datablock instead of containerizing the root object.
Additional info
This simplifies the loading logic a lot since we do not need to take care of the hierarchy of the objects and keep track of which are children, etc.
Also, on load I enable that it ALWAYS add a cache reader using
always_add_cache_reader=True. This may be less performant (so beware) but it massively simplifies code and improves reliability to what the user may expect when "updating" the cache. It means that even if object transforms of mesh vertex caches didn't animate at first, but do animate (or have moved) in the updated alembic they actually follow along. This also fixes that on update non-animated objects will get their transforms updated if they (even though static) have moved between the alembic versions.This PR is solely to test the concept - and discuss good things about this; and of course I'm looking forward to all the issues one may have with this. So, feedback is welcome!
Thanks to Pete Addington from The Line for derailing me to start fiddling with this.
Testing notes:
Load Cache Dataloader for Alembics.Resolves #60