Are there any practical limitations in combining Diffuse, Specular, … in a single material?

The various portions of a material definition all add up to the surface response to the lighting in the scene. In order to present a realistic look – to any extend – one has to balance the contributions of those portions to each other, and to the various kinds of lighting in the scene. See the short answer and an  elaboration on this.

Intermediate

Next to that, all those portions of a material definition just add up mathematically, on a per-color basis. So RGB (80%, 60%, 15%) + RGB (60%, 50%, 10%) = (140%, 110%, 25%). This may cause overlighting (any value >100%) from

= Diffuse * all direct and indirect diffuse lighting + Specular * all (direct) specular lighting + Reflection * all light from other objects in the scene + Ambient + Translucence (both representing glow from the object itself)

I can dim the light (which will make the ambient glow look stronger) or I can dim all material aspects proportionally. This latter will darken the image (which can be corrected for in post, using Photoshop or GIMP or alike) but at least will avoid the clipping effects. Note that applying Gamma Correction (GC) automagically caters for some darkening, overlight reduction and re-brightening and should be used when possible. GC is available from Poser 10 on, and from Poser Pro 2010 on.

For instance, assuming all colors to be white so we’ve got to consider intensities and brightnesses only, say a light producing 90% diffuse and 80% specular light shines on an object having

  • 80% diffuse
  • 20% specular
  • 20% ambient

This will produce 90% x 80% = 72% in the diffuse channel, plus 80% x 20% = 16% in the specular channel, plus 20% in the ambient channel, equals 72 + 16 + 20 = 108% which will get clipped down to 100% when presenting the result.

But do note

  • That addressing diffuse and specular lighting separately requires the Advanced interface to the material room, using the color swatches for both
  • Setting the intensities for Diffuse, Specular and Ambient can be done via the Simple interface, as well as via the Advanced interface, using the appropriate color swatches
  • All color swatches for light and material will get affected by the Gamma Correction (GC) mechanism while rendering, which reduces the overlighting effect by itself. GC is available in Poser from version 10 up, and in Poser Pro from version 2010 and up. See further articles on its use, and on details.
  • Setting the intensities for Diffuse, Specular and Ambient can be done via the Advanced interface, using the appropriate value dials. These are not affected by the GC mechanism, and hence will produce a different result from dimming the color swatches.

Next >

Are there more principal limitations in combining Diffuse, Specular, … in a single material?

The short answer is NO, and be advised that there are a lot of contrasting opinions in the forums and around on the Internet. Some opinions are presented as religion, and their advocates act as true evangelists. Others are more relaxed. What does it matter?

Well, 3D programs like Poser are very feature rich, and far from easy to comprehend fully (at least to me). And finally, I need a “way of thinking” to use those programs effectively and efficiently. That is: for establishing a specific effect in my result, I want to get a good way to accomplish that, without wasting a lot of time (and other resources) on thinking it up, implementing it, testing, fine-tuning and rendering. The best “way of thinking” for me depends on my background (experience, interests, education, expertise) and the kind of effect and result I want to accomplish. Stylish results for comics have different requirements from studies for oil-painting or crayon-drawing, from product-casing, from animation or from photoreal’ish rendering, either for web-galleries or for large scale fine print.

So in some cases the “let’s not add up to 100%” approach is good enough, in other cases people might prefer a complete Master of Physics approach, or anything in between. It’s good to have all those variants around, and to add some of them to a personal toolbox.

More in detail

Various opinions arise from the limitations on materials in nature, when a single source of light hits a surface. That light can be reflected, diffused, transmitted and so on, and hence these portions should not add up to a value larger than one (100%). It could be less, to represent absorption in the material. However, the various portions of a Poser material respond to quite different – and quite independent – sources of light. This is presented in a basic way. And there are various practical considerations to be taken into account.

Intermediate

For a better understanding, let’s review the situation for direct lighting and for indirect lighting separately. In both cases, Bump and Displacement, as well as Transparency and Refraction will only affect the distribution (and eventual reduction) of light re-emitted by the object towards the camera into the render, but will certainly not increase the amount of it. So these aspects can be ignored for the moment.

For the sake of simplicity, let’s first consider a single (direct, point) source lighting an object in the midst of a scene, under non-IDL conditions:

Direct Lighting only

The diffuse portion of the light will be re-emitted by the Diffuse portion of the material, while the specular portion of the light will be re-emitted by the Specular part of the material, emulating the reflection of the direct light source (the lamp) itself. The Reflection part of the material will bounce the diffuse and specular results from the light source via other objects in the scene onto the object surface (unless a reflection-map is used to fake the effect).

Red: direct diffuse light into scene and onto object, resulting in general visibility Green: direct specular light into scene and onto object, resulting in highlights= reflection of lamp Blue: visibility and highlights combined from the scene reflected onto object = reflection of scene

