Generated Nodes Ignore Saved Visibility Keys After Scene Reload DS 4.24.0.4

umblefuglyumblefugly Posts: 74

I’m writing a DAZ Studio C++ plugin that generates shard nodes for a fracture simulation. Each shard should be hidden at frame 0 and become visible at its fracture frame.

In C++, I set the shard node’s VisibleVisible in Viewport, and Visible in Render bool properties to animatable with setCanAnimate(true), clear keys, set default/current value to false, then key them false at frame 0 and just before fracture, and true at the fracture frame.

The saved .duf appears to contain the correct data: the shard node library channels have value=false and current_value=false, and the scene animation section has Visible=false at time 0, then Visible=true at the fracture time.

But after saving and reopening the scene, some/all generated shards appear visible at frame 0.

Is there another DAZ SDK step required to make generated node visibility animation evaluate correctly after scene load? For example, do I need to use a specific visibility property, call a scene/time refresh method, set presentation/channel metadata, avoid setVisible(), or save visibility through a different channel/controller?

 

// For each generated shard node:DzBoolProperty* vis = qobject_cast<DzBoolProperty*>( node->getVisibilityControl() );if ( !vis )    vis = qobject_cast<DzBoolProperty*>( node->findPropertyByLabel( "Visible" ) );DzBoolProperty* viewportVis =    qobject_cast<DzBoolProperty*>( node->findPropertyByLabel( "Visible in Viewport" ) );DzBoolProperty* renderVis = node->getRenderVisibilityControl();if ( !renderVis )    renderVis = qobject_cast<DzBoolProperty*>( node->findPropertyByLabel( "Visible in Render" ) );auto prep = []( DzBoolProperty* p, bool defaultValue ) {    if ( !p ) return;    p->setCanAnimate( true );    p->deleteAllKeys();    p->setDefaultBoolValue( defaultValue );    p->setBoolValue( defaultValue );};auto key = []( DzBoolProperty* p, DzTime t, bool value ) {    if ( !p ) return;    p->setCanAnimate( true );    p->setBoolValue( t, value );};// Shards are hidden before fracture, visible at fracture.prep( vis, false );prep( viewportVis, false );prep( renderVis, false );key( vis, startTick, false );key( vis, fractureTick - 1, false );key( vis, fractureTick, true );key( vis, endTick, true );key( viewportVis, startTick, false );key( viewportVis, fractureTick - 1, false );key( viewportVis, fractureTick, true );key( viewportVis, endTick, true );key( renderVis, startTick, false );key( renderVis, fractureTick - 1, false );key( renderVis, fractureTick, true );key( renderVis, endTick, true );node->setVisible( false );node->setVisibleInRender( false );


Anyone at all?? Is this going to be an issue in DS 2026?

Post edited by umblefugly on
Sign In or Register to comment.