Well unfortunately I didn't help author that particular section of Nuke so I struggle along with everyone else. :(
Actually his problem does sound much like mine - regardless of whether he's using knob as an output or not the knob may be storing the modified value into the Op but the act of changing the knob does not dirty the dependencies properly, causing the one-change-out-of-date behavior. In Konstantin's case the Viewer would be a dependency. And in Konstantin's case asapUpdate() should solve his problem as it should force the Viewer to reload. asapUpdate() does solve this problem in some of my plugins that set values in _validate() (except in the plugin I described before,) but I went back and looked at a few other plugins and some only call Knob::changed() so you're right about that. Haven't tested those plugins with expression linkages to see if they suffer the same problem though. -jonathan On May 2, 2011, at 3:36 PM, Ivan Busquets wrote: > Well, if you don't have a solution for it, then there is no hope! :) > > However, unless I misunderstood Konstantin's problem, his case shouldn't be > the same as the "output knob" scenario you're talking about, right? He said > he can't see the update in the viewer, so I assume his knob/value is not just > there to store a value for other Ops to reference, but is actually needed to > draw the image? > > Actually, after reading the original post again, it looks like this is for an > Axis/Camera subclass. I assume Konstantin is setting the value of a knob that > affects the Op's matrix. Is it possible that matrix_ is calculated using the > current knob values "before" he calls set_value() in validate? I'm not sure > at what point an AxisOp builds its own matrix_ and local_, but I suppose it's > in _validate of the base class, right? > If all the above is correct, would it help to call AxisOp::validate() after > the knob values have been set? > > > > On Mon, May 2, 2011 at 12:52 PM, Jonathan Egstad <jegs...@earthlink.net> > wrote: > Unfortunately that rarely works. I'm currently fighting this problem right > now. I have a knob that's always an 'output' knob (in that it's sole purpose > is to store a value that's calculated dynamically) and although the Op itself > appears to refresh correctly when the knob has its value changed, *other* ops > that reference the output knob via expression are always one change out of > date and I've yet to come up with a solution. asapUpdate() doesn't appear to > help here. > > My understanding is that Knob::EARLY_STORE is not required in this case. The > knobs contributing to the calculation done in _validate() that is fed into > the output knob are early stored, but is not necessary for the output knob > itself. In fact if I append the value of the output knob variable to the Op > hash in Op::append() I end up with a recursive loop even though the value of > the variable is not changing. > > This seems to work in other cases but I'm stumped as to why it's not working > in this case. The output knob is a Float_knob. > > > -jonathan > > On May 2, 2011, at 10:56 AM, Ivan Busquets wrote: > >> I don't think you should need to, but just in case... have you tried >> explicitly calling knob("my_knob")->changed() after setting its value? >> >> >> >> On Mon, May 2, 2011 at 10:29 AM, Konstantin Hristozov <konst...@d2.com> >> wrote: >> Yeah, not there. >> >> >> Cheers, >> >> // konstantin hristozov >> // digital domain >> >> >> On 04/29/2011 03:35 PM, Jonathan Egstad wrote: >> Do you mean 'Node::validated_op()'...? >> That's not accessible from DDImage so plugin writers can't call it... >> >> -jonathan >> >> On Apr 28, 2011, at 7:01 AM, Wouter Klouwen wrote: >> >> Call validated_op() on the node. >> >> HTH >> >> On 28/04/2011 00:11, Konstantin Hristozov wrote: >> Anyone have a clue about this? >> >> Cheers, >> >> // konstantin hristozov >> // digital domain >> >> >> On 04/08/2011 10:44 AM, Konstantin Hristozov wrote: >> Hey guys, >> >> I'm setting the value of a knob inside _validate like this: >> >> knob("my_knob")->set_value(10); >> >> But in the viewer it doesn't update right away. >> When I go to the next frame, then I see the value of the previous frame. >> >> How can I force the update of the knob? >> >> This is for a Axis/Camera subclass. >> >> Thanks, >> >> _______________________________________________ >> Nuke-dev mailing list >> Nuke-dev@support.thefoundry.co.uk >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >> >> -- >> Wouter Klouwen, Software Engineer >> The Foundry, 6th Floor, The Communications Building, >> 48 Leicester Square, London, WC2H 7LT, UK >> T: +442079686828 - F: +442074341550 - thefoundry.co.uk >> The Foundry Visionmongers Ltd - Reg.d in England and Wales No: 4642027 >> _______________________________________________ >> Nuke-dev mailing list >> Nuke-dev@support.thefoundry.co.uk >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >> _______________________________________________ >> Nuke-dev mailing list >> Nuke-dev@support.thefoundry.co.uk >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >> >> _______________________________________________ >> Nuke-dev mailing list >> Nuke-dev@support.thefoundry.co.uk >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev >> >> _______________________________________________ >> Nuke-dev mailing list >> Nuke-dev@support.thefoundry.co.uk >> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev > > > _______________________________________________ > Nuke-dev mailing list > Nuke-dev@support.thefoundry.co.uk > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev > > > _______________________________________________ > Nuke-dev mailing list > Nuke-dev@support.thefoundry.co.uk > http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
_______________________________________________ Nuke-dev mailing list Nuke-dev@support.thefoundry.co.uk http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev