View Full Version : Problem with ID Channels.

12 December 2006, 09:54 PM
I would like to know how can i select an object by it's render id, object id or material id. I usually use OpenEXR to export things from max.
And IF i figure out a way to select it there is another problem too...
I use 3ds max 8 sp3 and vray 1.5r3 ( tried it with mental ray too ) and the the object id, matid and renderid channels don't antialias correctly ( this isn't a bug for both renderers, they do this because they calculate this render elements as integer not float ). Let's say you have a scene with hundreds of objects. I don't expect you do mask for all of them. renderid selection would be the fastest way i can think but it doesn't antialias correctly so ? What is your solution in this situation?

12 December 2006, 08:33 AM
Almost avery node in Fusion have option to make the node active only for certain object/material ID. You can active this option in common controls pannel(icon of radiation).
There are two buttons, use object or use material.

12 December 2006, 09:02 AM
Thanks for the reply... but i didn't make it out... the id channels aren't producing a correct alpha because they are interger and not float... when you have time, MAYBE you could post a screenshot or something how it worked for you...

12 December 2006, 03:15 AM
ids are integer data, not float. can you zip and post your flow and source footage?

12 December 2006, 08:07 AM
ooga booga this is not possible i am afraid. i was hoping someone would had a workaround for this. Pepersanitra helped me selecting the channels but they are still producing jadded edges. This is because as use said they are integer and not float. Any workaround ?

12 December 2006, 10:06 PM
The reason you're still getting jagged edges has nothing to do with float or integer. It has to do with;

lack of a proper pixelCoverage channel and/or
the pixelCoverage not being used correctly

and if you have pixelCoverage as well as the ids, and have set them up as PeterSanitra has outlined (there should also be an option for 'correct edges', if you have coverage choose to correct edges as well), then set your render quality to "Hi Quality"

it will help but I'm telling ya, you're still going to have problems. it's not perfect and it won't be. you can get it closer but it's going to require some custom plugins to be developed

12 December 2006, 10:21 PM
ok thanks for the tips man. i think i need to search for info on pixelCoverage on net. Oh and about the plugins development... everything is achievable through plugin development df is a main executable and has a bunch of plugins, the same goes for Windows, the same goes for every serious application or OS, so this lead us to the conclusion that if someone has the knowhow of coding plugins for a certain application he can pretty much do whatever he wants. If i had some more programming experience with vc++ i would code i plugin not for df but a render element for max that would simply output the id channels as float. i don't get why they make it output integer. expect maybe for keeping compatibility with some image formats.

12 December 2006, 01:25 AM

There are studios using ids and coverage data and are getting results that are acceptable for broadcast and feature film work. However they're not doing so without custom development. There aren't currently any 2d packages that deal with the data properly.

check out your mentalray docs in regards to;
"default framebuffers","tag data", "pixelCoverage"

check out your Fusion docs in regards to;
"Fusion Auxiliary Channels"

Be carefull however, becasue even within the Fusion documentation there is some misleading information regarding pixelCoverage. Such as;

The Z-Coverage channel is used to indicate pixels in the Z-buffer that contains two or more objects, or had been anti-aliased by the renderer. The value is used to indicate, as a percentage, how transparent that pixel is in the final depth composite.

The Z-coverage will not show "all" pixels that have been antialiased by the renderer. It is limited to boundaries based on different tag labels applied to your geometry in the 3D package. There is no information for antialiasing that happens within the boundaries of any given tag.

Also the last line in the above quote from the fusion documentation is misleading. Here's some information from the mentalray documentation discussing pixel coverage and what it means;

Pixel Coverage

mental ray 3.x supports an extra data type "coverage" that creates a separate frame buffer containing the fraction of each pixel covered by the most samples in that pixel. Oversampling often takes several samples (primary rays) in a pixel for anti-aliasing; the samples are averaged. At points where one object overlaps another, one object may account for more of the pixel than the other, which might just touch a corner of the pixel. In such a case, the coverage frame buffer specifies exactly how much of the pixel the ``more important'' object covers. This is a number in the range 0 (the pixel is empty) to 1 (an object covers the pixel completely). If the coverage buffer is written to a file, a scalar format such as st should be chosen. mental ray can also convert to RGB/A formats such as TIFF.

Since mental ray is a point-sampling renderer, the precision is bounded by the number of samples taken, which depends on the oversampling settings ( samples option). Two objects are considered different if their object tags differ. Object tags are defined with tag statements in the object definition in the scene file. If coverage calculation is enabled by adding the appropriate output statement, the depth, normal, motion, and tag frame buffers, if also enabled and marked with a ``-'' (which is the default), are guaranteed to come from the object that had the most coverage.

I hope this helps.

CGTalk Moderation
12 December 2006, 01:25 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.