← All ideas
  • Published 3 Jun 2019

Cycles - Black Body Node Update

Cycles black body node needs some attention. Currently it only has a limited range at the blue end (around 12,000K) and also produces non-normalised output (i.e. RGB values above 1).

My proposal

  1. Expand the temperature range of the black body node up to around 40,000K as detailed in the link below. This would then cover the full range of black body colours available (the black body colour doesn't change with any increase in temperature above 40,000K).

vendian.org/mncharity/dir3/blackbody/

  1. Normalise the black body RGB colour output into the 0-1 range to give a more consistent and predictable results. RGB values above 1 break energy conservation and can lead to weird results.

  2. Consider adding a second output to the node in order to output luminous intensity based on temperature as well. According to Plank's law, the luminous intensity of an object is equivalent to the 4th power of it's temperature.

These changes would allow simulation of hot objects like blue-giant stars and would also allow simulation of emissive hot metal, with a physically accurate increase in luminosity as well as colour temperature.

I created a node group to implement this functionality (see below) - but it would be nice if the inbuilt node handled this out of the box.

blendswap.com/blends/view/73284

100%

Development Status: Open

Upvote 14 Downvote 0
leejo8
3 Jun 2019

9 Comments

Josephbburg

I think Normalize should be a checkbox, maybe. Any reason why the vector math node can't be used here?

1
leejo8 Author

* @Josephbburg * Is there a reason why non-normalised values would be at all desirable in most normal use cases?

Surely normalised should be the default behavior, and if you want to overdrive colours for a specific niche purpose, you would use colour modifying nodes (like brightness/contrast, saturation etc) or math nodes.

Does the vector math node work with RGB values?

Josephbburg

* @leejo8 * I use it with an emission node while constructing fire shaders from time to time, although the Principled Volume does this in one node. Blender treats all node inputs the same (except for BSDF/closure). So an RGB is just three black-and-white channels, and the same is true for a vector. The difference is merely for keeping it visually intuitive. Also color inputs will never have negative values (but can be if modified somehow).

MizManFryingP

* @leejo8 * I'm no physicist but if blackbody is how hot an object is, the hotter the object, the more emissive it is, right? It makes sense that using a very hot temperature would affect the intensity of the color in my opinion, don't you agree? Especially since blender uses Filmic color now, the colors aren't capped anymore.

It could be beneficial to have a checkbox for normalized colors though.

Regardless of this, I agree with your proposal!

2
Josephbburg

* @MizManFryingP * Yes, this is exactly my reason. Fire color and brightness is easy to control this way.

leejo8 Author

* @MizManFryingP * That is true - hence why part of my proposal is to add an emission output.

The RGBs being normalized isn't about the overall emission though - it's about bringing the overall values of RGBs into a defined normalised range (0-1).

The relative ratio between the RGBs would still be the same based on temperature.

MickHanks

dose the blackbody node NOT behave correctly if you setup the classical blackbody experiment in blender?

leejo8 Author

* @othoap * Not sure what you mean - can you elaborate?

MickHanks

* @leejo8 * I always thought the CGI blackbody was based on the incorrect Kirchhoff theory and not Stewart's. Only a model (not real) could have absolutely no inherent radiation.