Certainly Nuke has lots of plugins that do this sort of thing. It sounds like your _request() function should be adding in Zdepth even if the channels passed to it was RGBA.
On Wed, 22 Jun 2011 17:21:22 -0400 (EDT), Kent Martin <[email protected]> wrote: > Greetings Abigail and The Foundry, > > I have just read this thread, and it is of high interest to me. > I may have sent an e-mail several months ago dealing with a similar issue, > but got pulled away from Nuke for quite some time. > > I am particularly interested in the comment about Nuke skipping the calls > the _request and engine if the requested channels are entirely disjoint > with the out_channels. (I actually found reference to this somewhere in the > documentation, mentioning something about the intersection of in_channels > and out_channels) > > I have been developing a node whose input contains only a Zdepth channel, > but whose output is RGBA. Yes, the node functions but not very nicely > within the Nuke interface. The node will only update when the viewer input > is changed to Zdepth (which must trigger a proper "read") and back to RGBA > ( so that I can see the desired output ). This makes the node, well, > useless to an artist and leads to the following question : > > What is the proper method for dealing with this situation ? > It is desired that the node update when knob values or time is changed > without having to fiddle with the viewer settings. > > A "workaround" that has been implemented has the node reading "alpha" > instead of "zdepth". > A shuffle node follows the input image, shuffling depth to alpha, and a > remove node then removes the depth channel. > > Ideally I would be able to read zdepth and output rgba. > Setting the out_channels to rgbaz still requires the viewer to be set to > zdepth, and back to rgba for proper update. > > Suggestions or guidance on more efficient and effective ways to accomplish > conversion of depth to rgba will be greatly appreciated. > > > Thanks, > > Kent Martin > Production Engineer > Blue Sky Studios > > ----- Original Message ----- > From: "Abigail Brady" <[email protected]> > To: "Nuke plug-in development discussion" > <[email protected]> > Sent: Wednesday, June 8, 2011 12:41:11 PM > Subject: Re: [Nuke-dev] Understanding requested channels... > > More or less, although doing a separate Row/get for each passthrough > channel > would be inefficient - just add those to a channelset, and get them at the > end, > with only the copy in a foreach. > > On Wed, 8 Jun 2011 12:18:36 -0400, Colin Doncaster > <[email protected]> wrote: >> Thanks Abigail, >> >> So - if I understand correctly in engine I have to do >> >> foreach(z, channels) >> { >> if (userDesiredChannels.contains( z )) >> { >> // the plugin does it's thing >> } else { >> Row source( x, r ); >> source.get(input0(), y, x, r, z ); >> row.copy(z, source, z, x, r); >> } >> } >> >> where channels and row is the parameters of engine? >> >> >> >> -- >> Colin Doncaster >> Peregrine Labs >> www.peregrinelabs.com >> >> On 2011-06-08, at 11:33 AM, Abigail Brady wrote: >> >>> You need to pass through the extra channels in _request and engine. >>> Nuke will skip calling your _request and engine() in some limited >>> circumstances, >>> like if the requested channels are entirely disjoint with the >>> out_channels(), >>> but for example, in the case where it's asking for RGBA + creatureRGBA, >>> you need to fill in both of them, it won't take your RGBA and then copy >>> in creatureRGBA itself. (If it were to start doing that, it would mask >>> out the channels you don't need to fill in when it calls >>> _request/engine). >>> >>> On Wed, 8 Jun 2011 10:11:16 -0400, Colin Doncaster >>> <[email protected]> wrote: >>>> Hi there - >>>> >>>> I have an op that lets the user specify what channels should be >>> affected, >>>> let's say RGBA. When _validate is called I set_out_channels to the >>> desired >>>> channels and in request I input().request the desired channels. I >>> assume >>>> thus far this is correct? >>>> >>>> What happens when a user has an input image that contains a >>> channel/layer >>>> that hasn't been requested by my node? For example, the input image > has >>>> creatureMatte.r/b/g and I haven't requested them and/or included them > in >>> my >>>> output channels - does nuke just copy them to the output for me, > should >>> the >>>> user expect to those channels to be maintained through the processing > of >>> my >>>> op or do I need to actually use Mask_All on validate and just pass >>> through >>>> the data in engine if that data is to be retained? >>>> >>>> If I don't retain it and the user is looking at that channel, what >>> happens? >>>> >>>> Cheers >>>> >>>> -- >>>> Colin Doncaster >>>> Peregrine Labs >>>> www.peregrinelabs.com >>> >>> -- >>> Abigail Brady, Senior Architect >>> The Foundry, 48 Leicester Square, London WC2H 7TW, UK >>> Tel: +44 (0)20 7434 0449 * Fax: +44 (0)20 7434 1550 >>> Web: www.thefoundry.co.uk >>> >>> The Foundry Visionmongers Ltd >>> Registered in England and Wales No: 4642027 >>> _______________________________________________ >>> Nuke-dev mailing list >>> [email protected], http://forums.thefoundry.co.uk/ >>> http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev -- Abigail Brady, Senior Architect The Foundry, 48 Leicester Square, London WC2H 7TW, UK Tel: +44 (0)20 7434 0449 * Fax: +44 (0)20 7434 1550 Web: www.thefoundry.co.uk The Foundry Visionmongers Ltd Registered in England and Wales No: 4642027 _______________________________________________ Nuke-dev mailing list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