Note again: the reflective surface of the reflecting object not only does not reflect the direct light source itself (as a lamp is not considered an object at all), it does not reflect the light rays either. So I cannot use a flashlight and a mirror to illuminate an object around the corner.

Since Reflection and Specular both represent the same reflective properties of the material for just different sources of light, they should be balanced somewhat for the objects surface. This effectively means I’m balancing the visibility of the lamp with the visibility of the scene objects, both onto the surface of the object at hand. And – for that same object surface – I’ll have to balance its Reflection / Specular at one hand to its Diffuse at the other hand, to make a neat impression of the objects reflectivity as such, despite the fact that the sources of the lighting are different.

On top of this, the material can offer some glow of its own, in the Ambient or Translucence channel (*). This will wash out some surface details of the object, and will just add to the light re-emitted from the surface by Diffuse, Specular and Reflection.

InDirect Lighting conditions

Second, let’s switch on IDL conditions. Now all the light (diffuse, specular, reflections, ambient glow, etc.) re-emitted by any object in the scene works as a diffuse light onto the object (and all other objects) as well, in addition to the already available direct lighting. Effectively, this will turn up the diffuse lighting level seriously. Not only will this turn my render into an overlit one unless I lose a few lights and turn down the intensities of others, it will also distort the balances between the material portions sensitive to direct light (Diffuse, Reflection), and the portions which are not (Specular, Ambient).

For Specular, this implies that we either have to re-balance this property against Reflection and Diffuse, or we have to rebalance the specular properties of the available direct lights against the new IDL-based lighting level. The latter part might take far less effort, especially in material-rich and/or crowded scenes.

To complete our understanding on Reflection, let’s re-consider the use of a flashlight, shining on a mirror in an attempt to illuminate an object ‘around the corner’. The (direct) flashlight will produce a bright spot from diffuse and specular on the mirrors surface. Under IDL conditions, this spot will act as a diffuse light source, shining all around creating some extra illumination ‘around the corner’. There still will be no defined bundle, though.

For Ambient/Translucency (*), the hotspots (led-lights or so) on the object might need to glow a bit more to be seen within the altered IDL lighting level.

(*) Ambient and Translucence are equivalent parts in the material definition. Just use either one or the other. The main difference is that Ambient is supported by the Simple interface, and by most exports to non-Poser file formats and renderers, while Translucence is not.

Next >

Are there any principal limitations in combining Diffuse, Specular, … in a single material?

The short answer is NOT REALLY, and be advised that there are a lot of opinions in the forums and around on the Internet. Most of those opinions arise from the behavior and limitations on materials in nature, when a single source of light hits a surface and triggers all components. That light can be reflected, diffused, transmitted and so on, and hence these portions should not add up to a value larger than one (100%), otherwise the object re-radiates more light than it receives. It could be less, to represent absorption in the material.

However, the various portions of a Poser material respond to quite different – and quite independent – sources of light. Diffuse responds to direct and indirect diffuse lighting, Specular responds to direct specular lighting only, Reflection and Refraction responds to any (indirect) light re-emitted by any other objects in the scene – but not direct light sources themselves, and Ambient / Translucency represent some lighting or glow emitted by the object surface itself. See the next article for more details and background on this subject.

This brings up a different issue. In nature, adding up multiple light sources will increase the brightness of the surface, and my eyes will adapt to that (by reducing the pupil width). Poser rendering however is not capable of doing that (yet). This may cause overlighting on the image.

Hence, there are no limitations in balancing the various portions of a single Poser material, even when representing a ‘photo real’ surface. Choosing any values too high however can make an object overlit, or give it a very unnatural appearance.

Not for a “conservation of energy” concept or alike, but for a practical reason on the prevention of overlighting, there is nothing to stop me from using somewhat realistic values for Diffuse (80% to 60% will do), for Reflection (1% for organics, 4% for liquids to 10% for glass-like stuff will do, except for metals which may go 60%-98% but hardly Diffuse as a consequence) and similar values for Specularity as well.

Next >

A PoserSurface material offers Diffuse, Specular, etc. How do these work together?

Simply stated, all elements of a surface/light interaction are added up mathematically, on a per light, per channel (like Diffuse, Specular, Ambient, …), color-by-color (Red to Red, Green to Green, Blue to Blue) basis. This may cause overlighting, as components might add up to values over 100%. This can be prevented by reducing the intensities of lights and/or by reducing the brightnesses of the various surface components.

A more detailed answer following below requires determining all the steps from scene to render, which is something for the experienced and curious users, who want to have a better understanding of the way things work.

Intermediate

Say, a portion of the render result is determined by a portion of an object surface (material zones) which is covered by a single material. That material offers various “channels” (like Diffuse, Specular, Ambient, …) and the surface is lit by various light sources in the scene.


Object mesh (white) consists of various material-zones (red), each catching light rays (green) and using its own surface definition (yellow) to calculate the re-emitted light (blue) towards the camera / render plane (pink).

