ForMatter/Materials/smart/Thermochromic Pigment
mat_smart_thermochromic_pigment

Thermochromic Pigment

encapsulated leuco-dye thermochromic, reversible · thermochromic ink, color-change pigment, leuco-dye thermochromic
metallic 0.00
hue shift +0°

Pigment that changes color (or goes invisible) at a chosen temperature — most commonly between two states across a 5–10 °C transition window. Mood rings, the temperature-sensing strip on a baby's bath, the cold-activated print on a beer label, the disappearing-ink demo of a science-museum gift shop. Reversible thousands of times, but UV-sensitive and not suitable for outdoor service without protection.

Microencapsulated leuco-dye / weak-acid / nonpolar-solvent system, encapsulated in 3–5 µm gelatin or polyurethane shells. Below the activation temperature the leuco dye is in its colored form (acid-protonated); above, the solvent melts and the dye reverts to colorless. Activation temperatures can be tuned across -15 °C to 65 °C by solvent selection. UV-degrades over 6–24 months in direct sunlight; service life depends heavily on UV protection and operating-temperature range.

thermal

  • activation_temp_c_typical31
  • transition_window_c8
source: Chromazone / LCR Hallcrest technical bulletin

Sustainability

  • embodied carbon kg co2e per kg5.0
  • sourceEditorial estimate from ICE / Granta CES EduPack class databases — industry mean, with cradle-to-gate boundary unless otherwise noted. Embodied carbon for any specific product depends on supplier mix, recycled content, and energy grid; verify against a primary source before using these numbers in a sustainability claim.
  • recyclabilitylow — additive in mixed-material parts is rarely separable
  • biodegradableFalse
visual
color-change behavior is the visible defining property — typically saturated color below activation, colorless / light pastel above

PBR starter values

Principled BSDF defaults derived from the sphere iridescent finish. Reasonable seed for Blender, Substance, Keyshot, Rhino — tune per material.

# finish:      iridescent
albedo        #d8a8a8
metallic      0.70
roughness     0.30
ior           1.45
transmission  0.00
clearcoat     0.50
sheen         0.50
anisotropic   0.00
copy as JSON
{
  "albedo": "#d8a8a8",
  "metallic": 0.7,
  "roughness": 0.3,
  "ior": 1.45,
  "transmission": 0.0,
  "clearcoat": 0.5,
  "sheen": 0.5,
  "anisotropic": 0.0
}
Blender 4.x Python
# Blender 4.x — Principled BSDF
# Thermochromic Pigment · finish: iridescent
import bpy
mat = bpy.data.materials.new(name="mat_smart_thermochromic_pigment")
mat.use_nodes = True
bsdf = mat.node_tree.nodes["Principled BSDF"]
bsdf.inputs["Base Color"].default_value         = (0.6867, 0.3916, 0.3916, 1.0)
bsdf.inputs["Metallic"].default_value           = 0.700
bsdf.inputs["Roughness"].default_value          = 0.300
bsdf.inputs["IOR"].default_value                = 1.450
bsdf.inputs["Transmission Weight"].default_value = 0.000
bsdf.inputs["Coat Weight"].default_value        = 0.500
bsdf.inputs["Sheen Weight"].default_value       = 0.500
bsdf.inputs["Anisotropic"].default_value        = 0.000
KeyShot Python (lux)
# KeyShot 11+ — lux Python API, Generic material
# Thermochromic Pigment · finish: iridescent
# Run from Window → Scripting Console
import lux
mat = lux.createMaterial(name="mat_smart_thermochromic_pigment", materialType="Generic")
mat.setProperty("diffuse",      (216, 168, 168))   # 8-bit sRGB
mat.setProperty("metallic",     0.700)
mat.setProperty("roughness",    0.300)
mat.setProperty("indexOfRefraction", 1.450)
mat.setProperty("transparency", 0.000)
mat.setProperty("coatingWeight", 0.500)
Substance pbrMetalRough
{
  "_format": "Substance Designer / Painter \u2014 pbrMetalRough constants",
  "_about": "Thermochromic Pigment \u00b7 finish: iridescent",
  "baseColor": {
    "r": 0.6867,
    "g": 0.3916,
    "b": 0.3916
  },
  "metallic": 0.7,
  "roughness": 0.3,
  "ior": 1.45,
  "opacity": 1.0,
  "anisotropyLevel": 0.0,
  "_notes": "Channels listed are the standard Substance pbrMetalRough output. Drop into a Uniform Color node per channel, or as the constant input on a layered stack."
}
glTF 2.0 Metallic-Roughness
{
  "asset": {
    "version": "2.0",
    "generator": "ForMatter"
  },
  "materials": [
    {
      "name": "mat_smart_thermochromic_pigment",
      "pbrMetallicRoughness": {
        "baseColorFactor": [
          0.6867,
          0.3916,
          0.3916,
          1.0
        ],
        "metallicFactor": 0.7,
        "roughnessFactor": 0.3
      },
      "extensions": {
        "KHR_materials_ior": {
          "ior": 1.45
        },
        "KHR_materials_clearcoat": {
          "clearcoatFactor": 0.5
        },
        "KHR_materials_sheen": {
          "sheenColorFactor": [
            1.0,
            1.0,
            1.0
          ],
          "sheenRoughnessFactor": 0.5
        }
      }
    }
  ]
}
USD Preview Surface
# USD Preview Surface — UsdShade.MaterialLook prim attributes
# Thermochromic Pigment · finish: iridescent
def Material "mat_smart_thermochromic_pigment" {
    token outputs:surface.connect = </mat_smart_thermochromic_pigment/PreviewSurface.outputs:surface>

    def Shader "PreviewSurface" {
        uniform token info:id = "UsdPreviewSurface"
        color3f inputs:diffuseColor = (0.6867, 0.3916, 0.3916)
        float   inputs:metallic     = 0.700
        float   inputs:roughness    = 0.300
        float   inputs:ior          = 1.450
        float   inputs:opacity      = 1.000
        float   inputs:clearcoat    = 0.500
        token   outputs:surface
    }
}
↓ download glTF material