If I make the sphere non-hollow and cut it with a smaller sphere, it
renders correctly again.
The weird thing is, the Oren Nayar material renders properly, so I guess
I'm missing some important steps. Problem is I'm not able to read all
that
weird stuff that is happening in the ON material.
Anyone have any ideas what I'm doing wrong?
Karl
Hi Karl,
Nothing I guess, the Boolean hollow surface is probably buggy ;)
Are you using materials containing the line 'LightAngle=dot product(Ray,
Bump normal)' ?
Apparently, surface/bump normal is reversed for the hollow parts, it's
as if you're looking at the inside of the surface; the renderer doesn't
realize it should behave as a double-sided surface. Somehow it 'thinks'
you're looking at it from the inside. In other words, Angle gets
assigned a positive value while it should be negative.
I negated the Angle value and then the inside was rendered OK, but the
problem shifted to the outside ;)
Conclusion: avoid hollow Boolean stuff!
Hi Neil and Mark
Yes, it was something like that. I also tried the negating thing and ended
up with the same results. I agree, something does _look_ to be buggy, but
then again, why does default shading work (no materials at all, which
otherwise produce the same results as the curve material without the
curve). And also the Oren Nayar material work and that is a custom diffuse
shading thing too. What do these shading algorithms do that we don't
normally do? The Oren Nayar procedure is flipping some angles around,
calling a faceforward procedure, and doing stuff I have a hard time
understanding.
So even if the hollow surfaces have bugs, there already exist mechanisms
to make them work. So, I'm not fully confident that the hollow surfaces
are actually broken. More likely my brains are broken :-)
Yes, I'm aware that cutting with a smaller sphere fixes the problem, but
the idea is to have a manual default shading system that completely
(except it get's put to the wrong result channel, but that's another issue
alltogether) mimics how the default shading works (using no materials). A
workaround such as this isn't good enough for that purpose, obviously :-)
Karl