View Full Version : Maya "Contribution maps" equivalent in Softimage?

07 July 2011, 05:05 PM

iam a maya guy, sort of slowly trying to switch/learn softimage, mainly the parts that would allow me to somewhat fully and comfortably replicate my current maya workflows in SI and then continue learning further from there.
Where im stuck for now tho, is doing something what we call "contribution maps" in maya (mental ray), so im looking for some basic solid info on if/how this workflow can be done in SI or at least the relevant terminology that is used within SI so i can look for more info myself.

Closer description of how maya contribution maps work:
Contribution maps allow me to have just one render layer (=render partition in SI i think) with all the objects in it but still allow me to assign each object a "contribution map" for rendering to which i can then individually assign various "render passes" (=framebuffers in SI? (diffuse, specular etc.). So that way i can then render the whole scene just once and still have the render separated into images of diffuse,spec etc for EACH of the selected objects and with just the individual object visible in them.

So for example lets say i have scene with 10 objects, all in the same render layer(=partition?), partially occluding each other and casting shadows on each other, each obj has its own contribution map with 3 render passes assigned (diffuse, spec, refl.) . When i batch render that setup, the scene gets rendered just once, takes the same time as rendering just one masterrender image but i get an output of 3 files for each object (diff,spec,refl) with just that object visible in the image, rest being black. The object is also taking into account if its being occluded by others, in that case its black in those places as well (this can be toggled). So then i can comp those 3 passes to rebuild each object and all 10 obj together get me the final masterbeauty result look (which gets rendered in the process too)

For me this is incredibly fast to set up and it basically removes any need for fg/bg masking in post for complex animations or the need for additional render layers and material overrides to make things black etc just to separate various objects and create custom passes.

Thanks for any kind of info or relevant terminology tips that are used within xsi

07 July 2011, 06:20 PM
I believe you talking about render channels (custom channels in help)?

07 July 2011, 10:19 AM
have a look at "Store_Color_In_Channel" node and relative help that points to Working with Custom Channels as Piotrekm said

07 July 2011, 11:25 AM

thanks for replies, i got more into the xsi rendering terminology and will use it in this reply, but im not sure if what you suggest is what i was looking for (or hoping for), speed wise at least.

Storing colors in custom channels would require me to go in render tree and set it up for each object's material to have separate channel for each of ambient / diffuse / spec etc and also opacity channels for each obj as they often use alpha transparency textures and also if two objects use the same material, i would have to duplicate the mat for each to separate them too. Also i noticed theres no default setup materialColor channel (flat diffuse color without lighting) and no shadow channel. Xsi cant simply separate those from the beauty channel at rendertime? Do i seriously need to setup custom color channels or even whole extra PASSES and override materials and turn lights on off just to do a basic flatColor/shadow etc? (i have 5characters, each has like 10 materials on them and they change all the time and get assigned to different clusters etc, im not doing commercial stuff, this isnt a matter of a "workaround just to get this shot done")

Altho I have little to no knowledge on how shaders and rendering works internally but this makes me think that this is probably what maya actually does under the hood when i use the contribution maps there. It probably sets all the custom color channels for me and i only need to do several clicks and have whole scene separated into all of the images mentioned in the op.

Also i guess there is objectLabels/ids which i could then "pull a matte" out of in post from standard full renders (whole scene diff, ambient, spec etc) which would sort of work for me but it doesnt seem to be customizable, each object gets completely different color in the pass (i want say eyes to be the same id but keep them as separate geo) also it doesnt seem to support alpha transparency textures by default and isnt antialiased, so this would again probably require to manually setup per material/object coverage/opacity channels to make the label pass usable in post without too much manual matte refining on each object. Some brief googling on this matter showed me alot of technical discussions with ppl trying to make that work so i guess its not somewhat simple process either.

Oh well, I guess this is sort of multiple problems combined which id have to sort out one by one, but if theres no simple-ish solution that would make this process more like i described about contribution maps in maya (in the op), and it really requires me to set all the custom colors up manually per material on each object and cluster in order to get my desired images out of xsi, then a simple confirmation of that is all i ask for in this thread.

Thanks again for any info

07 July 2011, 11:42 AM
yes you need to do it rendertree, yes they work per material, you need to do it manually/script it/make shader compounds and reuse it/download one of mia_x_channel compounds

you mean if you have eg 100 objects in scene it will output 100*x*y channel files in maya? seems like compositor's wet dream

07 July 2011, 02:30 PM
hehe thanks for clearing it up for me then, damnit i knew there was gonna be a catch, it all felt too good to be true, seriously other than this, everything else i did in xsi felt like artists dream compared to maya. So smooth, clean, responsive, intuitive and stable. I could go for days on about how painful even basic stuff in maya can be and wouldnt lie if i said that probably 70% of the time i spent in maya was troubleshooting and problem solving instead of creating.

and yep, like you said, in maya if you want say flatColor, lighting and spec file for each of the 100 objects (so you end up with 300 files per frame + 1 master render of whole scene), its just a matter of creating for each object and assigning the mentioned channel preset (diff, spec..) to each. Theres like 40 presets (stuff like incidence (cam/light..), normals(world/camera).. etc). Its like separating an xsi pass into partitions for each object but then rendering each of those partitions on their own while still being able to occlude or get occluded/get shadows of the objects in other partitions but not render those other obj themselves. Without prep and scripts it would probably take 15-30mins to setup for 100obj. It also does not increase rendertime, as i guess mental ray has to compute that stuff while constructing the master image anyway, so it just spits them out for you for free. I dont get why something like that isnt in xsi especially when i keep hearing how MR is much better implemented in xsi. Oh well guess this is why theres still multiple 3d apps floating around, each has its own advantages.

07 July 2011, 02:46 AM
Actually There is a little easier way to do but you really need to make sure you are 100% ready to render before attempting it. you can do it with a override. If you add a colorshare or a 4_color_passthrough in all of your materials as the last node before the material node then, you can assign an override to the partition and then when you goto add the parameters to the override you drill down to one for the objects materials and then you select one of the channels. You can then once you have that channel you can then store_color_in_channel node to that then you can add a material like AO to that and then you can output multiple buffers with complex materials out of a single render. FYI I use color share over 4 color passthrough because it works with Arnold. you can easily do this and have all kindsa stuff come out of a single render this way. I have done a couple dozen buffers out of a single render this way.

Basically this is what a contribution map is doing behind the scenes. It is basically applying these overrides to all of the materials trees at rendertime. I really hope that this is Softimage next time around.

CGTalk Moderation
07 July 2011, 02:46 AM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.