First, when my Poser version supports gamma correction (GC) and I have enabled it, each channel and light will be adjusted in a way that brightnesses are (or may be) reduced (more precise: pushed away from 100%). When my Poser version does not support GC or I’ve disabled it, this step will be skipped.

Second, for each channel / light combination a render subresult is derived. This will introduce reflections, shadows, highlights, glow and so on, on a per-light basis. By the way: Poser, and especially Poser Pro, offers various scripts and features to export those subresults individually for manual re-combination in postproduction.

Third, all those render sub results are added up, per light, per channel, on a color-by-color basis. So a diffuse result RGB (60%,50%,10%) and a specular result RGB (80%, 60%,15%) on the same spot make RGB (140%, 110%, 25%). Plain simple arithmetic.

Forth, when my Poser version supports gamma correction and I have enabled it, the final result will be adjusted in a way opposite to the first step: brightnesses are increased (more precise: pulled towards 100%). When my Poser version does not support GC or I’ve disabled it, this step will be skipped, as was the first step in the process.

Fifth, but only for showing the resulting image on screen and for exporting it to a standard 8-bit-per-color format (JPG, PNG, …): all colors are clipped to 100% max, which for instance might turn the result (140%, 110%, 25%) into (100%,100%,25%). Internally, and in some export formats as well (HDR, EXR for Poser Pro) the software works in a 16-bit per color format.

A brief elaboration on Poser Gamma Correction(GC)

As a result of the third step, two identical lights will give the same result as a single light with double intensity, that is: when GC is not enabled. The arithmetic then is simple and linear. This is different from adding light effects in nature, like projecting an image on a wall via multiple projectors. In that case, my eyes will adjust to the increased lighting level. But images can’t. Photoshop offers the Screen layers mode for handling this, which is considered the industry standard for handling the addition of light/surface subresults as it’s very close to the behavior of good old film, and its modern electronic equivalent.

Side note:

Screening is defined as “re-inverse the multiplications of the inverses” which for images a and b comes down to : result = 1- (1-a)*(1-b).   Applying this to the colors mentioned above, this will result in 1- (1- (60%,50%,10%))*(1- (80%, 60%,15%)) = (92%, 80%, 23.5%)

When applying Poser GC to the colors mentioned above, the result will be RGB (97%, 76%, 11%). This does not need clipping and hence will not present any overlighting artefacts. This is one of the big reasons to enable GC when available. Next to that, the Poser result under GC is somewhat similar to the industry standard. And on top of that, GC will soften shadows and shading as if the scene is filled with air and as if other objects are bouncing light around, as in real life.

When applying GC it’s much recommended to keep all Values at 1.0 (or 0.0) and to define all brightnesses through the Color (swatch). This is because Poser’s GC mechanism treats colors and values differently, so a light with a 50% white (mid gray) and 100% intensity works as required but a light with 100% white and 50% intensity will produce a different (far brighter) result. Bump, Displacement and Transparency should be excluded from the Gamma mechanism. You might like to read more about CG in these articles on GC fundamentals and GC advanced use.

Next >

Poser Materials III Intermediate Surface Definitions

The articles in this section discuss some material definitions for object surfaces (the PoserSurface), which are handled through the Advanced Interface: the nodes from the Lighting group, and the nodes on image-maps and movies. It also discusses some principles on dealing with the PoserSurface root node.

Next subsections present similar articles on an(IV) Advanced level, as well as on defining the properties of (V) Non-objects (atmosphere, background, lights) as far as these are handled through the Material Room interface. The Appendix lists all Material Room nodes and relevant Render Settings, and their availability in the various Poser versions.

What are the Bump/Displacement components intended for?

Each object surface – except for the hard and smooth ones – has some irregularities, like pores in the skin. On a large distance, these details don’t show in the render at all, or can be embedded as shady areas in the color texture at most. At a somewhat shorter distance, but still away from the camera, those regularities can be faked, saving a lot of render time and memory resources. That is what Bump is for. The magic is done by the texture (Bump-map) alone; no surface elements are actually moved.

When the object surface comes closer to the camera, surface elements actually do have to move a bit in order to make believable results. Those displacements still can be image driven, which is where the Displacement-map kicks in. This way of work actually saves a lot of detailed modeling. For instance, terrains are generated this way. But again, its effects are limited, so when the object surface comes really close to the camera, it pays off to actually adjust the object mesh actually, and to model in the details themselves.

So, the other way around: I can either put the details into the object mesh which takes a lot of my modeling time, or I can apply a displacement map which requires memory and render time, or I can apply a bump map faking the displacements, or I can leave it the way it is. The best choice depends on the distance of the object to the camera. Additional considerations on this are required in animations, where this distance can vary over time. In general, a serious difference between Bump and Displacement is that Bump does not distort the object itself, and hence leaves the edges intact. So a bumped ball still will be a perfectly round object in the render. A displaced ball will not.

makes

And notice the difference between Bump (left) and Displacement (right). Not only the bumped one still is a perfectly round object while the displaced one has got a roughed up edge, the bumped one also is smaller, for the same amount used. This is why:

  • In Bump, white gives maximum effect outward, while black gives maximum effect inward, so 50% grey is the neutral / no effect value. The Amount indicates the total difference between black and white, so the effect is half of the amount outward, and half the amount inward. Using a negative amount will reverse the effect: black will simulate an outward effect, while white will dent inward. And… bump is not modifying the object mesh, and hence cannot alter its size.
  • In Displacement, white gives full outward growth of the object while black gives no growth at all. So, for displacement, black is the neutral / no effect value, and any displacement will grow the ball. When displacements should be made inward, then negative amounts must be used. Hence, displacement will actually grow the ball, and its visual effect is twice as strong as for bump.

Notes:

  • Via the Simple interface, using the Displacement option one can choose between Bump and Displacement, it’s either the one or the other. Via the Advanced interface, one can have both. For instance to drive large adjustment by a displacement, and small details by a bump.
  • The Amount is measured in the unit I’ve set in my Global Preferences. The screen grab above was made on a system using Meters, so 0.0254 indicates 2.54 cm. Which by the way is about 10% of the balls diameter; quite a lot. When the units are changed to inches, that value will change to 1.0. I have to take this into account when using data from examples. (And… python scripts have to use inches by all means). This 1” value is the default, which actually is quite a lot for say skin details, but quite small for outdoor terrain surfaces.

Intermediate

The PoserSurface material definition offers a few additional options for compatibility:

  • Gradient_Mode = Gradient Bump offers compatibility with old Poser versions, I can plug the existing *.bum file into the Gradient_Bump slot, as an image
  • Gradient_Mode = Normal Map offers compatibility with Game Characters. If my figure comes with normal maps instead of bump/displacement maps, I can select the correct type, and plug the map into the Gradient_Bump slot as an image.

Important note: in Poser Pro and Poser 10 and up, when using image maps for Bump and/or Displacement, these should have the Gamma set to 1.0 explicitly. Otherwise, the images will get dimmed considerably before application, especially in the mid-grey areas. This will result in dimming the Bumps / Displacements themselves as well, which is wrong.

Next >

What’s the Reflection component intended for?

Well, I know about reflections in nature, from mirrors, metal balls, glass, and water surfaces. So the answer can’t be that difficult.

Unfortunately, it can be quite complicated in a 3D program, because the proper handling of reflections requires a full fletched use of raytracing, with an infinite number of bounces. In the old days this required so much computing power that rendering took about till infinity. From this recent past, which is just one to two decades away, three approaches remain which are discussed below:

  • Reflection maps
  • Specularity
  • Raytracing

Although most characteristics of these are available through the Simple interface into Material Room, the implementations in Poser are not always the easiest to comprehend. That turns the presentation of this topic into a mixture of Simple and Intermediate elements. Sorry for that.

Reflection Maps

First, the reflections can be faked by assigning just an image to it. For quite blurred reflections and an image which matches the surrounding scene quite well, this might work and will speed up rendering tremendously, which is a serious advantage in lengthy animations. It’s used often on chrome car accessories.

or

Note however that the brightness of such reflections is autonomous, independent of the surrounding lighting levels. So when the lights dim, or the object resides in a shadowy area, the intensity of this material property should be adjusted accordingly. Poser supports this, by multiplying the reflections by the brightness (and color) of the (diffuse) light on the surface of the object. The Reflection Lite Mult option (or Multiply with Lights in the Simple interface) caters for this, and is ON by default.

So, when I animate a car driving through a sunny lane with shadowy trees, and the shiny chrome wheels are made pseudo-reflective by using just images, then the reflectivity is dimmed when a wheel passes through a shadow.

The option should be OFF however when actual raytracing (see ‘third’ below) is used to handle the reflections because then the amount of reflected light is properly derived from the surroundings themselves.

Specularity

Second, specularity was introduced to create highlights, representing blurred reflections from direct light sources only. In Poser, an active specular channel of a direct spot-, point- or infinite light in combination with an active specular part in the objects material, are both required for getting such highlights. Note that indirect (IDL) lighting schemes as well as image based (IBL) lights deal with diffuse light only, and will not produce any highlights. See this lighting article on details.

Raytracing

Third, real raytracing can be implemented by plugging the raytrace node into the PoserSurface definition. This is directly available in the Advanced interface only. In the Simple interface, just choose the Raytrace option:

Note that in his case, those ‘real reflections’ will only consider the objects in the scene, and not the direct light sources around. To get the shine of lamps in the render, I either have to include some additional glowing objects in the scene, or I have to use specularity for this purpose. Also note, as said above, that the Reflection Lite Mult option (or: Multiply with Lights in the Simple interface) should be OFF for raytraced reflections as it serves the brightness adjustments of image based reflections (reflection maps). Raytracing makes the adjustments itself automatically, and having the option ON will then enforce the adjustments twice.

Plus… raytracing has to be enabled in the Render Settings, and the (maximum) amount of raytrace bounces has to be set high enough. That is: the highest value is the best as nature does not have any maximum at all, but some people report that lower values speed up their renders without a recognizable loss of quality. See the notes on Transparency below.

or

Poser offers Reflection Color, and in the Advanced interface Reflection Value as well. See

Also see this article on plugging Material Room nodes into the Reflection (and Refraction) slots of a PoserSurface material definition.

Advanced

For short: when I use Gamma Correction for my renders, I leave the Reflection_Value at 1.0 and adjust the color swatch instead.  And as discussed below, when I use transparency next to reflection, I use Alternate_Diffuse instead of the Reflection component. This happens to be a color swatch as well and so caters for the GC adjustment too. And when I’m not using GC or transparency, there are no losses in using Alternate_Diffuse anyway. So that is the preferred way of work.

Combining (raytraced) Reflections with Transparency

Most objects which are (semi)transparent, are reflective as well, at least to some extent. When I combine (raytraced) reflections with transparency in one PoserSurface, I have to take notice of various things.

  • The combination of raytraced reflections and transparency will generate internal reflections within the object. Poser does a reasonable (*) job handling these, but as the amount of ray bounces is about infinite, render times will go up immensely, and any reduction of Raytrace Bounces in the Render Settings might reduce the quality of the result.
  • Light which gets reflected cannot pass the surface, so for reflectivity R (say 80%) the transparency should not exceed 1-R (in this case: 20%) or vice versa. Otherwise, I’ll introduce some magical source of extra light, and things will start looking overly bright. In any case, I should not combine any reflectivity with 100% transparency, or 100% reflectivity with any transparency. Such a surface cannot exist.
  • In the Simple interface, and in the Advanced interface with an image_map or Reflect node plugged into the Reflection component, I have to balance transparency and reflectivity manually. Transparency does not reduce the Reflection component as it does with Diffuse. However, Transparency does work on the (Alternate_)Diffuse  component so when the Reflect node is plugged into Alternate_Diffuse, the reflection is reduced automatically in a correct proportion. That is: with a 90% surface transparency set, and reflectivity set to 80%, the final reflection will be reduced to 1-90% = 10% of that, making 8% net surface reflectivity. This then is boosted up due to internal reflections.
  • (*) due to internal reflections, the final reflectivity goes up to R*[1+T2/(1-R2)] for a surface reflectivity set to R and a surface transparency set to T. This is what Poser does, as it treats transparency as a surface property. With R=80%, T=20% we’ll get 89% final reflectivity. For a semi-transparent solid object however, the final reflectivity should go up to R*[ 1+T2/(1-(RT)2) ] which results in 83% with the same numbers filled in. This refers to only one-third of the earlier derived additional brightening from internal reflections. In the first (surface) model, the light bouncing around within the object is only absorbed when it passes the surface, leaving the object. In the latter (solid object) model, the light becomes absorbed while bouncing around in the object. Therefore, in the latter case internal reflections contribute less to the final result. Poser however does not support the volumetric approach, and so, when its surface transparency actually represents a volumetric effect, the internal reflections are (far) too strong. I can reduce the surface transparency a bit, for compensation.

Next >

What’s the Transparency component intended for?

Although I’ll grasp transparency from my own experience, and although most characteristics of it are available through the Simple interface into Material Room, its implementation in Poser is not the easiest to comprehend. That turns the presentation of this topic into a mixture of Simple, and Intermediate elements, plus some Advanced issues too. Sorry for that.

Formally stated, transparency is the ability of a surface to let light to pass through. Transparency is a number, 0-100%. When that number has different values at various spots on the subject, a (greyscale) image can be used. Note that – in Poser – the image is used in an inverted way: 100% or black means: fully transparent, while 0% or white means: fully opaque.

or  =>

See this article on how both Simple and Advanced interfaces relate.

The behavior of Transparency can also be stated in another way:

  • When it’s just a value, then that value represents transparency (100% is fully transparent)
  • When an image is attached to it (or any nodes are attached to it in Advanced interface), its meaning flips and the value is a multiplier for the resulting image_map which represents opaqueness instead: 1 (white) is fully opaque and 0 (black) is fully transparent.

More in detail

