ComfyUI Extension: Avatar Graph
Include nodes for sam + bpy operation, that allows workflow creations for generative 2d character rig.
Custom Nodes (635)
- Mesh Vert Connect Path
- Object Material Slot Move
- Object Material Slot Remove
- Mesh Extrude Region Move
- Object Set Is Runtime Data
- Object Set Name Full
- Object Call Asset Clear
- Object Set Show Bounds
- Match Texture Aspect Ratio
- Object Rotation Clear
- Object Paths Clear
- Mesh Dupli Extrude Cursor
- Object Set Empty Image Side
- Object Set Hide Render
- Object Set Lightgroup
- Object Set Is Missing
- UV Rip Move
- Object Anim Transforms To Deltas
- Object Shape Key Mirror
- Object Simulation Nodes Cache Bake
- Object Subdivision Set
- Mesh Separate
- ExportBlendshapes
- Object Surfacedeform Bind
- Object Transfer Mode
- Mesh Rip Edge Move
- Mesh Select Mirror
- Object Vertex Group Invert
- Object Call Animation Data Clear
- Object Constraints Clear
- Object Lineart Clear All
- Object Location Clear
- Object Multires Rebuild Subdiv
- Object Vertex Group Copy
- Object Vertex Group Select
- Object Editmode Toggle
- Object Vertex Parent Set
- Object Gpencil Modifier Move To Index
- Object Hook Reset
- Object Call Animation Data Create
- Object Call Visible In Viewport Get
- Object Call User Of Id
- UV Paste
- UV Select Less
- Mesh Polybuild Dissolve At Cursor
- Mesh Extrude Context Move
- Object Unlink Data
- Mesh Duplicate Move
- Mesh Polybuild Split At Cursor Move
- Mesh Polybuild Transform At Cursor Move
- Mesh Region To Loop
- Object Shaderfx Copy
- Mesh Select More
- Extract Boundary Points
- Object Set Hide Viewport
- Object Set Is Embedded Data
- Object Set Is From Set
- Mesh Dissolve Limited
- Mesh Edgering Select
- Mesh Extrude Region
- Mesh Reveal
- Mesh Solidify
- Object Forcefield Toggle
- Mesh Loopcut Slide
- Edit Ops
- Mesh Screw
- Context Set Transform Pivot Point
- Mesh Blend From Shape
- Mesh Delete
- Mesh Dissolve Verts
- Mesh Extrude Manifold
- Mesh Face Split By Edges
- Mesh Flip Normals
- Mesh Hide
- Object Collection Link
- Object Collection Unlink
- Mesh Select Next Item
- Mesh Sort Elements
- Mesh Split
- Object Bake Image
- Object Hide Render Clear All
- Assign Vertex Group Ops
- Mesh Uv Texture Add
- Mesh Vert Connect Nonplanar
- Mesh Merge Normals
- Object Select Same Collection
- Object Vertex Group Add
- Object Set Is Holdout
- Object Collection Remove
- Blender Render Image
- Save Image With Workflow
- Mesh Shortest Path Select
- Object Hook Add Selob
- Object Quick Smoke
- Object Datalayout Transfer
- Object Join Uvs
- Object Empty Add
- Object Face Map Remove From
- Mesh Extrude Region Shrink Fatten
- Mesh Faces Shade Smooth
- Mesh Merge
- Avatar Main Output
- Create Mesh Layer
- Mesh Attribute Set
- Mesh Bevel
- Object Hook Select
- Mesh Bisect
- Mesh Colors Reverse
- 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 Face Make Planar
- Mesh Faces Mirror Uv
- Mesh Fill Grid
- Mesh Loop Select
- Mesh Loopcut
- Mesh Mark Freestyle Edge
- Mesh Mark Seam
- Mesh Normals Tools
- Mesh Offset Edge Loops
- Object Track Clear
- Mesh Paint Mask Extract
- Mesh Paint Mask Slice
- Mesh Point Normals
- Object Vertex Group Normalize
- Mesh Select Prev Item
- Mesh Polybuild Delete At Cursor
- Mesh Polybuild Extrude At Cursor Move
- Mesh Polybuild Face At Cursor
- Mesh Polybuild Face At Cursor Move
- Mesh Polybuild Split At Cursor
- Mesh Mark Freestyle Face
- Object Shaderfx Move To Index
- Mesh Knife Project
- Mesh Remove Doubles
- LoadImageWithAlpha
- Object Duplicates Make Real
- Object Shape Key Remove
- Mesh Rip Edge
- Object Clear Override Library
- Mesh Select Face By Sides
- Mesh Select Interior Faces
- Mesh Shortest Path Pick
- Mesh Spin
- Mesh Subdivide Edgering
- Object Voxel Remesh
- Load Value From Request
- Mesh Symmetrize
- Mesh Symmetry Snap
- Object Gpencil Modifier Move Up
- Mesh Unsubdivide
- Mesh Wireframe
- Object Add
- Mesh Rip Move
- Object Vertex Group Mirror
- Mesh Uv Texture Remove
- Object Align
- Object Hook Add Newob
- Object Quadriflow Remesh
- Object Collection External Asset Drop
- Object Constraint Add With Targets
- Object Correctivesmooth Bind
- Object Data Instance Add
- Object Data Transfer
- Object Delete
- Object Drop Geometry Nodes
- Object Drop Named Image
- Object Face Map Deselect
- Object Geometry Nodes Input Attribute Toggle
- Object Constraints Copy
- Object Geometry Nodes Move To Nodes
- Object Geometry Node Tree Copy Assign
- 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
- Object Modifier Copy
- Object Modifier Copy To Selected
- Object Multires External Save
- Object Origin Set
- Object Parent Clear
- Object Parent No Inverse Set
- Object Paths Calculate
- Object Paths Update Visible
- Object Vertex Group Assign New
- Transform Resize
- Object Quick Explode
- Object Quick Fur
- Object Select Linked
- 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 Visual Transform Apply
- Object Hook Remove
- Object Set Instance Faces Scale
- Object Volume Import
- Object Voxel Size Edit
- Object Vertex Group Limit Total
- Object Vertex Group Lock
- Mesh Primitive Cube Add
- Object Set Mode
- Combine Points
- Object Set Instance Type
- Transform Bend
- Transform Create Orientation
- Transform Mirror
- Object Set Show Name
- Mesh Select Loose
- Transform Push Pull
- Object Vertex Group Assign
- Object Set Type
- Transform Rotate
- Object Set Use Fake User
- Transform Seq Slide
- Transform Shrink Fatten
- Transform Tilt
- Transform Select Orientation
- Transform Tosphere
- Transform Transform
- Transform Translate
- Transform Vert Crease
- Object Set Users
- Object Call Update Tag
- UV Align Rotation
- Transform Vert Slide
- Transform Vertex Random
- Object Set Show Empty Image Orthographic
- Object Set Display Type
- Object Set Empty Image Depth
- Object Set Is Evaluated
- Object Set Is Instancer
- Object Set Use Empty Image Alpha
- Object Set Use Extra User
- Object Set Show Only Shape Key
- Object Set Show Transparent
- Object Set Show Wire
- Object Set Tag
- Object Set Use Instance Vertices Rotation
- Object Call Calc Matrix Camera
- Object Call Closest Point On Mesh
- Object Call Copy
- Object Call Update From Editmode
- Object Call Crazyspace Displacement To Deformed
- Object Call Crazyspace Displacement To Original
- Object Call Crazyspace Eval
- Object Call Crazyspace Eval Clear
- Object Call Evaluated Get
- Object Call Hide Set
- Object Call Holdout Get
- Object Call Override Hierarchy Create
- Object Call User Clear
- Object Call User Remap
- UV Average Islands Scale
- Create Shape Flow
- UV Pack Islands
- UV Modifier
- UV Pin
- Object Set Show Empty Image Perspective
- UV Randomize Uv Transform
- UV Weld
- UV Select Mode
- UV Shortest Path Pick
- UV Smart Project
- UV Sphere Project
- To Group Ops
- Object Set Use Simulation Cache
- Object Mesh From Texture
- Object Set Visible Camera
- Group Ops
- Object Assign Texture
- Get Image Width Height
- Object Vertex Group New With Name
- Object Set Visible Volume Scatter
- Transform Shape Key
- Create Mesh Layer (Advanced)
- ENUM (Blender)
- Object Call Is Modified
- Object Call Shape Key Remove
- Object Call To Curve Clear
- Object Call To Mesh
- UV Copy
- Object Call Visible Get
- UV Select Linked
- Mesh Uvs Rotate
- Object Parent Inverse Apply
- Object Vertex Group Clean
- Object Constraint Add
- Object Set Is Shadow Catcher
- Object Set Name
- 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 Instance Faces Scale
- Object Particle System Add
- 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
- Object Mode Set With Submode
- Mesh Duplicate
- Mesh Select Ungrouped
- Object Set Lock Rotation W
- Object Call Local View Get
- UV Select More
- Object Pointcloud Add
- Object Posemode Toggle
- 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
- Mesh Select Non Manifold
- 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 Isolate Type Render
- Object Parent Set
- Object Set Add Rest Position Attribute
- Object Set Use Mesh Mirror Z
- Object Set Use Shape Key Edit Mode
- Object Lineart Clear
- Object Make Dupli Face
- Object Duplicate
- UV Reset
- Object Vertex Weight Set Active
- UV Cylinder Project
- Object Material Slot Select
- Mesh Customdata Bevel Weight Edge Add
- Mesh Select Nth
- Object Hook Recenter
- Object Set Visible Glossy
- Mesh Mod Weighted Strength
- Object Set Visible Shadow
- Object Set Visible Transmission
- Mesh Fill
- Mesh Select Linked Pick
- Object Gpencil Modifier Apply
- Object Modifier Convert
- Transform Edge Bevelweight
- Object Set Show Instancer For Render
- Object Call Preview Ensure
- Object Call To Curve
- UV Select Box
- Object Shaderfx Move Down
- Object Instance Offset From Object
- Object Paths Update
- Object Call Asset Generate Preview
- Object Call Asset Mark
- Object Vertex Group Remove
- Mesh Primitive Uv Sphere Add
- Transform From Gizmo
- Mesh Customdata Crease Edge Add
- Mesh Face Set Extract
- SAM MultiLayer
- Object Call Shape Key Add
- UV Stitch
- Load Image From Request
- Object Join
- Object Set Lock Rotations4D
- Object Set Is From Instancer
- Object Call Select Get
- Object Call Select Set
- Object Move To Collection
- Object Select Camera
- Object Multires Base Apply
- Object Lightprobe Cache Free
- Object Lineart Bake Strokes
- Object Meshdeform Bind
- Object Multires External Pack
- Mesh Customdata Custom Splitnormals Clear
- Mesh Customdata Mask Clear
- Mesh Customdata Skin Add
- Mesh Delete Loose
- Object Vertex Group Levels
- Object Vertex Group Normalize All
- Object Vertex Group Set Active
- Object Vertex Group Smooth
- Object Vertex Group Sort
- Object Vertex Weight Delete
- Object Vertex Weight Normalize Active Vertex
- Mesh Primitive Cylinder Add
- UV Cube Project
- Mesh Customdata Bevel Weight Edge Clear
- Mesh Customdata Crease Edge Clear
- Mesh Customdata Crease Vertex Clear
- Mesh Polybuild Transform At Cursor
- Mesh Quads Convert To Tris
- Mesh Select Similar
- 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 Rotation Mode
- 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
- Vector 4D (Blender)
- Vector 3D (Blender)
- Mesh Average Normals
- Mesh Decimate
- Mesh Delete Edgeloop
- Mesh Dissolve Degenerate
- Mesh Dissolve Edges
- Mesh Extrude Faces Move
- Mesh Extrude Vertices Move
- Mesh Faces Shade Flat
- Mesh Flip Quad Tessellation
- Mesh Inset
- Mesh Intersect Boolean
- Mesh Knife Tool
- Mesh Loop Multi Select
- Mesh Poke
- Mesh Rip
- Mesh Select Similar Region
- Mesh Set Normals From Faces
- Mesh Shape Propagate To All
- Mesh Subdivide
- Mesh Tris Convert To Quads
- Object Convert
- Object Curves Empty Hair Add
- Object Effector Add
- 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 Modifier Move To Index
- Object Multires Higher Levels Delete
- Object Multires Reshape
- Object Multires Subdivide
- Object Multires Unsubdivide
- Object Ocean Bake
- Object Origin Clear
- Object Particle System Remove
- Object Randomize Transform
- Object Select All
- Object Select By Type
- Object Select Grouped
- Object Select Random
- Object Shade Smooth
- Object Transform To Mouse
- Object Vertex Group Copy To Selected
- Object Vertex Group Deselect
- Mesh Primitive Circle Add
- Mesh Primitive Cone Add
- Mesh Primitive Ico Sphere Add
- Mesh Primitive Plane Add
- Transform Edge Slide
- Transform Rotate Normal
- Transform Shear
- Transform Skin Resize
- Object Set Up Axis
- Object Call Find Armature
- Object Call Generate Gpencil Strokes
- Object Set Show Texture Space
- Object Set Track Axis
- Object Set Use Mesh Mirror X
- Object Call Cache Release
- Object Call Camera Fit Coords
- Object Call Convert Space
- UV Hide
- UV Lightmap Pack
- UV Mark Seam
- UV Minimize Stretch
- Object Call Hide Get
- Object Call Indirect Only Get
- Object Call Is Deform Modified
- Object Call Make Local
- Object Call Override Create
- Object Call Override Template Create
- Object Call Ray Cast
- Object Call Shape Key Clear
- Object Call To Mesh Clear
- UV Align
- UV Export Layout
- UV Follow Active Quads
- UV Project From View
- UV Remove Doubles
- UV Rip
- UV Seams From Islands
- UV Select
- UV Select Circle
- UV Select Linked Pick
- UV Select Loop
- UV Select Overlap
- UV Select Pinned
- UV Select Similar
- UV Select Split
- UV Shortest Path Select
- UV Snap Cursor
- UV Snap Selected
- UV Unwrap
- Set Shape Key Value
- Object Add Shape Keys
- Modify Shape Key
- Image Bridge
- Mesh Extrude Context
- Mesh Extrude Edges Indiv
- Mesh Extrude Edges Move
- Mesh Extrude Faces Indiv
- Mesh Extrude Repeat
- Mesh Faces Select Linked Flat
- Mesh Fill Holes
- Object Set Use Dynamic Topology Sculpting
- Canny
- Join Meshes
- ExportGLTF
- Get First Obj Ops
- Mesh Beautify Fill
- 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 Customdata Bevel Weight Vertex Add
- Mesh Customdata Bevel Weight Vertex Clear
- Mesh Customdata Crease Vertex Add
- Mesh Customdata Custom Splitnormals Add
- 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 Select Linked
- Mesh Select Mode
- Mesh Select Random
- Mesh Uvs Reverse
- Mesh Vert Connect
- Mesh Vert Connect Concave
- Mesh Vertices Smooth
- Mesh Vertices Smooth Laplacian
- Object Add Named
- Object Assign Property Defaults
- Object Bake
- Object Camera Add
- Object Collection Instance Add
- Object Duplicate Move
- Object Duplicate Move Linked
- Object Face Map Move
- Object Face Map Remove
- Object Face Map Select
- Object Modifier Move Up
- Object Modifier Remove
- Object Modifier Set Active
- Object Select Pattern
- Object Reset Override Library
- Object Scale Clear
- Object Select Hierarchy
- Object Select Less
- Object Select More
- Object Shaderfx Add
- Object Shaderfx Move Up
- Object Shaderfx Remove
- Object Shape Key Add
- Object Shape Key Clear
- Object Simulation Nodes Cache Calculate To Frame
- Object Simulation Nodes Cache Delete
- Object Skin Root Mark
- Object Speaker Add
- Object Transform Apply
- Object Transform Axis Target
- Mesh Primitive Grid Add
- Mesh Primitive Monkey Add
- Mesh Primitive Torus Add
- Transform Bbone Resize
- Object Set Use Grease Pencil Lights
- Transform Delete Orientation
- Transform Trackball
- Object Set Active Material Index
- Object Set Active Shape Key Index
- Object Set Display Bounds Type
- Object Set Empty Display Size
- Object Set Hide Select
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.bat
orrun_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-header
or (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.