RFD 1041 details: the model, the interface, the output, the label reasoning
The model
| Property | Value |
|---|---|
| Parameters | 0.4 B, estimated |
| bf16 | 0.8 GB |
| Q4_K_M | 0.22 GB |
| License | MIT |
| Format | bf16 |
The interface
| Input | Type | Default |
|---|---|---|
| mesh | Path | none |
| segment_every_part | bool | false |
| max_parts | int | 32 |
| seed | int | -1 |
segment_every_part is the mode PartSAM and P3-SAM share. It returns every part it finds, and it ignores max_parts.
The output
predict() returns a BaseModel. It carries labels, which is one integer per face, and parts, which is a list of GLB files.
A face-length integer array on a 210000 vertex mesh is large. Write it as a JSON file, and not as an inline list. RFD 1033 gives the vertex cap.
Why the label array leads
A part label is stable input for the rig stage and for the remix stage. A split mesh is not, because a later decimation renumbers the faces. Give the caller the stable thing first.