There are three different reasons surfaces can let light pass through:

  • Because of lacking material. This is a lace-like transparency, usually supported by an image (the transparency map) representing the pattern of this materials presence or absence. This is the way to drill holes in a wall or in a jacket, and let the background (or an underlying shirt) shine through. White means presence of material and black means absence. For very fine – and hence almost invisible – patterns (e.g. nylon stockings), a uniform grayscale or just a transparency value can be used instead.
  • Because a perfectly clear object is covered with a thin layer which filters all the light upon it. This is what’s meant by setting an intermediate value for transparency, or using an image (greyscale) map instead. Like the lace-like variant just mentioned, this thin-layer transparency is a pure surface effect. And in Poser, all object materials are surface properties.
  • Because the material filters and colors the light passing through, as is the case in liquids and glass; it’s a glass-like transparency. In this case, using a transparency value is the common way to represent the amount of light which can pass through. Any colors from an image map will be ignored, and the (volumetric) effect has to be translated to a surface effect. For instance, a surface transparency set to 90% will represent an object transparency of 90% x 90% = 81% regardless of local thickness and shape, as the light passes through the front and back surfaces. Poser can’t handle thickness and shape but presents some tricks for escape, see Edges & Bends below. When I want to color (filter) the light passing through I’ve got to use the Refraction_Color or the Alternate_Diffuse component, which is available through the Advanced interface only (see the Refraction article for details). Then things get complicated.

Note:

When the material has a diffuse (surface coloring) component too, then this will show as far as the material is non-transparent. The diffuse material will not show in the holes in the surface, as driven by the transparency-map. Do note that the more transparent a surface becomes, the less it gets colored as the color is a property of the non-transparent portion of the surface. The specular component however is not affected at all by the transparency settings, so transparent areas on the surface can be as shiny as less (or non-)transparent ones. This is good for thin-layer and glass-like transparency. But for lace-like transparent surfaces, the holes should not be shiny at all, as there is no material in place to reflect the lights. Hence, for such material the transparency patterns should be copied to the specular settings.
glass-like (highlights overall) <=>  lace-like (highlights on substance only)

The same holds for Ambient, Bump, Displacement, and Reflection: when there is no material then there can’t be a surface response to light. But I have to tell Poser myself, as Poser does not distinguish the various interpretations of transparency (lace-like vs layer/glass-like). When using the Advanced interface: Transparency also does affect Alternate_Diffuse but does not affect Translucence, Refraction or Alternate_Specular.

Edges and Bends

When I look at, or through, a (semi) transparent object with various curves and bends, I will note that the frontal view differs from the sides. For hollow objects, light rays passing the front and back might meet less material underway compared with rays traveling through the sides. For solid objects this might be the opposite. On top of that, various causes for light-bends (called Refraction), absorption and scattering will reduce the transparency of objects at the edges. Next to all this, in real life transparency depends on the angle towards the camera: perpendicular angles have a much higher transparency than skew ones; for the latter, light rays just bounce off, and transparency decreases while reflectivity goes up. This advanced effect (known as Fresnel) is supported by recent versions of Poser, at the cost of serious prolongation of render times and increased memory requirements.

So when one wants an improvement over just transparency, without requiring the high level of photorealism that comes with Refraction, Poser offers a way to cheat to compensate for its inability to handle any kind of volumetric effects:

  • Transparency_Edge defines the transparency at the edge, while
  • Transparancy_Falloff defines the thickness of the edge.

As Transparency 1.0 means fully transparent, the Edge should have a (much) lower value to mimic the mentioned effects in a believable way. The default is 0.0, completely opaque at the edges. When I do it the other way around however, and set the edges to a high value like 1.0 (combined with a low value for transparency), the edge will fade away like I’m presenting a gaseous, cloudlike object.

Small values for Falloff make a fast transition from edge to regular surface, and hence make a thin “surface” layer for the object. This surface thickness seems proportional to the size of the object, the Falloff is a percentage of something, it’s not an absolute value. And although results can become quite unnatural, high values like 10 and up are possible and allowed.

Note:

Although Edge and Falloff make some sort of skin or surface layer for a transparent object, there is no sharp boundary at the inside. As a result, these parameters cannot make a hollow object.

Raising Awareness

One image says it all: in Poser, yellow light passing through a red patterned-transparent ball will cast a patterned black shadow onto the object behind it, mixed with the yellow of the light. In nature, such a shadow would be red (as the passing light gets filtered).

Transparency won’t handle color at all, but it does make the pattern in the shadow. Diffuse will filter the light shining onto the ball and bouncing towards the camera. Refraction will sort filter the light passing through the ball from behind towards the camera. It’s objects only, and does not handle direct light at all but produces dark shadows instead.

Neither transparency, nor a diffuse or a refractive color will color-filter the light rays passing through the ball as such, and no reddening of the shadowed area will occur in any way.

Poser Firefly does have its limitations, and this is one of them.

Advanced

Transparency and the effect of Viewing and Lighting angles

Poser does not do anything with material properties or object thickness; it does not deal with object (volumetric) transparency but uses a surface transparency value instead. Poser behaves like a semi-transparent foil is wrapped around the object, and while the light passes through the object, the foil is passed twice. So, when the PoserSurface transparency is set to 70%, the object transparency equals about 50%, and the render will match nature’s behavior.

When the light passes under an angle, nature will reduce the transparency of the object because the path within the object (or through the foil, which does seem have some thickness anyway) becomes longer, and more light gets absorbed along the way.

The math: When – in real life – light passes a block or foil of semi-transparent material, with a thickness w (in meters or alike) and under an angle a, then a portion of that light will be taken out, and the remaining portion – known as object transparency – is exp{ -k*w/cos(a) }  with k being a constant describing the material itself. Low k values, close to zero, make high transparency and large values make low transparency. The same way thick objects (large w value) are less transparent than thin ones. But as Poser does not support material properties or thicknesses, all I can do is set a surface transparency T in PoserSurface. Then the final object transparency will be T2/cos(a) .

Poser does support this angular behavior, but not exactly. I guess because that would require too many calculations during the render. But as the following graph shows, it does a nice job:

This is for a block with 70% surface transparency. Light which comes straight through will be dimmed to 70% x 70% = 49% object transparency. When it passes at a 30° angle Poser (red line) will dim it to 40% while in nature (blue line) it will be 44%, and at 60° Poser will dim to 20% while nature will reveal 23%.

Conclusion: For an application which is not doing any volumetrics, and is not raytracing except when assigned to do so for specific surfaces (reflection, refraction), Poser does quite a nice attempt to stay close to “the real thing” in an efficient and effective way. Transparency is a surface property, as if a foil surrounds the object at hand, but that foil is supposed to have some finite thickness and Poser supports the angular dependency which comes from that. At the detailed level, it does show differences which cannot be eliminated any further. Poser does have its limitations, and this is one of them.

Transparency and the effect of Gamma Correction

Consider an object A blocked by another object B, that is: B will cast some shadows onto A. For various reasons those shadows tend to look overly dark. For instance, because in real life light scatters around in the air thanks to tiny dust particles floating around, and because ceilings, walls and objects in the scene scatter light around as well. Poser offers a correction mechanism for that: Gamma Correction (aka GC), present in Poser 10 and Pro 2010, and up. GC will brighten up shadows and will dim highlights to give the render a more pleasant and more realistic look. So far so good.

Now, consider object B to be partially transparent, say 90% per surface. Light passing from its front to back will be reduced to 90% x 90% = 81% and object A will just receive less light instead of no light at all in the deep shadow. That will be catered properly by GC again. Actually, GC will brighten up the dimmed area back to about 90%, and keep it in sync with all other shadows and shades in the scene. But any light from A, through B towards the camera will be dimmed to 81% as well as being filtered by B’s transparency too. And as Poser cannot tell the difference from all those dimming effects, shadowing or transparency or anything, this transparency effect is brightened up to about 90% as well. As a result, the object B looks far more transparent than it’s designed to be, thanks to GC.

Now what should I do? Should I let Transparency bypass the Gamma mechanism resulting in proper shadows and a slightly too bright object, or should I let Transparency participate in the Gamma mechanism, with probably a more accurate object but too dark shadows, which can be brightened up in other ways? This is discussed in detail, but for short: I should do the first. Transparency should bypass Gamma like Bump and Displacement do. The object will be a bit off then, but when I act the other way, it will be off as least twice as much.

Next >

What’s the Ambient component intended for?

For short: ambient make objects glow, and emit light independent of any lighting sources in the scene. This is to represent led-lights, or some phosphorescence of fluorescence effects.

=>

Note that light, and hence ambient glow as well, serves the visibility and presence of objects in the scene while shadows serve shape and surface structure details of an object. So, when using ambient glow, I will gain object visibility but I will lose some of the shape and surface details, and hence I’ll “flatten” the image. In other words, I should not overdo.

Intermediate

In Poser, Ambient (both Simple and Advanced interface) as well as its equivalent Translucence (Advanced interface only) will make an object glow. There are various reasons to have an Ambient component in the materials definition.

First, the truly legitimate reason, is to implement the objects glow as it appears in real life. Led-lights, or some phosphorescence of fluorescence effects, were already mentioned above.

Second, considered a half-legitimate reason, is to represent translucency as can be found in skin, wax candles and alike, in a render setup which is poor on raytracing and hardly supports sub-surface scattering. Early Poser versions, PC’s with less computing power, or the requirement for a massive output stream as in animations might be the reason for this. A resource intensive process is then replaced by a much faster process with – sometimes slightly – less realistic results.

Third, nowadays considered almost an illegitimate reason, is to compensate the object for poor lighting conditions at the spot. Adding some local point- or spotlights, and especially switching to indirect lighting (IDL) conditions supported by modern Poser versions, resolve the lighting issue the way it should be.

