ComfyUI-3D-MeshTool
A simple 3D model processing tool within ComfyUI.
Nodes (37)
Not Python append — it pairs rows and trims the excess
How long is that list, really?
Three list conversions in one pass
A sequence with a real stopping point
A 'step' that's secretly a count, and that's a feature
A tiny boolean that guards your batch logic
Turn raw numbers into camera-ready degrees
Reorder a list without a single math node
A sequence generator whose 'step' means count, not spacing
The duplicate twin of array1 step
The transpose nobody thinks about until they need it
Turn typed numbers into real camera orbits
The node that fixes the 'flat shading' disaster
The honest sibling that actually reads a tensor
Straighten the multi-view batch so your camera angles actually line up
A boring adapter that quietly unifies image and tensor types
Feed your multi-view dataset's camera JSON straight into the graph
The five-line bridge between Python lists and the pack's tensors
Where every mesh workflow starts (and where it silently resizes your model)
Don't confuse this with Mesh Cleanup — this one strips data, not geometry
Drop the floating debris and non-manifold garbage from scanned meshes
Open the mesh hood and pull out every raw array it's hiding
Reassemble a mesh from raw data — the setter to Mesh_Data_Get's getter
The diagnostic node that tells you exactly what's inside a mesh
Cut a million triangles down to a renderable model
Giving Avatar Graph's shape keys more geometry to bend
Get your Gaussian-splat and point-cloud PLY files into the graph
The node that turns industrial point clouds into splattable data
Get your processed point cloud out of ComfyUI
Turn raw rotation/translation tensors into cameras 3D-Pack can orbit
Paste '0, 30, 60' and get a real list
Spawn a fresh tensor of any shape, filled or random, when you need a blank canvas
'tensor shape' builds a shape, it doesn't read one
When a raw tensor won't preview, this is the bridge
The bridge from torch tensors to this pack's array nodes
Get real UVs on that mesh in one node, no Blender required
Fine-tune the xatlas unwrap without touching code
ComfyUI-3D-MeshTool
Introduction: A simple 3D model processing tool within ComfyUI
Partially referenced from everyone's plugins, if there is any inconvenience, please leave a message, and I will promptly remove the corresponding code. For new features or suggestions, please provide feedback.
Note: If the node name has been changed (after update), if there is this old node in the workflow, it will turn red. A new one needs to be created and connected again.
Update:
3d_meshtool#2024-0705Array# Arrays can perform batch operations on certain properties, such as the of zero123, image batches, creating certain increments, etc.basics# Create an arrayarray1 step# Generate an array with a starting value and step size.array1 end increment# Generate an array with a starting value, end value, and increment.array1 end step# Generate an array with a starting value, end value, and step size.array1 step increment# Generate an array with a starting value, step size, and increment.string to array# Convert a string to an array, including standardized brackets/removing non-numeric functions.
calculation#2024-0705array1 T# Transpose the arrayarray1 number to angle# Convert array numbers to angles, including semi-angles.array1 append# Concatenate arrays, automatically determining 1D and 2D addition.array1 is null# Check if the array is empty.array1 attribute# Retrieve array attributes.array1 convert# Convert data types within the array.array1 select element# Select array elements, including standardized brackets/removing non-numeric functions.
Basics#2024-0705load_obj# Load an OBJ file.mesh_data_get# Retrieve mesh data.20241007 renamemesh_data_set#20241007 Set mesh data.mesh_data_statistics# Statistics of mesh data, other than vertices and faces, other data is used to determine if it is empty.mesh_clean_data# Clean mesh data, can customize the removal of invalid or mismatched data.Ply_load#20240810 Load a PLY file.Ply_save#20240820 save a PLY file.
Camera#2024-0705array1 to camposes# Convert an array to 3dpack camera poses (requires a 6xNx3 array, refer to 3dpack's campos standard).
Edit#2024-0705unwrapUV_xatlas# Latest (2023) UV unwrapping algorithm.UV_options# Settings for the unwrapUV_xatlas node, if not connected, default settings are used.Auto_Normal# Automatically calculate model normals.Ply_normalize#20240810 Normalize the imported ply coordinates/colors, adjust the display size of individual points, and exchange color channels.
Optimization#2024-0705mesh_optimization# Mesh optimization, select optimization types and parameters.mesh_cleanup# Mesh cleanup, select cleaning up model debris.mesh_subdivide# Mesh subdivision, increases vertices without changing the shape.
Show
Roadmap:
Basic Functions- ✅
Array sequence(still needs optimization) - ✅
Data conversion(may need to add other conversions) - ✅
OBJ import(used code from 3dpack, still need to add whether the model is normalized and its data output to retain the original size and position when processing models in batch) - ✅
PLY import(The ply point cloud output from industrial software can be imported, and the author tested its feasibility using CloudCompare) - 🟩
Simple direct preview window(no need to save first) + preview window for world normals/depth/mask/specified view (can be used for compositing) - 🟩
Save, choose which data to save
- ✅
Model Optimization- ✅
Remove debris - ✅
Reduce faces by percentage (vertices) - ✅
Cut subdivision - 🟩
Turbine smoothing - 🟩
Convert to quads - 🟩... (other optimizations)
- ✅
Model Editing- ✅
UV decomposition (xatlas) - ✅
Automatic vertex normals - 🟩
Group support for ply - 🟩
UV remap - 🟩
Restore normalized vertices to their original state - 🟩
High-poly to low-poly texture/bump baking, AO baking(attempt to convert Blender's code to Comfyui) - 🟩
ply segmentation - 🟩... (other edits)
- ✅
other- 🟩
Display any data. - 🟩
Example workflow
- 🟩