5
$\begingroup$

Is it possible to paint vertex colors that are higher than one?

Vertex colors are exposed through the python API as floating point numbers. If this is how they're stored, they should happily accept any value without clamping to [0-1], even negative values.

Potential uses include per-vertex light emission or material hardness.

$\endgroup$
6
  • $\begingroup$ It is probably supported internally, but the UI doesn't seem to allow doing this. At least from my quick look at it, but I don't use vertex paint often. Maybe through scripting or the API you can do that. $\endgroup$ May 22, 2016 at 0:15
  • 1
    $\begingroup$ Attempts to modify the brush color (bpy.data.brushes["Draw"].color) with Python seem to instantly clamp it to [0-1]. This is probably impossible without modifying blender. $\endgroup$ May 22, 2016 at 0:37
  • $\begingroup$ In the page you linked to it does say float between 0 and 1 so I guess it's not supported at all $\endgroup$ May 22, 2016 at 0:45
  • $\begingroup$ You can add a custom vertex float layer as outlined blender.org/api/blender_python_api_2_77_0/… blender.stackexchange.com/questions/36710/… $\endgroup$
    – batFINGER
    May 22, 2016 at 5:45
  • $\begingroup$ How would that make sense, color-wise? 0 is the lowest-possible value while 1 is the highest-possible value. Setting for example all R,G and B values to one will produce white, all set to zero produce black. $\endgroup$ May 22, 2016 at 6:57

1 Answer 1

4
$\begingroup$

Yes vertex colours are exposed as three floating point values, but in the background they are stored as three integers that are clamped to values between 0 and 255. You can see the actual code doing that here.

This would be a decision made to conserve space, a floating point value uses 4 bytes of RAM while the integer used fits in 1 byte, that saves 9 bytes for each vertex. This leads to being limited to the 16.7 million colours that can be stored in a 24bit RGB image when using vertex painting.

Blender supports image formats that store float values, so you could look at using an image texture to get more variation in your materials.

$\endgroup$
2
  • 1
    $\begingroup$ But that´s a blender limitation right? what about an fbx or obj? $\endgroup$
    – Badjano
    May 27, 2020 at 0:14
  • 1
    $\begingroup$ @Badjano yes it is how blender stores the data. If fbx or obj export vertex colours as float values they would be clamped to 0-1 when imported into blender, and as blender only holds the 0-1 value it will always export in that range. This still applies with v2.83 $\endgroup$
    – sambler
    May 31, 2020 at 4:28

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .