QtMeshEditor β Mesh Part Segmentation
A point-cloud part-segmentation network (PointNet++-style) that predicts a semantic body-part label (head / torso / left+right arm / left+right leg) per point, exported to ONNX for in-app inference via ONNX Runtime.
Built for QtMeshEditor (issue #410) β a free,
open-source 3D mesh & animation editor β and its companion QtMesh Cloud
asset service. The app downloads this model on first use and runs it locally
(offline) to power the Edit-Mode "Select by Part (AI)" action, the
qtmesh segment CLI, and the segment_mesh MCP tool. Labels also feed the
auto-rigger as placement priors.
Model
- Input: a sampled point cloud
float32 [1, N, 3](normalised to a centred unit box). - Output: per-point class logits over 7 labels
(
unknown, head, torso, left_arm, right_arm, left_leg, right_leg); argmax β label, scattered back to mesh vertices/faces by nearest sampled point. - When the model is unavailable, QtMeshEditor falls back to a deterministic geometric segmenter (connected-component islands + an up-axis/lateral spatial heuristic, refined by skeleton-bone proximity when the mesh is rigged).
Training data & license
Trained from scratch on synthetic, permissively-derived data: per-vertex part labels read from rigged-humanoid bone weights (a CC0 derivation we own) sampled into point clouds. This sidesteps the standard part-segmentation datasets (ShapeNet-Part, PartNet), which are non-commercial and therefore incompatible with QtMeshEditor's permissive (MIT) distribution.
Works best on upright humanoid meshes near the training distribution; other shapes fall back to the geometric labeling.
Weights released under CC-BY-4.0; please credit QtMeshEditor.
Reproducing
scripts/export-meshseg-onnx.py in the QtMeshEditor repo (one-time, offline;
not shipped with the app).
Versions
- v1.1.0 (current) β retrained with T/A-pose arms (horizontal, the real rigged-character case), upright + yaw-only augmentation (consistent left/right), head-protrusion samples (ears/hats label as head), wider proportions, and a PointNet++-style local kNN feature in the network. Clean symmetric head/torso/arm/leg on humanoid meshes; non-humanoid creatures are approximate (the app prefers exact rig-bone labels when the mesh is rigged). ~0.58 MB.
- v1.0.0 β initial flat-PointNet model on synthetic primitive humanoids (arms-down only; over-assigned lateral protrusions to "arm").