Some additional notes:

  • In contrast to Diffuse and Specular, there is no angular distribution of the light send towards the camera. Edges are as intense as areas in the middle part of the object, which makes it harder to distinguish shape details. This is the way nature works too, by approximation.
  • See this article on plugging Material Room nodes into the Ambient (and/or Translucency) slots of a PoserSurface material definition.
  • Ambient (and/or Translucency) generate some local lighting levels which are independent of the intensities of external sources of light. Hence, when I decide to dim the lighting levels in my scene to avoid overlighting, I’ve got to dim those Ambient aspects of the materials as well to keep the balance.
  • Ambient (and/or Translucency) are proper candidates for turning an object into a light source under indirect lighting (IDL) conditions. This is the way to make an all surrounding dome object lighting the entre scene. I may have to pump up the intensities though.

Recommendations:

  • To prevent artefacts in rendering when applying the Gamma mechanism (recommended, available in PoserPro and Poser 10 and up) the Value setting should be kept to 1.0 only (or 0.0 but no intermediate values).
  • To prevent overlighting when combined with other aspects of lighting and material definitions, it’s recommended not to exceed a (100% – (Diffuse+Specular)) brightness in the Color-swatch and maps (or in the Value setting when not applying Gamma). So with Diffuse set to 70% and Specularity set to 20%, Ambient should be limited to 10% at most. See this article on details.

Next >

What’s the Specular / Highlight component intended for?

For short: specularity makes highlights on an object surface, representing the (blurred) reflections of the direct lights (infinite, spot, point) in the scene. Although color and an eventual image map both work as an extra filter, such a coloring filter should be applied to make believable metallic surfaces only (metallic car paint included). In the vast majority of cases, the color swatch should be a shade of grey. Small highlight sizes represent hard, smooth surfaces.

Note that in Poser IBL (image based lights) and IDL (indirect lighting) cannot make highlights themselves, I do need regular direct lights in my scene to do so.

More in detail

When light hits an object surface, some portion of it might get reflected. In the good old days, when computers were short of raw CPU power, this handling of reflecting light rays was something to be avoided in order to get industrial render projects done in due time.

Faking reflections by using images of the surrounding scene (‘reflection maps’) was one way to get out, and another one was to concentrate on the – usually blurred – highlight producing reflections of the direct lights in the scene only. The latter is referred to as specularity.

In nature, as well in modern ray-tracing based renderers like LuxRender or Octane, there is reflection only, handling all sorts of light. But Poser supports the easy to calculate Specularity for direct lights, and the more computational intense Reflection for the indirect light bouncing (or emitted otherwise) from objects in the scene. Two sides of the same coin, served separately for convenience especially aimed at reducing time and resource requirements at rendering. The downside is that I have to cater for both aspects separately in my material definition.

Intermediate

The Advanced interface into Poser Material Room offers a Specular_Color which makes it the equivalent of Simple interface, and offers a Specular_Value next to it which acts as an extra filter. Intensities are reduced with that factor, and it can be driven by a (greyscale) image map as well. This way one can easily make non-reflective stains on a surface. See the various articles on how both Simple and Advanced interfaces relate, and on the way Colors and Values work together.

Recommendations:

  • To prevent artefacts in rendering when applying the Gamma mechanism (recommended, available in PoserPro and Poser 10 and up) the Value setting should be kept to 1.0 only (or 0.0 but no intermediate values).
  • To prevent overlighting when combined with other aspects of lighting and material definitions, it’s recommended not to exceed a (100% – Diffuse) brightness in the Color-swatch and maps (or in the Value setting when not applying Gamma). So with Diffuse set to 80%, Specularity should not exceed 20%. Click here for details.

Highlight_Size, available in Simple as well as in Advanced interface, is a straightforward parameter: small values make small, intense highlights representing hard, smooth, shiny surfaces while larger values make larger, blurred highlights instead. Like for Diffuse, Poser offers a Specular node (Advanced interface only) which offers features similar to the Specular component in the PoserSurface. See the respective acrticles on assigning either an image or a movie respectively to the Specular slots.

Making Highlights

As said, Poser discriminates between Reflecting (diffuse) light from objects, and Specular light from direct light sources in the scene. To do so, direct lights in Poser offer a diffuse as well as an independent specular component. The first component will trigger responses from the Diffuse part in the material definition (and similar parts as well) while the second component of the direct light will trigger responses from the Specular part in the definition.

<=>

The Diffuse and Specular components in the Light relate to the Diffuse and Specular components in the Material definition of an object.

So, in order to get highlights, I need this Specular component in the direct lights in the scene to be available. But I can black out the diffuse component, turning the light into a Specular-only one.

The shape of Highlights

Although Poser is not raytracing to derive the specular highlights, the blurred highlights are still decently described by the “angle in equals angle out” concept as is the case with mirrors. This implies that the outgoing light intensity is highest in a direction determined by the angle of the surface with the incoming light. Around that “angle out” range the intensity drops – depending on the highlight size. Unfortunately, and though it calculates and renders pretty fast, the standard highlighting method produces quite unrealistic results and makes everything look like a bad representation of hard plastic.

This is why Poser offers additional features via the Advanced interface, especially alternatives for the Specular node, like Blinn, or Anisotropic for microscopically grooved surfaces.

Next >