How do I get dsa script to run in every frame?
jhandy
Posts: 23
I am new to daz scripting.
Simple question.- I have DSA script that I would like to run in every frame.
What is the easiest way to do that besides clicking F5 and going to the next frame?
-J
Thanks in advance!
Comments
Do you mean you want to run the script in one go to do something with every frame, or do you mean you want the script to run each tiem you change a frame as you are interacting with the scene?
in one go in every frame
Scene gives you access to the information and functions you need - just get the number of frames from Scene.getPlayRange() and Scene.getTimeStep(), then use Scene.setFrame( frame ) to iterate through the frames doinf whatever it is you want to do at each.
hmm.. something like this
Scene.getPlayRange()
Scene.getTimeStep()
Scene.setFrame( frame ){
<<<my script >>>
}
Yes, though you will need to get the actual time interval from the play range and then divide by the TimeStep to get a frame count, then use a loop (for n = 0 ; n < maxFrames ; n++ ) { My Script } to do the iteration.
a little about
https://www.daz3d.com/forums/discussion/153936/change-default-amount-of-frames-on-timeline#latest
thank you, so what would that look like?
Thank you, but I still haven't gotten it to work. Can you show me how that might look like?
here is the script I am trying to iterate per every frame.
--
// DAZ Studio version 4.8.0.59 filetype DAZ Script
var oSkeleton = Scene.getSelectedNode( 0 );
if( oSkeleton.inherits( "DzBone" ) )
{
oSkeleton = oSkeleton.getSkeleton();
}
beginUndo();
oNode = oSkeleton.findNodeChild( "rThighBend", true );
oZRotCtrl = oNode.findPropertyByLabel( "Side-Side" );
nZRot = oZRotCtrl.getValue();
oZRotCtrl.setValue( nZRot + 6 );
oNode = oSkeleton.findNodeChild( "lThighBend", true );
oZRotCtrl = oNode.findPropertyByLabel( "Side-Side" );
nZRot = oZRotCtrl.getValue();
oZRotCtrl.setValue( nZRot - 6 );
oNode = oSkeleton.findNodeChild( "rShldrBend", true );
oZRotCtrl = oNode.findPropertyByLabel( "Bend" );
nZRot = oZRotCtrl.getValue();
oZRotCtrl.setValue( nZRot - 45 );
oNode = oSkeleton.findNodeChild( "lShldrBend", true );
oZRotCtrl = oNode.findPropertyByLabel( "Bend" );
nZRot = oZRotCtrl.getValue();
oZRotCtrl.setValue( nZRot + 45 );
acceptUndo( "G3F G8F pose adjust" );
--