Object Lightprobe Add
Adding indirect lighting to your avatar's real-time scene
- BPY_OBJ
- location
- rotation
- scale
- BPY_OBJ
Direct lights are only half a scene's lighting. The other half is indirect light - the bounce that makes shadows feel grounded and corners readable. In Blender's EEVEE (the real-time engine this pack's avatars are aimed at), indirect light comes from light probes: cubemaps for reflections, planar probes for flat surfaces, and irradiance volumes (grids) for ambient light in a volume of space.
Object_LightprobeAdd is the node that drops a probe into the embedded scene - bpy.ops.object.lightprobe_add() exposed in the Avatar Graph pack. If your avatar preview looks flat and the mesh details vanish in shadow, a probe (usually a grid) is the missing piece.
The inputs that matter
type- CUBEMAP, PLANAR, or GRID. For a character scene, GRID (irradiance volume) is the workhorse: it samples ambient light through a volume and is what EEVEE uses for soft indirect light. CUBEMAP is for shiny/reflective materials. PLANAR for mirrors/ground planes.location,rotation,scale- B_VECTOR3 values from the pack's Vector 3D (Blender) node. For a GRID probe, location centers it on the avatar and scale sets its size - get the avatar inside the grid or you'll see no benefit.radius- probe radius (mostly relevant to cubemaps).align- WORLD / VIEW / CURSOR orientation at creation.enter_editmode- whether the new probe lands in edit mode (default off; you don't want that in a graph).
BPY_OBJ sets active context and passes through; the probe is added to the scene but not returned by this node.
How it works
It passes your params to the Blender operator, which creates a probe object in the embedded scene. Probes do nothing until you bake them (see Object_LightprobeCacheBake) - adding a probe alone changes nothing visually. So the mental model is: add light → add grid probe around the character → bake → preview looks alive.
When you'd use it in an avatar graph
Whenever the avatar has ambient/skin shading that looks flat under direct light alone. Typical starter setup: one SUN key light, one GRID probe centered on the character with a radius covering head-to-waist, then bake. If the character's cheeks and undersides go dead black, that's missing ambient - the probe fixes it.
Installing it
Part of Avatar Graph (avatechai/avatar-graph-comfyui). ComfyUI Manager: search "Avatar Graph". Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui && python -m pip install -r requirements.txt
Pack constraints: bpy==3.6.0 requires Python 3.10.x, and first launch downloads the SAM ViT-H checkpoint (~2.5 GB) plus MediaPipe models.
Common issues
The biggest one is expecting a probe to do something before baking - it won't; you need Object_LightprobeCacheBake. Second is grid placement: a probe whose volume doesn't cover the character contributes nothing. And if you're exporting a GLB for the web, remember probes are an EEVEE/editor thing - check whether your target viewer supports baked indirect light at all. The README warns the pack is still changing, so probe behavior (heh) can shift between versions.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| typeopt | COMBO | 3 options: CUBEMAP, PLANAR, GRID | |
| radiusopt | FLOAT | 1.000–999999995904 | — |
| enter_editmodeopt | BOOLEAN | false | — |
| alignopt | COMBO | 3 options: WORLD, VIEW, CURSOR | |
| locationopt | B_VECTOR3 | — | |
| rotationopt | B_VECTOR3 | — | |
| scaleopt | B_VECTOR3 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |