PDA

View Full Version : Why is Specular Linked to Reflection?


plotz
03-18-2003, 10:29 PM
Just a general question I've always wondered about with the maya renderer.

In order to see a reflection (reflected color) you have to also have a specular color.

If you want to use environment maps to simulate specular highlights you have to turn off the specular attributes of your lights in order to get the reflection...but not the specular highlight from the light source.

In every other package I've used you could turn your specular color/highlights off, and it had nothing to do with reflectivity.

jeremybirn
03-19-2003, 12:02 AM
If you want to kill the specular highlights from a shader without hurting the reflectivity, set the "roughness" or "highlight size" to 0.

If you want to use colored specularity without tinting your reflections or reflection maps, assign the color to the Whiteness parameter instead. "Whiteness" only tints your highlights, whereas Specular Color allows for both colored highlights and colored reflectivity.

Specular highlights are supposed to look like a reflection of a lightsource - if a surface tints reflections, it'll tint reflections of light sources, and if it doesn't tint what it reflects, it won't. In real life, most non-metal surfaces don't have colored specularity, but if a surface (such as a gold brick or christmas tree ball) has colored specularity, it most likely also would also tint the reflections.

If this connection were broken, then there would be no way to get tinted reflectivity in Maya, such as the reflectivity of a red or gold christmas tree ball.

-jeremy

plotz
03-19-2003, 03:10 AM
I'm struggling with some of your terminology here.

The only thing that controls highlight size in Maya (that I can find) is "cosine power" , which can't be set to zero. You can set it to a very high value, and get a highlight so small as to not be seen.

I'm also not finding a "whiteness" parameter. I assume you're talking in generalities here, and that whiteness probably refers to the "specular color" in Maya.

jeremybirn
03-19-2003, 03:14 AM
I meant in "PhongE" - I guess you are using classic "Phong" which is missing all the options I referred to from a "PhongE" shader.

In a "Blinn" shader you could the eccentricity to 0 for similar results, though.

-jeremy

Jozvex
03-19-2003, 06:50 AM
Yeah I always use PhongE shaders over Phong, for the ability to turn off the highlight etc

ngrava
03-20-2003, 10:52 PM
Yeah, Think of it like this: All objects reflect light (unless they are black). That's how we are able to see them. Our eyes catch the light bouncing off of them. Depending on the smoothness or roughness of a surface, the light either reflects off in a tight pattern (specular reflection) or it spreads out all over the place (Diffuse reflection). At this point, Global Illumination renders are the only renders that can render Diffuse reflection. The problem is that when people started developing 3D renders in the early 60's, they used the term "Specularity" to describe the little highlights that you get on shinny surfaces... Well, as jeremybirn pointed out, secularity is actually a simulation or "Fake" of the reflection of a light source on a surfaces. When in actuality, specularity actually describes reflection!

Latter, when technology get better, and they where actually able to simulate real specular Reflection, they just called it "reflection" and kept specularity a separate termů And, it wasn't until people started talking about radiosity that we became familiar with term "Diffuse" reflection. Unfortunately, by then, diffusion had already been locked away in another software misnaming of it's own.

In a prefect world, surface editors would have a slider for the amount of reflection and underneath that another slider that goes from Diffuse to Specular which would define whether reflections where rough, soft or glossy..

-=GB=-

playmesumch00ns
03-20-2003, 11:20 PM
Personally I think it works pretty well as it is. I mean, you have your diffuse reflection component, your specular reflection component and your mirror reflection component and you just add them all together. The advantage of CG is that you can do whatever the hell you like.

Plus if you had a physically-accurate shading model then you'd have to model a light source for every light you added to the scene to get proper specular highlights from it. CG's enough work already!;)

Stahlberg
03-21-2003, 04:29 AM
Hey jeremy, I think you can tint a reflection also by fiddling with the color Mult and Offset straight on the image file node? Not exactly the same, but in some cases I've found it to be useful, in conjunction with tinting the spec (like with red Xmas balls).

jeremybirn
03-21-2003, 05:08 AM
Quite true Steven - if you were using a reflection map linked to the reflected color, then there are tons of ways in the file node or through other intermediate nodes to tint the color of the reflection map. If you were raytracing a reflection of other objects, then the only option I see in a PhongE node for colored reflectivity is the specular color. Of couse, last project I raytraced on I rendered the reflections all as separate passes and tinted them in post, so the point is somewhat academic, but still it's sometimes useful that "Specular Color" and "Whiteness" have slightly different effects.

ngrava's point that this is all a cheat is a good one. A purely "specular" reflection of light is perfectly focused (like a raytraced reflection.) But, a perfectly specular reflection of an infinitely small point-source light would produce a specular highlight that was always less than a pixel in size. When a point light is reflected as a broader highlight, that is actually a "glossy" reflection of the point, not a "specular" reflection of the point. That's one of the reasons why the specular highlights and the reflections in some renderings don't integrate well: specular highlights are really glossy reflections, whereas raytraced reflections are purely specular (except if you are using Mental Ray with a DGS shader.)

-jeremy

Mananetwork
05-20-2003, 08:31 AM
So how do you make a reflection render pass with a blinn? Do you turn off all yoru lights and drop the ecc down to nothign?

Stahlberg
05-20-2003, 09:44 AM
In a prefect world, surface editors would have a slider for the amount of reflection and underneath that another slider that goes from Diffuse to Specular which would define whether reflections where rough, soft or glossy..

Well as long as we're dreaming, even better would be:
I could draw a curve to describe the cross-section of the microstructure, and draw some arrows in a top-view to describe anisotropy... perhaps even animate these curves and arrows.
Then a few sliders to define color, translucency/transparency, incandescence etc of the the different layers of the surface (top/middle/bottom maybe). If I knew what I was doing I should be able to perfectly reproduce any material in the universe this way. ('Reflectivity' would be redundant because the microstructure would dictate it.)

THEN I should be able to interactively and globally edit all this by painting on top of the rendering, and shading algorithms and textures would change, bending perfectly to my will in realtime. Muahaha...

edit: Mananetwork, if the Pass Control in Render Globals isn't working for you, you could just make a copy of the original scene with all the shaders' color, incandescency and diffuse zero, on a black background.

CGTalk Moderation
01-14-2006, 04:00 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.