Solid black render of object with negative scale and smooth shading
Closed, ResolvedPublic

Description

System Information
Windows and Linux, any CPU and GPU

Blender Version
Broken: 2.71 29e8c46 (15.6.2014) and all next compilation including 2.71 50d3014 (2014.07.14)
Worked: 6f1a648 (3.6.2014)

Short description of error
If object is accidentally scaled by negative value in object mode, an object is shaded smooth, its renders as solid black on F12 render (cycles). But looks good in viewport render preview.

Exact steps for others to reproduce the error

  • Set render engine to cycles
  • Scale default cube by -1
  • Shade this cube smooth
  • hit F12

in attached file

  • First sphere is scaled by -1 in x direction (in edit mode) but it is shaded flat - OK
  • second sphere is scaled by -1 and it is shaded smooth - bug, it renders solid black
  • third sphere is smooth bot not scaled negative. - OK

Tomasz Jurczyk (ikkiz) updated the task description. (Show Details)
Tomasz Jurczyk (ikkiz) raised the priority of this task from to Needs Triage.
Tomasz Jurczyk (ikkiz) set Type to Bug.

I have same problem in my project, but I don't success reproduce it. Black material occurs on moving object with scale -1 deformed by armature with motion blur turned on. This bug appear on object made in old versions of Blender. If I trying reproduce it in new blender from scratch, all working fine. Work around is append object to new Blend file.

Confirmed with both the file and from scratch.

Looks like Cycles scales negatively its face normals (giving outside vnors, but inside fnors)? Odd though that flat shading works OK… :/

After all it is not a big problem, I can live without negative scaled objects. I've stumble on it by mistake.
But it could cost some time of debugging perfectly working shader. All credits to ania for help with reproducing bug.

The problem seems to be with:

  • Negative scaled objects
  • With normals points inside
  • That have smooth shading
  • And have their transformation applied inside cycles (because they are not instanced)

I suspect it's a bug in the way scaling is applied to smooth normals (or maybe it's not getting applied at all).