Transform Shear
The Skew Tool for Stylized Deformation
- BPY_OBJ
- orient_type
- orient_matrix
- orient_matrix_type
- BPY_OBJ
Transform Shear is how you push an avatar's geometry into a stylized slant. In Blender terms it's bpy.ops.transform.shear - the skew operator that shifts vertices sideways by an amount proportional to their position along another axis. Think italic text, a comic-book panel tilt, or the whole head of your character leaning into a smug angle. It's the tool that's genuinely fun to play with once you realize the pack lets you drive real Blender math from a ComfyUI graph.
How it works
Like every node in the Transform_ family, this one is an auto-generated wrapper. The pack's blender_node.py takes a BPY_OBJ input, sets it as the active object, drops into edit mode, and calls the operator with whatever you've set. Shear then skews the mesh: the value float is the amount of shear (negative flips the direction), and orient_axis picks the axis that does the sliding while orient_axis_ortho picks the axis the skew scales along. orient_type lets you run the whole thing in GLOBAL, LOCAL, NORMAL, or any other orientation space.
The inputs that matter for a beginner:
value- shear amount. Start small, like ±0.5, and watch it in the preview.orient_axis/orient_axis_ortho- which axes do the work. X + Y is the classic "lean it sideways" pairing.use_proportional_edit- enable this with a largeproportional_sizeand the shear falls off from the transform pivot instead of hitting the whole mesh uniformly. This is how you get a subtle, organic slant rather than a hard italic skew.
Everything else (snap, mirror, falloff curves, release_confirm) is carried over from Blender's operator and is safe to leave alone. Output is BPY_OBJ - the same mesh, so you chain it into the next node.
Where you'd actually use it
In the avatar pipeline, shear is a secondary shaping tool. You're usually deforming a part mesh - the mouth layer, an eye, a hair piece - not the whole character. Since these nodes act on the entire mesh they're handed (there's no vertex-selection input), make sure you're feeding the right layer from Create Mesh Layer / segmentation, not the joined final mesh. A common trick: shear the mouth mesh slightly for a smirk expression before baking shape keys with Mesh Modify Shape Key.
Installing
Shear ships in the Avatar Graph pack (avatechai/avatar-graph-comfyui), which embeds headless Blender via bpy==3.6.0 - that pins you to Python 3.10:
conda create --name comfyui python=3.10
conda activate comfyui
Install through ComfyUI Manager (search Avatar Graph) or:
cd ComfyUI/custom_nodes
git clone https://github.com/avatechai/avatar-graph-comfyui
cd avatar-graph-comfyui && python -m pip install -r requirements.txt
Restart ComfyUI with python main.py --enable-cors-header for the live preview. And a warning that's worth repeating: this node shears the entire mesh it receives. If you wanted only part of it skewed, that part has to be its own mesh layer already.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| BPY_OBJopt | BPY_OBJ | — | |
| valueopt | FLOAT | 0.00-3.402823466385289e+38–3.402823466385289e+38 | — |
| orient_axisopt | COMBO | 3 options: X, Y, Z | |
| orient_axis_orthoopt | COMBO | 3 options: X, Y, Z | |
| orient_typeopt | B_ENUM | — | |
| orient_matrixopt | B_VECTOR9 | — | |
| orient_matrix_typeopt | B_ENUM | — | |
| mirroropt | BOOLEAN | false | — |
| use_proportional_editopt | BOOLEAN | false | — |
| proportional_edit_falloffopt | COMBO | 8 options: SMOOTH, SPHERE, ROOT, INVERSE_SQUARE, SHARP, LINEAR, +2 | |
| proportional_sizeopt | FLOAT | 1.009.999999974752427e-7–999999995904 | — |
| use_proportional_connectedopt | BOOLEAN | false | — |
| use_proportional_projectedopt | BOOLEAN | false | — |
| snapopt | BOOLEAN | false | — |
| gpencil_strokesopt | BOOLEAN | false | — |
| release_confirmopt | BOOLEAN | false | — |
| use_accurateopt | BOOLEAN | false | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| BPY_OBJ | BPY_OBJ | — |