ComfyUI Extension: Avatar Graph
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.
Include nodes for sam + bpy operation, that allows workflow creations for generative 2d character rig.
Looking for a different extension?
Custom Nodes (634)
- Mesh Extrude Region Move
- Object Set Is Runtime Data
- Object Call Asset Clear
- Object Set Show Bounds
- Match Texture Aspect Ratio
- Object Rotation Clear
- Object Vertex Group Normalize
- Object Paths Clear
- Mesh Dupli Extrude Cursor
- Object Set Empty Image Side
- Object Set Hide Render
- Object Set Is Missing
- Object Anim Transforms To Deltas
- Mesh Separate
- ExportBlendshapes
- Object Transfer Mode
- Object Surfacedeform Bind
- Mesh Rip Edge Move
- Mesh Select Mirror
- Object Vertex Group Invert
- Object Call Animation Data Clear
- Object Constraints Clear
- Object Location Clear
- Object Lineart Clear All
- Object Multires Rebuild Subdiv
- Object Vertex Group Copy
- Object Editmode Toggle
- Object Vertex Group Select
- Object Vertex Parent Set
- Object Gpencil Modifier Move To Index
- Object Hook Reset
- Object Call Animation Data Create
- Object Call User Of Id
- UV Paste
- UV Select Less
- Mesh Polybuild Dissolve At Cursor
- Mesh Extrude Context Move
- Mesh Duplicate Move
- Mesh Polybuild Split At Cursor Move
- Mesh Polybuild Transform At Cursor Move
- Object Shaderfx Copy
- Mesh Select More
- Extract Boundary Points
- Object Set Hide Viewport
- Object Set Is Embedded Data
- Object Set Is From Set
- Mesh Edgering Select
- Mesh Extrude Region
- Mesh Solidify
- Object Forcefield Toggle
- Mesh Loopcut Slide
- Edit Ops
- Context Set Transform Pivot Point
- Mesh Blend From Shape
- Mesh Delete
- Mesh Polybuild Extrude At Cursor Move
- Mesh Face Split By Edges
- Object Collection Link
- Mesh Select Next Item
- Mesh Split
- Object Bake Image
- Object Hide Render Clear All
- Assign Vertex Group Ops
- Mesh Uv Texture Add
- Mesh Merge Normals
- Object Select Same Collection
- Object Collection Remove
- Object Vertex Group Add
- Object Set Is Holdout
- Blender Render Image
- Save Image With Workflow
- Mesh Polybuild Face At Cursor Move
- Object Quick Smoke
- Object Hook Add Selob
- Object Face Map Remove From
- Mesh Extrude Region Shrink Fatten
- Mesh Faces Shade Smooth
- Mesh Merge
- Create Mesh Layer
- Mesh Bevel
- Object Hook Select
- Mesh Bisect
- Mesh Colors Rotate
- Mesh Convex Hull
- Mesh Customdata Skin Clear
- Mesh Edge Split
- Object Skin Radii Equalize
- Mesh Edges Select Sharp
- Mesh Intersect
- Mesh Extrude Verts Indiv
- Mesh Faces Mirror Uv
- Mesh Fill Grid
- Mesh Mark Seam
- Mesh Normals Tools
- Mesh Offset Edge Loops
- Object Track Clear
- Mesh Paint Mask Slice
- Mesh Point Normals
- Mesh Remove Doubles
- Object Shaderfx Move To Index
- Mesh Knife Project
- Mesh Mark Freestyle Face
- Object Duplicates Make Real
- Object Shape Key Remove
- LoadImageWithAlpha
- Mesh Rip Edge
- Object Clear Override Library
- Mesh Select Face By Sides
- Mesh Select Interior Faces
- Mesh Spin
- Object Voxel Remesh
- Mesh Symmetrize
- Load Value From Request
- Mesh Unsubdivide
- Object Gpencil Modifier Move Up
- Object Add
- Mesh Rip Move
- Object Align
- Object Hook Add Newob
- Object Collection External Asset Drop
- Object Constraint Add With Targets
- Object Correctivesmooth Bind
- Object Data Transfer
- Object Delete
- Object Drop Geometry Nodes
- Object Constraints Copy
- Object Face Map Deselect
- Object Geometry Nodes Input Attribute Toggle
- Object Geometry Node Tree Copy Assign
- Object Geometry Nodes Move To Nodes
- Object Gpencil Modifier Copy
- Object Gpencil Modifier Move Down
- Object Gpencil Modifier Remove
- Object Join Shapes
- Object Laplaciandeform Bind
- Object Light Add
- Object Lightprobe Add
- Object Lightprobe Cache Bake
- Object Lineart Bake Strokes All
- Object Load Background Image
- Object Load Reference Image
- Object Material Slot Copy
- Object Modifier Add
- Object Modifier Apply
- Object Modifier Apply As Shapekey
- UV Pack Islands
- Object Modifier Copy
- Object Origin Set
- Object Paths Calculate
- Object Paths Update Visible
- Object Vertex Group Assign New
- Object Quick Fur
- Object Select Mirror
- Object Shade Flat
- Object Shape Key Move
- Object Skin Armature Create
- Object Skin Loose Mark Clear
- Object Text Add
- Object Set Empty Display Type
- Object Hook Remove
- Object Set Instance Faces Scale
- Object Voxel Size Edit
- Object Vertex Group Lock
- Object Set Mode
- Mesh Primitive Cube Add
- Combine Points
- Object Set Instance Type
- Transform Bend
- Object Set Show Name
- Mesh Select Loose
- Object Vertex Group Assign
- Object Set Type
- Transform Rotate
- Object Set Use Fake User
- Transform Seq Slide
- UV Modifier
- Transform Select Orientation
- Transform Tosphere
- Transform Transform
- Transform Translate
- Transform Vert Crease
- Object Set Users
- UV Align Rotation
- Transform Vertex Random
- Object Set Show Empty Image Orthographic
- Object Set Display Type
- Object Set Empty Image Depth
- Object Set Is Evaluated
- Object Set Use Empty Image Alpha
- Object Set Show Wire
- Object Set Use Instance Vertices Rotation
- Object Call Calc Matrix Camera
- Object Call Closest Point On Mesh
- Object Call Crazyspace Displacement To Deformed
- Object Call Crazyspace Eval
- Object Call Crazyspace Eval Clear
- Object Call Evaluated Get
- Object Call User Clear
- Object Call User Remap
- UV Randomize Uv Transform
- UV Weld
- To Group Ops
- Object Set Visible Camera
- Object Mesh From Texture
- Object Assign Texture
- Object Set Visible Volume Scatter
- Get Image Width Height
- Object Vertex Group New With Name
- Create Mesh Layer (Advanced)
- ENUM (Blender)
- Object Call Is Modified
- Object Call Shape Key Remove
- Object Call Visible Get
- UV Select Linked
- Mesh Uvs Rotate
- Object Parent Inverse Apply
- Object Constraint Add
- Object Set Is Shadow Catcher
- Object Instance Offset To Cursor
- Object Shape Key Retime
- Object Shape Key Transfer
- Object Transforms To Deltas
- Object Vertex Group Move
- UV Cursor Set
- Object Vertex Weight Copy
- Object Set Use Camera Lock Parent
- Object Call Local View Set
- Object Track Set
- Object Set Pass Index
- Object Set Show All Edges
- Object Mode Set
- Mesh Select Ungrouped
- Object Set Lock Rotation W
- Object Call Local View Get
- UV Select More
- Object Set Show Axis
- Object Make Links Data
- Object Vertex Group Remove From
- Mesh Dissolve Faces
- Object Curves Random Add
- Object Set Show In Front
- Object Set Use Mesh Mirror Y
- Plane Texture Unwrap
- Object Collection Add
- Object Hook Assign
- Object Vertex Group Quantize
- Object Vertex Weight Paste
- UV Select Lasso
- UV Reveal
- Object Quick Liquid
- Mesh Primitive Cube Add Gizmo
- Mesh Smooth Normals
- Object Set Visible Diffuse
- UV Select All
- UV Select Edge Ring
- Object Set Add Rest Position Attribute
- Object Set Use Mesh Mirror Z
- Object Make Dupli Face
- Vector 4D (Blender)
- Vector 3D (Blender)
- Avatar Main Output
- Join Meshes
- Create Shape Flow
- ExportGLTF
- UV Reset
- Get First Obj Ops
- Mesh Attribute Set
- Mesh Average Normals
- Mesh Beautify Fill
- Mesh Colors Reverse
- Mesh Customdata Bevel Weight Vertex Add
- Mesh Customdata Bevel Weight Edge Add
- Mesh Customdata Bevel Weight Vertex Clear
- Mesh Customdata Crease Vertex Add
- Mesh Customdata Crease Vertex Clear
- Mesh Customdata Custom Splitnormals Add
- Mesh Decimate
- Mesh Delete Loose
- Mesh Dissolve Limited
- Mesh Dissolve Verts
- Mesh Duplicate
- Mesh Extrude Edges Move
- Mesh Extrude Faces Indiv
- Mesh Extrude Manifold
- Mesh Face Make Planar
- Mesh Faces Select Linked Flat
- Mesh Faces Shade Flat
- Mesh Flip Normals
- Mesh Flip Quad Tessellation
- Mesh Hide
- Mesh Inset
- Mesh Intersect Boolean
- Mesh Knife Tool
- Mesh Loop Multi Select
- Mesh Loop Select
- Mesh Loopcut
- Mesh Mark Freestyle Edge
- Mesh Mod Weighted Strength
- Mesh Paint Mask Extract
- Mesh Poke
- Mesh Polybuild Delete At Cursor
- Mesh Polybuild Face At Cursor
- Mesh Polybuild Split At Cursor
- Mesh Quads Convert To Tris
- Mesh Region To Loop
- Mesh Reveal
- Mesh Rip
- Mesh Select Linked Pick
- Mesh Fill
- Mesh Screw
- Mesh Select Linked
- Mesh Select Mode
- Mesh Select Non Manifold
- Mesh Select Nth
- Mesh Select Prev Item
- Mesh Select Random
- Mesh Select Similar
- Mesh Select Similar Region
- Mesh Set Normals From Faces
- Mesh Shape Propagate To All
- Mesh Shortest Path Pick
- Mesh Shortest Path Select
- Mesh Sort Elements
- Mesh Subdivide
- Mesh Subdivide Edgering
- Object Modifier Convert
- Mesh Symmetry Snap
- Mesh Tris Convert To Quads
- Mesh Uv Texture Remove
- Mesh Vert Connect Concave
- Mesh Vert Connect Nonplanar
- Mesh Vert Connect Path
- Mesh Vertices Smooth
- Mesh Vertices Smooth Laplacian
- Mesh Wireframe
- Object Add Named
- Object Assign Property Defaults
- Object Bake
- Object Camera Add
- Object Call Preview Ensure
- Object Collection Instance Add
- Object Collection Unlink
- Object Convert
- Object Curves Empty Hair Add
- Object Data Instance Add
- Object Datalayout Transfer
- Object Drop Named Image
- Object Duplicate
- Object Effector Add
- Object Empty Add
- Object Gpencil Modifier Apply
- Object Hook Recenter
- Object Isolate Type Render
- Object Join Uvs
- Object Lineart Clear
- Object Material Slot Move
- Object Material Slot Remove
- Object Material Slot Select
- Object Mode Set With Submode
- Object Modifier Copy To Selected
- Object Instance Offset From Object
- Object Modifier Move To Index
- Object Multires Base Apply
- Object Multires External Save
- Object Multires Higher Levels Delete
- Object Multires Reshape
- Object Multires Subdivide
- Object Multires Unsubdivide
- Object Ocean Bake
- Object Origin Clear
- Object Parent Clear
- Object Parent No Inverse Set
- Object Parent Set
- Object Particle System Add
- Object Particle System Remove
- Object Paths Update
- Object Pointcloud Add
- Object Posemode Toggle
- Object Quadriflow Remesh
- Object Quick Explode
- Object Randomize Transform
- Object Select All
- Object Select By Type
- Object Select Grouped
- Object Select Linked
- Object Shaderfx Add
- Object Shaderfx Move Down
- Object Shaderfx Move Up
- Object Shaderfx Remove
- Object Shape Key Add
- Object Shape Key Clear
- Object Shape Key Mirror
- Object Simulation Nodes Cache Bake
- Object Simulation Nodes Cache Calculate To Frame
- Object Simulation Nodes Cache Delete
- Object Skin Root Mark
- Object Speaker Add
- Object Subdivision Set
- Object Transform Apply
- Object Transform Axis Target
- Object Unlink Data
- Object Visual Transform Apply
- Object Volume Import
- Object Vertex Group Clean
- Object Vertex Group Copy To Selected
- Object Vertex Group Deselect
- Object Vertex Group Limit Total
- Object Vertex Group Mirror
- Object Vertex Group Normalize All
- Object Vertex Group Remove
- Object Vertex Weight Normalize Active Vertex
- Object Vertex Weight Set Active
- Mesh Primitive Cone Add
- Mesh Face Set Extract
- Mesh Customdata Crease Edge Add
- Mesh Primitive Cylinder Add
- Mesh Primitive Grid Add
- Mesh Primitive Ico Sphere Add
- Mesh Primitive Monkey Add
- Mesh Primitive Plane Add
- Mesh Primitive Torus Add
- Mesh Primitive Uv Sphere Add
- Transform Bbone Resize
- Transform Create Orientation
- Transform Delete Orientation
- Transform Edge Bevelweight
- Transform Edge Slide
- Transform From Gizmo
- Transform Mirror
- Transform Push Pull
- Transform Resize
- Transform Shear
- Object Join
- Transform Shrink Fatten
- Transform Skin Resize
- Transform Tilt
- Transform Trackball
- Transform Vert Slide
- Object Set Active Shape Key Index
- Object Set Display Bounds Type
- Object Set Empty Display Size
- Object Set Hide Select
- Object Set Is Instancer
- Object Set Lightgroup
- Object Set Lock Rotations4D
- Object Set Name
- Object Set Name Full
- Object Set Rotation Mode
- Object Set Tag
- Object Set Use Extra User
- Object Set Use Instance Faces Scale
- Object Set Use Mesh Mirror X
- Object Set Use Shape Key Edit Mode
- Object Set Show Empty Image Perspective
- Object Set Show Instancer For Render
- Object Set Show Only Shape Key
- Object Set Is From Instancer
- Object Set Show Texture Space
- Object Call Select Get
- Object Set Show Transparent
- Object Set Use Simulation Cache
- Object Set Visible Glossy
- Object Move To Collection
- Object Set Visible Shadow
- Object Set Visible Transmission
- Object Call Asset Generate Preview
- Object Call Asset Mark
- Object Call Cache Release
- Object Call Camera Fit Coords
- Object Call Convert Space
- Object Call Copy
- Object Call Crazyspace Displacement To Original
- Object Call Find Armature
- Object Call Generate Gpencil Strokes
- Object Select Camera
- Object Call Hide Get
- Object Call Hide Set
- Object Call Holdout Get
- Object Call Indirect Only Get
- Object Call Is Deform Modified
- Object Call Make Local
- Object Call Override Create
- Object Call Override Hierarchy Create
- Object Call Ray Cast
- Object Call Select Set
- Object Call Shape Key Add
- Object Call Shape Key Clear
- Object Call To Curve
- Object Call To Curve Clear
- Object Call To Mesh
- Object Call To Mesh Clear
- Object Call Update From Editmode
- Object Call Update Tag
- Object Call Visible In Viewport Get
- UV Align
- UV Average Islands Scale
- UV Copy
- UV Cylinder Project
- UV Export Layout
- UV Hide
- UV Lightmap Pack
- UV Pin
- UV Project From View
- UV Remove Doubles
- UV Rip
- UV Rip Move
- UV Seams From Islands
- UV Select
- UV Select Box
- UV Select Circle
- UV Select Linked Pick
- UV Select Mode
- UV Select Similar
- UV Shortest Path Pick
- UV Shortest Path Select
- UV Smart Project
- UV Snap Cursor
- UV Sphere Project
- UV Stitch
- UV Unwrap
- Group Ops
- Object Lightprobe Cache Free
- Object Lineart Bake Strokes
- Transform Shape Key
- Modify Shape Key
- SAM MultiLayer
- Load Image From Request
- Object Meshdeform Bind
- Object Multires External Pack
- Mesh Customdata Custom Splitnormals Clear
- Mesh Customdata Mask Clear
- Mesh Customdata Skin Add
- Object Vertex Group Levels
- Object Vertex Group Set Active
- Mesh Customdata Bevel Weight Edge Clear
- Mesh Customdata Crease Edge Clear
- Object Vertex Group Smooth
- Object Vertex Group Sort
- UV Cube Project
- Object Vertex Weight Delete
- Mesh Polybuild Transform At Cursor
- Object Armature Add
- Mesh Split Normals
- Object Collection Objects Select
- Object Drop Named Material
- Object Face Map Add
- Object Face Map Assign
- Object Set Parent Type
- Object Volume Add
- Transform Edge Crease
- Object Set Is Library Indirect
- Image Alpha Mask Merge
- Object Set Show Instancer For Viewport
- Mesh Dissolve Mode
- Mesh Edge Collapse
- Mesh Edge Face Add
- Mesh Edge Rotate
- Transform Vertex Warp
- Object Set Parent Bone
- Object Set Show Empty Image Only Axis Aligned
- Mesh Delete Edgeloop
- Mesh Dissolve Degenerate
- Mesh Dissolve Edges
- Mesh Extrude Faces Move
- Mesh Extrude Vertices Move
- Object Gpencil Add
- Object Gpencil Modifier Add
- Object Gpencil Modifier Copy To Selected
- Object Hide Collection
- Object Hide View Clear
- Object Hide View Set
- Object Instance Offset From Cursor
- Object Material Slot Add
- Object Material Slot Assign
- Object Material Slot Deselect
- Object Material Slot Remove Unused
- Object Metaball Add
- Object Modifier Move Down
- Object Select Random
- Object Shade Smooth
- Object Transform To Mouse
- Mesh Primitive Circle Add
- Transform Rotate Normal
- Object Set Up Axis
- Object Set Track Axis
- UV Mark Seam
- UV Minimize Stretch
- Object Call Override Template Create
- UV Follow Active Quads
- UV Select Loop
- UV Select Overlap
- UV Select Pinned
- UV Select Split
- UV Snap Selected
- Set Shape Key Value
- Object Add Shape Keys
- Image Bridge
- Mesh Extrude Context
- Mesh Extrude Edges Indiv
- Mesh Extrude Repeat
- Mesh Fill Holes
- Object Set Use Dynamic Topology Sculpting
- Object Explode Refresh
- Object Link To Collection
- Object Make Links Scene
- Object Make Local
- Object Make Override Library
- Object Make Single User
- Mesh Bridge Edge Loops
- Mesh Loop To Region
- Mesh Mark Sharp
- Mesh Normals Make Consistent
- Mesh Offset Edge Loops Slide
- Mesh Select All
- Mesh Select Axis
- Mesh Select Less
- Mesh Uvs Reverse
- Mesh Vert Connect
- Object Duplicate Move
- Object Duplicate Move Linked
- Object Face Map Remove
- Object Face Map Select
- Object Face Map Move
- Object Modifier Move Up
- Object Select Pattern
- Object Modifier Remove
- Object Modifier Set Active
- Object Reset Override Library
- Object Scale Clear
- Object Select Hierarchy
- Object Select Less
- Object Select More
- Object Set Use Grease Pencil Lights
- Object Set Active Material Index
README
avatar-graph-comfyui
![]()
Wanna animate or got a question? Join our Discord
A custom nodes module for creating real-time interactive avatars powered by blender bpy mesh api + Avatech Shape Flow runtime.
WARNING
We are still making changes to the nodes and demo templates, please stay tuned.
Demo
| <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/12e2bfc6-438e-4d16-bead-9957ced3bae1" width="180"/><br>Interact 👆 | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/0c497025-7ed5-4e25-b4d1-5a257e1ba814" width="180"/><br>Interact 👆 | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/a2bf71e3-0d9c-4ddd-957f-a6b0cb7e622a" width="180"/><br>Interact 👆 | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/ad808c42-5297-4e61-8be8-d5cb7729d2ff" width="180"/><br>Interact 👆 | | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------: | | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/1d1ad8f9-31a6-48ec-bad2-ce972ee3b12f" width="180"/><br>Interact 👆 | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/06958585-f780-4b38-8f5d-bddabd7da78a" width="180"/><br>Interact 👆 | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/3d0e6b54-d45f-45ac-90bd-d8b149880f98" width="180"/><br>Interact 👆 | <img src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/1d1ad8f9-31a6-48ec-bad2-ce972ee3b12f" width="180"/><br>Interact 👆 |
How to?
- Basic Rigging Workflow Template
- Best Practices for image input
- Custom Nodes List
- Shape Flow
- Installation
- Development
- Join Discord 💬
Basic Rigging Workflow Template
1. Creating an eye blink and lipsync avatar
For optimal results, please input a character image with an open mouth and a minimum resolution of 768x768. This higher resolution will enable the tool to accurately recognize and work with facial features.
Download: Save the image, and drag into Comfyui or Simple Shape Flow
2. Creating an eye blink and lipsync emoji avatar
| |
|
| :--: | :--: |
Download: Save the image, and drag into Comfyui
| |
|
| :--: | :--: |
Download: Save the image, and drag into Comfyui or Dog Workflow
Best practices for image input
1. Generate a new character image
![]()
We need a character image with an open mouth and enable the tool to easily recognize facial features, so please add to the prompt:
looking at viewer, detailed face, open mouth, [smile], solo,eye-level angle
Download: Character Gen Template
2. Make existing character image mouth open (Inpaint)
![]()
To maintain consistency with the base image, it is recommended to utilize a checkpoint model that aligns with its style.
Download: Mouth Open Inpaint Template
<details> <summary> Inpaint Demonstration </summary> <video src="https://github.com/avatechai/avatar-graph-comfyui/assets/73209427/e3b77295-a1bf-4d96-9551-7cc423a4af73"/> </details>3. Pose Constraints (ControlNet)
![]()
Place normal and openpose image with reference to images.
Download: ControlNet Gen
Recommend Checkpoint Model List
Anime Style SD1.5
- https://civitai.com/models/35960/flat-2d-animerge
- https://civitai.com/models/24149/mistoonanime
Realistic Style SD1.5
- https://civitai.com/models/4201/realistic-vision-v51
- https://civitai.com/models/49463/am-i-real
- https://civitai.com/models/43331/majicmix-realistic
Custom Nodes
Expand to see all the available nodes description.
<details> <summary> All Custom Nodes </summary>| Name | Description | Preview |
| -------------------- | ---------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Segmentation (SAM) | Integrative SAM node allowing you to directly select and create multiple image segment output. | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270576351-8aabeba8-5450-4d39-8203-e91f9ab47190.png" width="300"> |
| Name | Description | Preview |
| ---------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Create Mesh Layer | Create a mesh object from the input images (usually a segmented part of the entire image) | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270576646-40740d25-9411-4cd3-a6c0-8b9008bca41c.png" width="300"> |
| Join Meshes | Combine multiple meshes into a single mesh object | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270577004-ba7afbc5-9cd5-4f97-9614-f71133f5783e.png" width="300"> |
| Match Texture Aspect Ratio | Since the mesh is created in 1:1 aspect ratio, a re-scale is needed at the end of the operation | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270602782-cb7155be-fb31-49f8-a24a-d001a1484ea7.png" width="300"> |
| Plane Texture Unwrap | Will perform mesh face fill and UV Cube project on the target plane mesh, scaled to bounds. | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270603006-4b9c0cf5-0497-47bf-8e06-5a3370084c11.png" width="300"> |
| Name | Description | Preview |
| ----------------------- | -------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Mesh Modify Shape Key | Given shape key name & target vertex_group, modify the vertex / all vertex’s transform | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270577944-ab4f259c-89a7-4f51-bc54-fd179e252073.png" width="300"> |
| Create Shape Flow | Create runtime shape flow graph, allowing interactive inputs affecting shape keys value in runtime | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270592752-abfdd801-0387-4c5d-9c11-6c23337ff1dd.png" width="300"> |
| Name | Description | Preview |
| -------------------- | ----------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Avatar Main Output | The primary output of the .ava file. The embedded Avatar View will auto update with this node's output | <img src="https://avatech-avatar-dev1.nyc3.cdn.digitaloceanspaces.com/public-download/github-readme/270592519-6a9a8bb4-05ec-4a2e-98bf-194b6af3a62a.png" width="300"> |
Shape Flow
![]()
Installation
Method 1 - Windows
-
Download Python environment from here
-
Unzip it to ComfyUI directory
-
Run the
run_cpu_3.10.batorrun_nvidia_gpu_3.10.bat -
Install avatar-graph-comfyui from ComfyUI Manager
Method 2 - macOS/Linux
Make sure your Python environment is 3.10.x as required by the bpy package. Then go to the ComfyUI directory and run:
Suggest using conda for your comfyui python environment
conda create --name comfyui python=3.10
conda activate comfyui
pip install -r requirements.txt
-
cd custom_nodes -
git clone https://github.com/avatechgg/avatar-graph-comfyui.git -
cd avatar-graph-comfyui && python -m pip install -r requirements.txt -
Restart ComfyUI with enable-cors-header
python main.py --enable-cors-headeror (for mac)python main.py --force-fp16 --enable-cors-header
Development
If you are interested in contributing
For comfyui frontend extension, frontend js located at avatar-graph-comfyui/js
Web stack used: vanjs tailwindcss
Install deps
pnpm i
Run the dev command to start the tailwindcss watcher
pnpm dev
For each changes, simply refresh the comfyui page to see the changes.
<details> <summary>p.s. For tailwind autocomplete, add the following to your vscode settings.json.</summary>{
"tailwindCSS.experimental.classRegex": [
["class\\s?:\\s?([\\s\\S]*)", "(?:\"|')([^\"']*)(?:\"|')"]
]
}
</details>
Update blender node types
To update blender operations input and output types (stored in blender/input_types.txt), run:
python generate_blender_types.py
FAQ
What is --enable-cors-header used for?
It is used to enable communication between ComfyUI and our editor (https://editor.avatech.ai), which is in charge of animating static characters. The only messages exchanged between them are the character data like the meshes of eyes and mouth, and the JSON format of our editor graph.
When you execute the ComfyUI graph, it sends the character data and the JSON graph to our editor for animating. When you modify and save the graph in our editor, it sends the modified graph back to ComfyUI. To validate it, you can open the js/index.js, and log the message in window.addEventListener("message", ...) and postMessage(message).
You can also run ComfyUI without the --enable-cors-header: execute the ComfyUI workflow, then download the .GLB or .GLTF format by right clicking the Avatar Main Output node and Save File option. Yet, this will disable the real-time character preview in the top-right corner of ComfyUI. Feel free to view it in other software like Blender.
Run ComfyUI workflows without the setup
No installs, no CUDA version roulette, no GPU sitting idle on your bill. Bring a workflow and run it in the browser.