Jump to content

Shading Workflow Question


peliosis

Recommended Posts

At what level do you apply shaders? OBJ or SOP?

Ofcourse it depends but I found applying shaders at SOP level quite disturbing and not as flexible.

It's hard to make a matte, phantom, hide, whatever since you are forced to separate pieces of geometry to different objs to do it.

It's also hard to change shaders because you have to dig in.

On the other hand it gives a nice and compact network without the need to separate each and every piece by hand.

In sesi tutorials they rather separate everything.

Also is there a possibility to group the objects sharing one material and if It's going to be changed, change it for the whole group instead of selecting them all.

These shader operations is my big drawback.

I feel a bit lost with the number of options and would like to know what is the most common scenario.

Link to comment
Share on other sites

hi, peliosis,

as to linking shaders beteen many objects, remember that you can reference also strings-line in tabs, not only numbers...

To apply many shaders for multipass, you can use takes or in old scenario, just copy your objects on OBJ level and aply different shaders. Then make different ROP for every pass and pipe in a script to switch visibility flags or just choose objects&lights bunch for them.

Actually I found that in case of more advanced miltipass/multishader setup, Houdini aproach is much, much easier to manage in then any other app. You just SEE your objects in different incarnation and you are not forced to dive in to deep settings.

old SESI video on rendering in passes is still aplicable though we have takes nowadays.

Link to comment
Share on other sites

Thanks for your explanation but still the sense of sop level shaders and passes is mysterious.

You make an object separate groups, apply shaders using shader sop only to break it apart for rendering different passes?

Impossible.

So there is a copy of original otl invisible for rendering and another copy broken up for rendering?

Link to comment
Share on other sites

I'd really like some reply because I have some workflow brickwalls on my way.

My model is a mid complex building, there are some "single shadered" objects with shaders applied in obj shading tab but there are some otls (windows) and other complex objs with multiple shaders applied at sop level.

Now if I want for example to make a matte for all glass objects or anything else to change their colour in post or just export them as a single one material obj I have to do a lot of tedious work to split all of my complex objects by material.

To make life easier I prepared every otl/multi shader obj so that it contains special named null sops at the end, for example a window can have final sops like: EX_win_glass_winname, EX_win_wood_winname, EX_win_alu_winname. Now I can cretae new obj and use obj_merge to easily import parts that share a shader from all scene.

While this setup works and after all is quite convenient it requires some work, constant attention, and extreme organisation from the groun up, just to render some extremely simple passes or export the model from houdini.

Please share your thoughts and if you find this technique weird tell me it's weird.

I'd really like to know about shading workflow that works for you.

Link to comment
Share on other sites

I tested it a bit. While perhaps it's not weird, it certainly takes more than a minute to obj_merge all "/obj/*/EX_*" so it would be hard to use on any more complex scene, my scene is around 30 objects and definitely not complex.

Still separating everything by hand seems like a killer.

I'm alone in this thread so perhaps these problems are not very popular. Could somebody shed some light on my cloudy monday morning though?

Link to comment
Share on other sites

maybe you should share some simpier version of your scene, because I don't get it.

When you model objects, you propably always name some groups if they are important part of your object. In another case you just apply texture for whole geometry, am i right? If you have 30 obj in scene all in different shaders it is complicted scene! Open two windows (SHOP list and SOP/shader in tree view with filtering enabled) and make your work done!

If you have many objects with the same shader, you can transert attributes from one "tamplete" objects to all other. Then, changing one shader obj, you will change all of them. (Attribute Copy SOP)

As mentioned you can copy objects as many times as many passes you have and prepare different ROPs with object mask, or prepere different takes.

On the other hand wouldn't be easier not to keep ALL object and passes in one hip file..?

cheers,

symek

Link to comment
Share on other sites

Hello SYmek,

Thanks for your help but from the beginning I'm talking about the case when one object consists of different parts with different shaders.

For example it's easier to model a window od staircase or doorset or something else inside a single obj node. Now each part of such obj has different shader applied using shader node.

Now when there are many of such otl's in the scene, and you'd like to create a separate pass for the glass, it's really a hardcore work to separate the glass from each and every obj containing it.

I wrote about my workflow a few posts above and would like to hear for some opinions on this special subject.

I know about the passes, tree view etc.

My problem is quite specific, please read the one with EX words above.

Thanks

Link to comment
Share on other sites

I think you have a point - but probably you find that if you have this problem then the workflow is more like this.

1. Model your object in one object - or whateverever - then write them out to disk.

2. In another hip file you do you rendering - read in all the bits you wrote out as seperate objects - add all the shaders at object level

3. To apply another pass make a new take and assign new shaders.

All glass objects can be put in a bundle to make selection and assignment quick.

Just my way of doing things. If you don't have to make lots of passes then no need to split everything into seperate objects.

Of course there are many ways to handle this and it's more a matter of preference which way you do it. I can think of probably at least 2 other ways plus the way you describe but at the end of the day setting all this stuff up takes time. It's hard to get away from that.

Link to comment
Share on other sites

Thanks Simon,

For a moment I thought I'm doing something wrong or missing a feature.

While mentioned setups have their advantages, they are really tedious to prepare.

When there are some objects it is very easy to loose track so you need absolute concentration and clarity to pack things up.

I'm more used to XSI where you can just throw everything in and put into partitions etc.

Here speed doesn't depend on fast mouse clicking as I just noticed:)

So to sum up it looks pointless to produce otls not divided by shader or not prepared to be divided. I just transformed every multi shader object so that it could work as a whole and is easy to split, but hell that requires some really clear naming convention.

Also objmerging can be deadly with heavy objects since it's recooked with every single mouseclick, when you lock you got memory eaten, when you render you free memory but still the object is no more alive.

It's not that I don't read tutorials, I do, and I use takes and groups and bundles, but never thought that setting up a single scene may introduce so much trouble.

According to what everybody here say about houdini, I'm sure that at the end of the day this tedious brainiac setup pays off and leaves you with a clear scene.

It really requires some work though, renaming alone took me an hour, and I had to add some -teen nodes to each object and set them up.

I'm not sure about it all but perhaps it's just because of the next level houdini frustration.

Sorry for a longy :P

Link to comment
Share on other sites

was this already mentioned?

at the sop level for an object make a SHOPnet and shader SOP

instide the shopnet make all your shaders for that object

hook them all into switches that have the save value pairs -->

switch = 0 --> diff pass

switch = 1 --> spec pass

etc

etc

then in the shader SOP, point your objects/groups to the /switches/

then you can create your render passes that have a pre-render script that turns all the switches to the correct shaders...

HTH

Link to comment
Share on other sites

At work we are mostly maya centric and I'm the sole loney houdini guy ;) We do have xsi artists as well. I think the xsi setup for renderpasses/partitions is ok for artists but for us TD's it can be a pain in the arse. When you need something above and beyond what the system is initially designed to do, it can get very difficult and annoying. Normally I have to write some sort of script or plugin to mimic what I can do in houdini very easily.

Now maya on the other hand has a really crappy renderpass management, IMHO. However we have maya R&D guys that wrote a very nice setup for pass management that very much reminds me of houdini takes.

Since I use houdini I'm setting up all my render passes via takes. Some folks say it's a bad idea but I never heard why. Well until I hit a problem, I'll probably continue to use takes for pass management. This setup works for us in maya without a hitch.

Shading workflow.

The thing about houdini is that you don't have just 1 option to do a task, you have as many options as you like! This is great when you are in a jam and need more options but also this can be overwheliming when you are working alone.

I honestly don't know what is the best way but my workflow changes on a project to project basis or sometimes a shot to shot basis. Before I start work, I sit and think on what I need to do for the shot, all the possible changes I can think of, how I'm going to send the images to the compositors, etc.

I should say for use that different compositors want different passes. On some jobs, we have compositors that want every possible pass (this is good IMO.) On some jobs, we have compositors that only what the very least of passes. Time restrictions are also a factor in what passes I output. Sometimes I just use deep rasters and do the pre-comp in halo although my patience is starting to wear thin with halo but that's another story.

In the most general sense, I try to apply shaders to my objects at the object level (/obj).

If there are some fancy schmancy texturing I need, then I wil apply shaders to my objects at the SOP level. One thing I do is if I'm shading in SOPs, I'll create a shopnet local to that SOP. It's more of an organizational tool for me really.

So to summarize, object shaders sit in /shop/

Local shaders sit in /path/to/sopnetwork/shopnet.

I have not gone the otl route for shading yet. Who knows, perhaps my next project will require that! Gotta love the options!

I think you just have to try all the different options to see what works best for you.

For renaming, I would go the script route. I prefer to script in python so I just hook into houdini via python (see odwki) and do all my automation there. I could be mistaken but if you want simple renaming like adding a prefix you should check out the Alt+w hotkey in the network editor. I think it's Alt+w but it's called "rename nodes" on the operator menu.

Sorry for running on....

/Rick

Link to comment
Share on other sites

I think the thing with Houdini is lit's real strength is in setting up a pipeline, this means it might take a bit long to set up and forces you to use naming conventions or whatever but once it is done you are all set to churn stuff out.

One answer for you might to be to get into the habit of writing shaders that can do passes into the deep raster as Rick mentions. That way you don't have to manage lots of groups and object names you just choose to create a deep raster with your glass matte or whatever in it. Then it doesn't matter where the shader is applied and what the object name is.

Aren't these xsi partitions just the same as groups and bundles?

Link to comment
Share on other sites

one thing which has came to me but I had never tried such approach:

I wonder if you can setup your shader (inside VOPs) that it could use some additional attributes in geometry to completely switch over many surface property as it be different shader. Then in geometry you create these attributes (as "glass", "walls" etc etc), and by applying one shader you have shaded whole complicated geometry. I wouldn't recommend it in a big production because as I can imagine it can easily drive to messy situation, but in case of one big object, with many shaders, this could work better then applying many shaders to groups in SOP... I'm not sure of that, just an idea... you know...

cheers,

SYmek

Link to comment
Share on other sites

one thing which has came to me but I had never tried such approach:

I wonder if you can setup your shader (inside VOPs) that it could use some additional attributes in geometry to completely switch over many surface property as it be different shader. Then in geometry you create these attributes (as "glass", "walls" etc etc), and by applying one shader you have shaded whole complicated geometry.

In my experience, uber shaders are ok, but leaving their control to bound attributes can quickly lead to very bloated scene files, and in large scenes this can quickly become a problem (keep in mind that *all* parameters are dumped for each instance in the ifd, plus any bound point/vertex/primitive parameters). Light-weight, dedicated shaders are usually a better idea... but not always, and it requires more work from the shader writer... so it all depends on what you're doing and what you can get away with I guess.

Link to comment
Share on other sites

Thank you very much for all the replies, black clouds are off my head now.

Perhaps when I'll finally learn scripting it will be of some help to organize objects, because when I read about setting up all the passes for each object in renderpass tutorial, I almost felt my operative fingertips burning ;)

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...