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

Reply via email to