Jump to content

Extending Built-in Rsl Functions


pberto

Recommended Posts

Hi there.

I am very new with Houdini, so apologize if the question is basic.

Are the RSL shading functions hardcoded in Houdini or can I extend them at my pleasure? If so, how?

For example, can I add the 'pointbased' argument to occlusion()?

And how can I add a new shading function? For example I do not see area().

Thanks,

Paolo

Link to comment
Share on other sites

Hi there.

I am very new with Houdini, so apologize if the question is basic.

Are the RSL shading functions hardcoded in Houdini or can I extend them at my pleasure? If so, how?

For example, can I add the 'pointbased' argument to occlusion()?

And how can I add a new shading function? For example I do not see area().

Thanks,

Paolo

Welcome Paolo,

This is a very common issue with VOP nodes, unfortunately; even of VEX itself let alone RSL. Many of the base functions can take more arguments or have different argument sets which are not included/supported by the current VOP set. Hopefully SESI will one day extend the VOP feature-set to include all possible comibinations and variadic arguments - a lot of people have asked for this - and I'm sure it'd only take a day or two to make a complete sweep of all the VEX and RendermanSL functions.

But! There is hope if you're willing to get your hands a little dirty.

There are two or three or four ways to extend it:

1) The easy way is to use an Inline Code VOP - this allows you to insert your own code into the tree whereever you desire.

2) The next easiest (and I do this ALL the time) is using the RMB node menu, Operator Type Manager, you can duplicate the VOP (in the Houdini distribution) of your choice which is most similar to the function you're trying to add or modify - since most of them are just stored in OTLs (as opposed to C++ nodes). In your local copy you can modify it to accept more arguments.

3) Write your own VOP node HDA completely from scratch.

4) Write a complete shader in the text editor of your choice.

See CustomOperators.

Link to comment
Share on other sites

Welcome Paolo,

Thanks Jason!

This is a very common issue with VOP nodes, unfortunately; even of VEX itself let alone RSL. Many of the base functions can take more arguments or have different argument sets which are not included/supported by the current VOP set. Hopefully SESI will one day extend the VOP feature-set to include all possible comibinations and variadic arguments - a lot of people have asked for this - and I'm sure it'd only take a day or two to make a complete sweep of all the VEX and RendermanSL functions.

But! There is hope if you're willing to get your hands a little dirty.

There are two or three or four ways to extend it:

1) The easy way is to use an Inline Code VOP - this allows you to insert your own code into the tree whereever you desire.

2) The next easiest (and I do this ALL the time) is using the RMB node menu, Operator Type Manager, you can duplicate the VOP (in the Houdini distribution) of your choice which is most similar to the function you're trying to add or modify - since most of them are just stored in OTLs (as opposed to C++ nodes). In your local copy you can modify it to accept more arguments.

3) Write your own VOP node HDA completely from scratch.

4) Write a complete shader in the text editor of your choice.

See CustomOperators.

Ok, looking into these solutions. Probably more questions will pop up (pop, not POP :) ).

Since I am at it... is it also possible to extend the GUI for the renderer of my choice in order to support all its features?

Example, I want to put some extra parameters for 3Delight. What is the workflow?

And a stupid question: what would be the equivalent of the Maya .mel Attribute Editors? .OTLs?

Tnx again,

Paolo

Link to comment
Share on other sites

Not a stupid question.

The OP's parameters is closest to the Attribute Editor. There you can add more parameters, copy and paste channels and expressions, oh the expressions. Here is one huge difference between Houdini and Maya. Expressions are channel based, not object based. What that means is that instead of the usual Maya workflow of putting all the expressions to control an object's channels in one string space each channel has its own expression space. I don't have a production based opinion on that method yet, but I think it could be a little cumbersome for new acolites.

Another difference is that in Maya most objets have a transform node automagically tied to the object in question. In Houdini the transform node is at the user's discretion.

One last tidbit. In my experience it is 10 times easier to build custom interfaces in Houdini than Maya.

Did that answer your question? Was I way off?

cheers,

Clear

:lol:

And a stupid question: what would be the equivalent of the Maya .mel Attribute Editors? .OTLs?

Tnx again,

Paolo

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...