Object Shaderfx Move Down
The other half of the reorder pair
- BPY_OBJ
- BPY_OBJ
If Object Shaderfx Move Up is the "nudge toward the top" button, this is its mirror image. Object Shaderfx Move Down wraps bpy.ops.object.shaderfx_move_down and shifts a named shader effect one slot toward the bottom of a Grease Pencil object's effect stack. Same job, opposite direction, zero surprises.
You'll use these two together more often than either alone. Say your Outline needs to sit above your Blur for the look you want - you add both, then move the Blur down so it doesn't smudge the line work. That's this node's whole reason to exist.
How it works
It's an auto-generated wrapper like every Object_* node in this pack. The pack scans Blender's operator list, creates a node class per bpy.ops.object.* entry, and registers them all under the blender category. At execution the embedded headless Blender makes your incoming BPY_OBJ the active object, runs the operator, and returns the same object - a clean pass-through so you can keep chaining nodes downstream.
The inputs that matter
Just two, and neither has hidden depth:
BPY_OBJ- the object holding the effect stack.shaderfx- the name of the effect to move down, case-sensitive, and it must already exist on the object.
Output is the same BPY_OBJ you put in.
Install
Shared with the whole Avatar Graph pack - no separate install for this node. Via ComfyUI Manager, search Avatar Graph and install, or clone manually:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui
python -m pip install -r requirements.txt
The two real-world bumps: the pack pins bpy==3.6.0, which only has wheels for Python 3.10 (the README suggests a conda env), and the first import downloads the SAM ViT-H checkpoint (~2.5 GB) plus MediaPipe face/pose landmarkers before it finishes loading. Not a hang - a download.
Common issues
Same failure mode as its sibling: a wrong or missing effect name means the operator logs a warning and nothing visibly changes. And because the Blender scene is one shared in-memory instance that these nodes mutate in place, reordering persists across queue runs. If you're debugging a stack that looks wrong on the second run, remember the state from run one is still sitting there.
One honest note: for a basic eye-blink and lipsync avatar you will probably never touch the shader FX reorder nodes. They matter when your character carries layered toon effects - Glow on top of Rim, Outline fighting a Pixelate - and you need deterministic ordering. Good to know they exist, easy to ignore until you don't.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| shaderfxopt | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |