Try not using the NukeWrapper ctor in your build() method as it likely blocks access to the Op’s virtual deep methods. Just do ‘return new TestRender(node)’.
-jonathan On Apr 22, 2014, at 12:31 AM, Esteban Tovagliari <[email protected]> wrote: > Hi all, > > For a project I'm working on, I'm experimenting with making a custom render > with deep output, > similar the the ScanLine renderer. > > Unfortunately, Nuke 7 does not recognize my Render subclass as a DeepOp. I > cannot connect > the output of my render node to any other deep node. > > I was looking for any example that implemented both the Iop and DeepOp > interfaces, > but I couldn't find any. > > Is there anything I'm missing? > > Thank you! > > Esteban. > > Here's my code so far: > > ----------------------------------------------- > > #include<iostream> > > #include<DDImage/Render.h> > #include<DDImage/DeepOp.h> > #include<DDImage/NukeWrapper.h> > > using namespace DD::Image; > > class TestRender : public Render, public DeepOp > { > public: > > static const Iop::Description description; > > static Iop *build( Node *node) > { > return new NukeWrapper( new TestRender( node)); > } > > static const char *HELP; > > const char *Class() const { return description.name;} > > const char *node_help() const { return HELP;} > > int minimum_inputs() const { return 3;} > int maximum_inputs() const { return 3;} > > const char *input_label( int input, char *buffer) const > { > switch( input) > { > case 0: > case 1: > case 2: > return "input"; > } > > return 0; > } > > bool test_input( int index, Op *op) const > { > return true; > } > > virtual Op *op() { return this;} > > virtual GeoOp *render_geo( int sample) { return 0;} > > protected: > > // Common interface > > virtual void _open() > { > std::cout << "_open called" << std::endl; > } > > virtual void _validate( bool for_real) > { > std::cout << "_validate called" << std::endl; > > info_.set( format()); > info_.channels( Mask_RGBA); > > _deepInfo = DeepInfo( info_); > } > > virtual void _close() > { > std::cout << "_close called" << std::endl; > } > > // Iop interface > > virtual void _request( int x, int y, int r, int t, ChannelMask mask, int > count) > { > std::cout << "_request called" << std::endl; > } > > virtual void engine( int y, int x, int r, ChannelMask mask, Row& row) > { > std::cout << "_engine called" << std::endl; > } > > // DeepOp interface > > virtual bool doDeepEngine( Box box, const ChannelSet& channels, > DeepOutputPlane& plane) > { > std::cout << "doDeepEngine called" << std::endl; > return true; > } > > virtual void getDeepRequests( Box box, > const ChannelSet& channels, > int count, > std::vector<RequestData> &reqData) > { > std::cout << "getDeepRequests called" << std::endl; > } > > private: > > TestRender( Node *node) : BaseClassType( node) {} > }; > > const char *TestRender::HELP = "No help yet"; > > const Iop::Description TestRender::description > ( > "TestRender", > "Tests/TestRender", > TestRender::build > ); > > -------------------------------------------------------------------- > > _______________________________________________ > 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 list [email protected], http://forums.thefoundry.co.uk/ http://support.thefoundry.co.uk/cgi-bin/mailman/listinfo/nuke-dev
