View Full Version : Render an ID pass?
12-13-2005, 02:48 PM
Hey guys, does anyone know a "clean" way of rendering an ID pass in maya? By ID pass I mean that every current shader you have is given an "ID" value and at render time every shader renders out as a different flat colour based on it's ID. This would then be used in compositing.
I haven't been able to work out a way of doing this which doesn't involve detaching and then reattaching evry shader in my scene, can anyone think of a clever automated way of doing this?
12-13-2005, 03:17 PM
ctrl_buffers does that kind of thing...
03-19-2006, 12:30 PM
hmm, im going to go for an insanely optimistic months old bump. Note that I need a way of doing this for Linux so ctrl_buffers seems to be out.
03-19-2006, 02:26 PM
I decided I may as well just script it, luckily it didn't take too long.
For every shader in the scene a new shader is created with a unique colour and the objects are attached to this. There's no quick way of reallocating old shaders though.
itemFilter -byType "lambert" -byType "blinn" -byType "phong" shaders;
select -noExpand -replace`lsThroughFilter -na shaders`;
string $shadersSelected = `ls -selection -fl`;
int $numShaders = `size $shadersSelected`;
for ($i=1; $i<$numShaders; $i++)
$hueValue = (1.0/$numShaders)*$i;
$colourValue = <<$hueValue, 1, 1>>;
$colourValue = `hsv_to_rgb $colourValue`;
$shaderName = "ID" + $i;
$tempBuffer = "shadingNode -asShader lambert -name " +$shaderName +";";
$tempBuffer = "hyperShade -objects " +$shadersSelected[$i] +";";
$tempBuffer = "hyperShade -assign " +$shaderName +";";
setAttr ($shaderName + ".diffuse") 0;
setAttr ($shaderName + ".incandescence") -type "double3" ($colourValue.x) ($colourValue.y) ($colourValue.z) ;
I apologise in advance for my lack of comments and my inconsistent approach to coding.
03-19-2006, 02:26 PM
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.
vBulletin v3.0.5, Copyright ©2000-2013, Jelsoft Enterprises Ltd.