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