Page MenuHome

objects from inappropriate render layers appear behind translucent objects.
Closed, InvalidPublic

Description

System Information
Linux bubastis 3.10.25-gentoo #10 SMP Thu Jan 30 22:17:35 UTC 2014 x86_64 Intel(R) Core(TM) i7-4800MQ CPU @ 2.70GHz GenuineIntel GNU/Linux
01:00.0 VGA compatible controller: NVIDIA Corporation GK107GLM [Quadro K1100M] (rev a1) (prog-if 00 [VGA controller])

Blender Version
Broken: 2.70
Broken: git 08bf531956b1c1cff3319d119e8aba55b7a09b9e

Short description of error
I might have discovered a defect in the Blender Internal raytrace logic.

When a ray travels through a translucent object, it will continue on to touch objects that are NOT in the current render layer.

If you have a translucent block in layer 1 and a monkey head in layer 3 the monkey head will be visible "through" the translucent block in the rendered image for a render layer that includes 1 but not layer 3.

This will eventually expire from pasteall, but until then it will save you the trouble of rendering the blend I'm about to attach:
http://www.pasteall.org/pic/71597

Details

Type
Bug

Event Timeline

Robert Forsman (mutantbob) created this task.
Robert Forsman (mutantbob) raised the priority of this task from to Needs Triage by Developer.

This is the .blend file i I assembled to illustrate the bug.

The translucent blocks are on layer 1. The monkey heads are on layer 3.

There are two Render Layers, one which includes only layer 1, and another that includes only layer 3.

The compositor uses nodes and only the Render Layer with layer 1 is part of the output. Nonetheless, the monkey heads from layer 3 can be seen through the translucent blocks (but nowhere else).

Bastien Montagne (mont29) triaged this task as Confirmed, Medium priority.

Ray mirror, AO, and ray/buffer shadows have the same problem.


Brecht Van Lommel (brecht) claimed this task.

This is by design. The Cycles docs have an explanation which applies to Blender Internal as well:
http://wiki.blender.org/index.php/Doc:2.6/Manual/Render/Cycles/Passes#Layers

Camera Layers: objects on these layers are directly visible to the camera. When an object is in the scene layers but not camera layers, it will still cast shadows or be visible in reflections, so it's still indirectly visible. This is equivalent to disabling the Camera in the Ray Visibility panel for the object. The way this works may be somewhat confusing at first, but it's designed such that render layers can be recomposed to give the full render, without any missing shadows or reflections.

The logic in Blender Internal is a bit more confused, but generally Z-transparency is excluded while Ray Transparency is included, because the latter potentially includes refraction and glossy which is impossible to recover in compositing.

Based on brecht's explanation I altered the material on the monkey head by unchecking the Traceable option in the Options section. The monkeys were no longer showing up in the translucent blocks after this change. I now know how to avoid this problem in the future.