Hi, Thanks guys! It was indeed a request() mismatch; It turns out I was accidentally trying to get() some channels (RGBA) without necessarily requesting these channels. Now my engine() will only get() channels that were requested, and the problem has been solved.
(More specifically: My _request() is unchanged, it requests only the channels that were passed to _request(). But now my engine() will get() only the channels that were passed to engine() - before, it was always trying to get() RGBA, and even though these 4 channels existed in the input image, it was not necessarily requesting them.) Cheers! -Derek On 7/22/2014 10:32 AM, Nathan Rusch wrote: This probably isn't very helpful, but in my experience, that kind of behavior (locked thread and no viewer updates) almost always indicates a mismatch between what's being requested from an input and what the plugin is actually trying to fetch. My guess is that the source of your problem is actually something in your _request method. You should only need to pass a mask of the channels you're actually planning to change to set_out_channels. -Nathan *From:* Derek Melmoth <[email protected]> *Sent:* Friday, July 18, 2014 4:12 PM *To:* [email protected] *Cc:* Grant Robertson <[email protected]> *Subject:* [Nuke-dev] Problem with non-stop re-rendering when viewing certainchannels Hi, My plugin is experiencing a problem where in certain cases it will keep rendering repeatedly without displaying the result on the screen - while rendering repeatedly, the upstream nodes flash yellow to indicate they are processing. In most cases the plugin functions correctly, but the problem can occur in special cases such as, for example, you view the alpha channel of a merge node that's downstream of my plugin. (I suspect I might not be handling channels correctly?) I don't know where the cause of the problem is, but I figure it's worth investigating the part of the plugin that I don't fully understand yet. I'm wondering exactly what does the "set_out_channels()" function do? Inside _validate() I am using "set_out_channels(DD::Image::Mask_All)", but I don't really understand what that does. Does it matter that "set_out_channels" is called after "copy_info()" rather than before? My _validate looks more or less like this: _validate(bool for_real){ for(unsigned int i = 0; i < INPUT_IMAGE_COUNT; ++i){ DD::Image::Iop::input(i)->validate(for_real); } DD::Image::Iop::copy_info(); set_out_channels(DD::Image::Mask_All); } My plugin takes 2 input images (both required), and to render a pixel it must request the entire row of pixels from both input images. It outputs all channels that are in the first input image, and reads only one channel from the second input image. I'm using Nuke7.0v6 in Windows 7 Any advice or ideas would be great! Thanks, -Derek ------------------------------ _______________________________________________ Nuke-dev mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev _______________________________________________ Nuke-dev mailing [email protected], http://forums.thefoundry.co.uk/http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
_______________________________________________ Nuke-dev mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
