Partition: longer parts, higher height degree

2026-10-29 10:58 · fcp v5.31 (CUDA), package untouched (KAPPA patched in the process) · scripts/degree_sweep.py → report/degree_sweep.csv (360 rows, 10 objects) · Chamfer: mean of both directions, % of the diagonal; >30°: share of decoded-surface samples whose face normal is over 30° from the nearest clean-mesh sample's (unsigned)

Question. Keep tracked-fit (decision 22: tracking, the fit cut, the step rule that puts the cut on the event) but cut only where a part really breaks (a ledge, a joint), and let a higher height degree follow the rest. Step 1: the same rule against the degree cap, M and KAPPA (largest condition number of the Chebyshev basis on a part's layer centres; at 1e2 the degree is at most 11 / 17 / 25 / 35 on 16 / 32 / 64 / 128 layers). A higher cap lets one fit follow more, so the rule cuts less by itself. The SDF decode reads a part only at its layer centres, so a higher degree cannot wobble between layers there. Meshes only (exact slices, no slicer noise), 128 layers, up = +z, decoded on the SDF default at 128. (tracked, no cuts, is in the CSV but not shown: it is the old rule and loses the joints.)
The 2x2 (below): the stored degree alone changes nothing (high basis on the default parts: 1.000 / 1.000 / 0.998 Chamfer); the cuts a high cap removes are what cost (default basis on those parts: 1.13 at every budget, normals 1.4-3.5 times; bowl_of 1.4, shoe 1.3-1.5, horse 1.2). Cuts removed by a higher degree are not the unneeded ones.
Step 1, so far. A higher cap removes cuts (134 parts over the ten at the default, 121 at κ 1e3, 108 at κ 1e4) at the same Chamfer at 6144 atoms, but worse at 256 / 1024 (up to 1.13 / 1.05 times) and with more normals over 30° (up to 1.4 / 1.6 times). The renders show which cuts go.

Summary: geometric mean over the objects of the ratio to the default

Default row shaded (tracked-fit, κ 1e2, M 24). Green: 2 % better, red: 2 % worse. Parts and encode time summed over the objects; longest deg: the largest degree any part reached.

ruleκMobjectspartslongest degChamfer ×
256
Chamfer ×
1024
Chamfer ×
6144
>30° ×
256
>30° ×
1024
>30° ×
6144
encode s
tracked-fit1002410134241.0001.0001.0001.0001.0001.0003.95
tracked-fit1003510132341.0061.0011.0001.0521.0791.0353.46
tracked-fit1005010132341.0061.0011.0001.0521.0791.0353.42
tracked-fit1008010132341.0061.0011.0001.0521.0791.0353.40
tracked-fit10002410123241.1031.0321.0011.2811.3981.1203.28
tracked-fit10003510122351.0751.0291.0011.1801.3111.0254.01
tracked-fit10005010121411.1071.0301.0001.2771.4371.0673.98
tracked-fit10008010121411.1071.0301.0001.2771.4371.0673.74
tracked-fit100002410110241.1061.0491.0011.3551.5001.2173.13
tracked-fit100003510110351.1231.0511.0011.3881.5851.0664.18
tracked-fit100005010108471.1251.0521.0011.3631.5801.0454.19
tracked-fit100008010108471.1251.0521.0011.3631.5791.0444.39

The two effects apart: the cut decision and the stored basis

scripts/split_2x2.py: tracked-fit's cut decision with the default or a high cap (fewer cuts), and the stored height basis with the default or a high cap (higher degrees). Ratios to default / default (shaded).

cut decisionstored basisobjectspartsChamfer ×
256
Chamfer ×
1024
Chamfer ×
6144
>30° ×
256
>30° ×
1024
>30° ×
6144
default (κ 1e2, M 24)default101341.0001.0001.0001.0001.0001.000
default (κ 1e2, M 24)high101341.0001.0000.9981.0001.0260.982
high (κ 1e4, M 50)default101081.1311.1371.1371.4422.7143.484
high (κ 1e4, M 50)high101081.1251.0521.0011.3631.5801.045
objectparts
cut lo
parts
cut hi
Chamfer %
lo/lo 256
Chamfer %
lo/lo 6144
Chamfer %
lo/hi 256
Chamfer %
lo/hi 6144
Chamfer %
hi/lo 256
Chamfer %
hi/lo 6144
Chamfer %
hi/hi 256
Chamfer %
hi/hi 6144
battery_stepped440.258640.258640.258640.258640.265190.263190.261340.25938
dress17130.351590.155160.351590.154980.373090.160670.377480.15484
elephant27220.786990.233250.786990.233030.736050.241640.735390.23336
bowl_of530.209270.196650.209270.196890.31020.279310.296250.1972
bowl_gso640.218640.198610.218640.198640.257380.21450.254070.1983
mug860.282180.220370.282180.2190.336740.231370.340940.22004
dino25210.404090.133950.404090.132930.412970.145860.412970.13404
shoe22180.439260.190440.439260.189770.583110.293570.576160.19142
open_box220.256830.256550.256830.256630.256830.256550.256830.25663
horse18150.373280.142310.373280.142230.44570.17380.447930.14256

Why the elephant is cut so much

17 tracks, 27 parts: every extra part comes from one track, the body (layers 6-99), cut into 11 slabs. Three or four of its cuts sit on real events (a step of 0.2-0.5 in the ring coefficients, a jump of the perimeter: legs at 13, the leg tops at 26-30, the head at 50-51, the trunk at 91). The others (19, 36, 61, 70, 77, 85) sit on smooth stretches (steps 0.01-0.05). There the cut test, the fit's worst miss in coefficients, is 2.5-4 times the miss in shape (nearest-point RMS between the fitted ring and the sliced ring): 14-26 0.029 against 0.0072, 31-50 0.0115 against 0.0038, 61-89 0.031 against 0.0096 (tolerance 0.01). The rest is the parametrization sliding along the ring (tangential drift of the arc-length start), which moves no surface. Across the head (36-89) both are large (0.149 / 0.045): a real cut. A higher degree removes some of these cuts only by following the drift too.

scripts/body_track.py elephant → report/elephant_body.txt (per layer: rings in the slice, area, perimeter, coefficient step; then the coefficient and shape misses of the stretches).

track layers 6-99, cuts at [13, 19, 26, 28, 30, 36, 45, 48, 51, 61, 62, 70, 77, 83, 84, 85, 91, 91, 96]
 layer rings   area  perim   step  cut
     6     8  0.094  1.717  0.000  
     7     6  0.268  2.516  0.312  
     8     3  0.835  5.720  0.547  
     9     1  1.194  7.589  0.401  
    10     1  1.329  7.485  0.045  
    11     1  1.432  7.488  0.035  
    12     1  1.512  7.482  0.024  
    13     1  1.675  5.627  0.470  <--
    14     1  1.699  5.653  0.024  
    15     1  1.709  5.659  0.019  
    16     1  1.705  5.669  0.044  
    17     1  1.680  5.632  0.049  
    18     1  1.643  5.520  0.045  
    19     2  1.615  5.304  0.081  <--
    20     2  1.589  5.298  0.041  
    21     1  1.570  5.285  0.028  
    22     1  1.551  5.264  0.057  
    23     1  1.530  5.170  0.112  
    24     1  1.514  5.374  0.052  
    25     1  1.486  5.584  0.063  
    26     2  1.380  4.805  0.226  <--
    27     2  1.360  4.799  0.014  
    28     2  1.334  4.909  0.084  <--
    29     2  1.288  5.204  0.064  
    30     4  1.185  4.301  0.249  <--
    31     3  1.165  4.256  0.010  
    32     2  1.145  4.206  0.018  
    33     1  1.126  4.145  0.010  
    34     1  1.103  4.073  0.011  
    35     1  1.078  4.007  0.011  
    36     1  1.050  3.930  0.028  <--
    37     1  1.027  3.844  0.028  
    38     1  1.002  3.766  0.013  
    39     1  0.984  3.697  0.020  
    40     1  0.964  3.645  0.020  
    41     1  0.948  3.599  0.011  
    42     1  0.929  3.548  0.022  
    43     1  0.904  3.502  0.015  
    44     1  0.882  3.448  0.012  
    45     2  0.859  3.419  0.022  <--
    46     2  0.837  3.323  0.023  
    47     2  0.815  3.274  0.012  
    48     3  0.791  3.222  0.009  <--
    49     3  0.767  3.170  0.012  
    50     2  0.782  3.907  0.195  
    51     1  0.870  4.881  0.287  <--
    52     1  0.872  4.852  0.022  
    53     1  0.865  4.836  0.024  
    54     1  0.854  4.850  0.021  
    55     1  0.842  4.861  0.018  
    56     1  0.834  4.870  0.022  
    57     1  0.826  4.882  0.019  
    58     1  0.816  4.912  0.017  
    59     1  0.809  4.959  0.014  
    60     1  0.807  4.990  0.026  
    61     1  0.812  5.051  0.020  <--
    62     2  0.820  5.093  0.016  <--
    63     2  0.836  5.081  0.025  
    64     1  0.888  5.181  0.060  
    65     1  0.901  5.121  0.025  
    66     1  0.910  5.072  0.020  
    67     1  0.919  5.045  0.024  
    68     1  0.921  5.047  0.013  
    69     1  0.920  5.048  0.010  
    70     1  0.926  5.019  0.050  <--
    71     1  0.932  5.065  0.040  
    72     1  0.939  5.087  0.011  
    73     1  0.943  5.121  0.012  
    74     1  0.942  5.151  0.013  
    75     1  0.941  5.173  0.014  
    76     1  0.943  5.173  0.023  
    77     1  0.946  5.168  0.032  <--
    78     1  0.946  5.174  0.022  
    79     1  0.946  5.201  0.027  
    80     1  0.943  5.192  0.033  
    81     1  0.936  5.040  0.083  
    82     1  0.919  5.018  0.031  
    83     2  0.887  4.848  0.067  <--
    84     3  0.856  4.736  0.052  <--
    85     3  0.827  4.469  0.085  <--
    86     2  0.795  4.364  0.019  
    87     1  0.755  4.204  0.054  
    88     1  0.709  4.090  0.044  
    89     3  0.650  3.683  0.141  
    90     1  0.608  3.618  0.030  
    91     2  0.529  2.862  0.236  <--
    92     3  0.498  2.820  0.024  
    93     1  0.457  2.807  0.025  
    94     1  0.410  2.772  0.032  
    95     1  0.363  2.773  0.050  
    96     4  0.193  1.737  0.236  <--
    97     2  0.141  1.512  0.050  
    98     2  0.088  1.260  0.062  
    99     5  0.025  0.625  0.109  
layers  14- 26 ( 13) kappa 100 deg 10: coef miss max 0.0294  shape rms max 0.0065
layers  14- 26 ( 13) kappa 10000 deg 12: coef miss max 0.0000  shape rms max 0.0000
layers  31- 50 ( 20) kappa 100 deg 13: coef miss max 0.0115  shape rms max 0.0034
layers  31- 50 ( 20) kappa 10000 deg 17: coef miss max 0.0036  shape rms max 0.0014
layers  36- 50 ( 15) kappa 100 deg 11: coef miss max 0.0071  shape rms max 0.0031
layers  36- 50 ( 15) kappa 10000 deg 14: coef miss max 0.0000  shape rms max 0.0000
layers  52- 89 ( 38) kappa 100 deg 19: coef miss max 0.0316  shape rms max 0.0117
layers  52- 89 ( 38) kappa 10000 deg 26: coef miss max 0.0222  shape rms max 0.0075
layers  52- 70 ( 19) kappa 100 deg 13: coef miss max 0.0128  shape rms max 0.0087
layers  52- 70 ( 19) kappa 10000 deg 17: coef miss max 0.0075  shape rms max 0.0024
layers  61- 89 ( 29) kappa 100 deg 16: coef miss max 0.0312  shape rms max 0.0093
layers  61- 89 ( 29) kappa 10000 deg 22: coef miss max 0.0142  shape rms max 0.0053
layers  36- 89 ( 54) kappa 100 deg 23: coef miss max 0.1490  shape rms max 0.0450
layers  36- 89 ( 54) kappa 10000 deg 31: coef miss max 0.1199  shape rms max 0.0386

Step 2: the fit test in shape, not in coefficients

scripts/shape_test.py: tracked-fit unchanged (tracking, cut search, step rule, tolerance 0.01, default cap) except that a fit follows its part when every ring is within the tolerance in shape (nearest-point RMS between the fitted and the sliced ring, both ways) instead of in coefficients. Green / red: shape better / worse than coef. Renders: shape-fit images in each object's section.

objectparts
coef
parts
shape
Chamfer %
coef 256
Chamfer %
shape 256
Chamfer %
coef 1024
Chamfer %
shape 1024
Chamfer %
coef 6144
Chamfer %
shape 6144
>30° %
coef 256
>30° %
shape 256
>30° %
coef 1024
>30° %
shape 1024
>30° %
coef 6144
>30° %
shape 6144
battery_stepped440.25860.25860.25860.25860.25860.25863.043.043.043.043.043.04
dress17160.35160.35320.18520.18450.15520.154942.6541.9831.4931.4226.8526.41
elephant27230.78700.75070.37200.36670.23330.235159.8552.8942.5239.4716.5317.83
bowl_of550.20930.20930.19760.19760.19660.19664.804.800.300.300.320.32
bowl_gso650.21860.22340.19840.19990.19860.19927.448.841.102.090.991.83
mug880.28220.28220.22490.22490.22040.220412.6812.680.960.960.520.52
dino25250.40410.40410.19430.19430.13400.134037.3637.3618.0518.057.287.28
shoe22170.43930.42510.25110.25140.19040.190833.7431.6826.4724.527.578.35
open_box220.25680.25680.25670.25670.25660.25661.001.001.011.011.101.10
horse18170.37330.38350.18510.18680.14230.142527.8428.1010.9510.532.893.14
all (geometric mean of shape / coef)134122× 0.997× 1.000× 1.001× 0.998× 1.046× 1.089
Step 2, result. (After a fix: the first run measured to the nearest sample of the other ring, which leaves a floor of up to half a sample spacing, about the tolerance on a big ring, and cut more; now to the polyline.) The shape test cuts less (124 parts against 134: elephant 27 → 23, shoe 22 → 17, dress 17 → 16, horse 18 → 17, bowl_gso 6 → 5) at the same Chamfer (× 0.997 / 1.000 / 1.001 at 256 / 1024 / 6144). Normals: better at 256 on the elephant and the shoe, worse at 6144 (elephant, shoe, horse about +9 %; bowl_gso × 1.9). The bowl shows why: the foot (6-14) and the waist (15-26) become one part, and its fit leaves horizontal ripples at the foot, still at 6144 atoms. Every ring is within 0.01 in shape, but 0.01 is 0.64 of a layer height (2 / 128): a miss that alternates from layer to layer at that size tilts the surface by tens of degrees. A tolerance on distance alone allows it; the coefficient test caught it by being stricter for another reason. Next: a slope test besides the distance (the change of the miss between neighbouring rings, against the layer height).

Which parts fit their shape

scripts/fit_audit.py: per part, the worst shape distance over its layers between the sliced ring and the ring given back at the layer centre, in layer heights (0.0172 canonical; the cut tolerance 0.01 is 0.58 of one). Counts of parts by their worst miss. "full fit": all degrees of the part's height basis (what the cut test judges). Images: per object and cut test, the four parts that miss most: equivalent radius sqrt(area / pi) along the part (sliced, full fit, 6144, 1024 atoms) and the miss per layer.

What it shows. 6144 atoms give back the full fit (the budget is not what limits a part there); 1024 does not (elephant parts 0.5-2 layer heights off). Most parts fit to under a tenth of a layer. The waves are where a part holds a corner or a step: the polynomial rings around it with a period of two or three layers across the whole part (bowl_gso, shape test: the foot, layers 6-26, holds the bottom edge at layers 6-8, the radius 5 → 27 layer heights in two layers, then a gentle flare; its miss alternates 0.1 / 0.28 up to layer 26 and peaks at 0.52 at the corner. The corner cannot be cut off: it is two layers from the end and pieces are at least FIT_MIN = 4). With the coefficient test every part of the ten stays within 0.38 of a layer (dino 0.38, dress 0.31, the rest 0.25 or less); the shape test at the same 0.01 lets elephant, bowl_gso and shoe parts go to 0.5 (a step at the head, the leg tops, the foot). The coefficient test is, in shape, about three times stricter than its number: it cuts the corners and steps, and the smooth drifting stretches too. So the knob is the tolerance in shape: a fraction of a layer.
objectcut testparts6144:
≤ 0.1
6144:
0.1-0.25
6144:
0.25-0.5
6144:
> 0.5
6144
worst
1024:
≤ 0.1
1024:
0.1-0.25
1024:
0.25-0.5
1024:
> 0.5
1024
worst
full fit
worst
battery_steppedcoef440000.0040000.000.00
battery_steppedshape440000.0040000.000.00
dresscoef1796200.30003141.180.31
dressshape1677200.30002141.460.31
elephantcoef27216000.20003241.970.18
elephantshape23183110.55003202.340.54
bowl_ofcoef550000.0732000.160.07
bowl_ofshape550000.0732000.160.07
bowl_gsocoef660000.1023100.360.10
bowl_gsoshape540010.5212110.520.52
mugcoef871000.1502600.430.15
mugshape871000.1502600.430.15
dinocoef25186100.38045161.270.38
dinoshape25186100.38045161.270.38
shoecoef22814000.25000222.170.23
shoeshape1758310.51000172.370.51
open_boxcoef220000.0120000.020.01
open_boxshape220000.0120000.020.01
horsecoef18135000.20005131.130.19
horseshape17116000.22005121.190.22

battery_stepped

audit battery_stepped coef audit battery_stepped shape

dress

audit dress coef audit dress shape

elephant

audit elephant coef audit elephant shape

bowl_of

audit bowl_of coef audit bowl_of shape

bowl_gso

audit bowl_gso coef audit bowl_gso shape

mug

audit mug coef audit mug shape

dino

audit dino coef audit dino shape

shoe

audit shoe coef audit shoe shape

open_box

audit open_box coef audit open_box shape

horse

audit horse coef audit horse shape

The dino's body part: the height polynomial

scripts/part_profile.py dino 1e4 50 and dino 1e2 24: the largest part, the sliced rings at the layer centres (dots) and the stored polynomial drawn continuously at 1024 and 6144 atoms (equivalent radius, five single coefficients, the shape miss at the centres).

With the ground truth (grey: the mesh sectioned at 10 heights per layer, the part's ring; bottom panel, lines: the polynomial against it at every height, dots: against the sliced rings at the centres). Inside (41-65) the true section is smooth and the 6144 polynomial follows it to about 0.12 of a layer between the centres too (0.05-0.08 at them); at 1024 it is 0.4-0.65 everywhere: the budget, not the partition. The top end (66-70) is a real event: the true section jumps at 66.4 (radius 16.1 → 17.9 → 16.7, x centroid -5 → -9.5 → -7.5) and again at 68.2 (16.5 → 17.6): something joins the body ring, twice, between layers. The part runs on through it in both settings (a cut there would leave 2 layers, FIT_MIN = 4), and no polynomial follows a step: 1.5 layer heights off between the centres at 6144, though 0.07 at them. The bottom end (39-40) is smooth in truth; with KAPPA 1e4 the polynomial swings there anyway (more than 2 layers off between the first centres; beyond the end centres up to 193 layer heights of radius): the ill-conditioning KAPPA 1e2 prevents. The default follows it. Note: the SDF decode does not read the polynomial between the centres (it interpolates the rings' signed distance), so the lines between the dots are the polynomial's behaviour, not the mesh's.
dino profile KAPPA 1e4 dino profile default

Why 1024 atoms is wavy, and a smaller dictionary

The cap on the atom count changes nothing below it: the selection is one projection and one sort, so MAX_ATOMS = 2048 and decoding 1024 gives the dino's descriptor and mesh bit for bit as 6144 does. The waves at 1024 are the selection's: it keeps the atoms of largest energy (185 of 1021 values in the dino's body part, scattered over degrees 0-16), so the error left is the sum of the dropped degree polynomials, an oscillation along the height (0.4-0.6 of a layer). A smaller dictionary (scripts/nm_sweep.py; the cut test fits with the same M, so a lower M also cuts more): lowering N loses the angular detail (8 / 8: Chamfer 1.07-1.17 times, normals 1.6-1.8 times at 1024 / 2048; the battery and the open box worst); the dino's body at N 8, M 8 is smooth along the height at 1024 (degrees up to 4 kept) but 0.35-0.55 of a layer off the ground truth, and 0.25-0.5 still at 6144: 8 harmonics cannot draw its section (the dots there are the N 8 rings, not the truth). Keeping N 16 and lowering M only: Chamfer within 0.4 % at every budget; normals over 30° 8 % fewer at 256 (M 12 or 8), 4-10 % more at 1024 / 2048; elephant better (42.5 → 37.2 % at 1024, M 8), dress worse. A lower degree trades the waves for more parts; at 1024 the error stays about the same size.
NMpartsChamfer ×
256
Chamfer ×
1024
Chamfer ×
2048
>30° ×
256
>30° ×
1024
>30° ×
2048
16241341.0001.0001.0001.0001.0001.000
16161380.9970.9991.0000.9971.0121.012
16121390.9971.0001.0000.9201.0451.045
1681541.0030.9960.9980.9211.1011.096
12161371.0111.0261.0401.0161.1311.182
8121391.0611.1171.1691.0771.6061.703
881541.0671.1121.1691.0881.6341.775
661781.1681.3071.4031.1502.1162.367
441981.2941.6071.7671.4523.0753.748
nm_dino_N16_M24_a1024 nm_dino_N16_M8_a1024 nm_dino_N8_M8_a1024 nm_elephant_N16_M24_a1024 nm_elephant_N16_M8_a1024 nm_elephant_N8_M8_a1024 nm_horse_N16_M24_a1024 nm_horse_N16_M8_a1024 nm_horse_N8_M8_a1024 nm_bowl_gso_N16_M24_a1024 nm_bowl_gso_N16_M8_a1024 nm_bowl_gso_N8_M8_a1024 dino profile N8 M8

Step 3: the fewest parts for a tolerance

scripts/dp_split.py: each track partitioned by dynamic programming into the fewest pieces (at least FIT_MIN = 4 layers) whose full fit misses no ring by more than the tolerance; among those the least total squared miss (cuts on the events). dp-coef: the package's measure and tolerance (coefficients, 0.01), so its difference from greedy (the package) is the search alone; dp-shape-t: the miss in shape, the tolerance t layer heights. Worst part miss: over all parts of all objects, the full fit's worst ring, in shape (layer heights). Ratios to greedy. Renders at 1024 atoms below the tables (6144 in img/).

10 objects complete.

partitionpartsworst part miss
(layer heights)
parts over
0.25 layer
Chamfer ×
256
Chamfer ×
1024
Chamfer ×
6144
>30° ×
256
>30° ×
1024
>30° ×
6144
greedy1340.3831.0001.0001.0001.0001.0001.000
dp-coef1280.3841.0991.0361.0011.2041.2581.052
dp-shape-0.11450.9711.0971.0531.0001.1861.1731.019
dp-shape-0.151370.1501.1011.0390.9991.2151.2321.017
dp-shape-0.21310.2001.0931.0400.9981.2091.2391.015
dp-shape-0.31260.2811.1011.0450.9991.2181.2511.013
objectgreedy
parts / worst
dp-coef
parts / worst
dp-shape-0.1
parts / worst
dp-shape-0.15
parts / worst
dp-shape-0.2
parts / worst
dp-shape-0.3
parts / worst
battery_stepped4 / 0.004 / 0.004 / 0.004 / 0.004 / 0.004 / 0.00
dress17 / 0.3116 / 0.3119 / 0.9719 / 0.1518 / 0.1716 / 0.24
elephant27 / 0.1825 / 0.3128 / 0.0525 / 0.1524 / 0.2024 / 0.20
bowl_of5 / 0.075 / 0.075 / 0.075 / 0.075 / 0.075 / 0.07
bowl_gso6 / 0.105 / 0.285 / 0.105 / 0.105 / 0.105 / 0.10
mug8 / 0.158 / 0.149 / 0.038 / 0.148 / 0.148 / 0.14
dino25 / 0.3825 / 0.3828 / 0.1027 / 0.1327 / 0.1326 / 0.24
shoe22 / 0.2321 / 0.2324 / 0.0923 / 0.1121 / 0.2019 / 0.28
open_box2 / 0.012 / 0.012 / 0.012 / 0.012 / 0.012 / 0.01
horse18 / 0.1917 / 0.1921 / 0.1019 / 0.1417 / 0.1917 / 0.19
dp_battery_stepped_dp-coef_a1024 dp_battery_stepped_dp-shape-0.1_a1024 dp_battery_stepped_dp-shape-0.15_a1024 dp_battery_stepped_dp-shape-0.2_a1024 dp_battery_stepped_dp-shape-0.3_a1024 dp_dress_dp-coef_a1024 dp_dress_dp-shape-0.1_a1024 dp_dress_dp-shape-0.15_a1024 dp_dress_dp-shape-0.2_a1024 dp_dress_dp-shape-0.3_a1024 dp_elephant_dp-coef_a1024 dp_elephant_dp-shape-0.1_a1024 dp_elephant_dp-shape-0.15_a1024 dp_elephant_dp-shape-0.2_a1024 dp_elephant_dp-shape-0.3_a1024 dp_bowl_of_dp-coef_a1024 dp_bowl_of_dp-shape-0.1_a1024 dp_bowl_of_dp-shape-0.15_a1024 dp_bowl_of_dp-shape-0.2_a1024 dp_bowl_of_dp-shape-0.3_a1024 dp_bowl_gso_dp-coef_a1024 dp_bowl_gso_dp-shape-0.1_a1024 dp_bowl_gso_dp-shape-0.15_a1024 dp_bowl_gso_dp-shape-0.2_a1024 dp_bowl_gso_dp-shape-0.3_a1024 dp_mug_dp-coef_a1024 dp_mug_dp-shape-0.1_a1024 dp_mug_dp-shape-0.15_a1024 dp_mug_dp-shape-0.2_a1024 dp_mug_dp-shape-0.3_a1024 dp_dino_dp-coef_a1024 dp_dino_dp-shape-0.1_a1024 dp_dino_dp-shape-0.15_a1024 dp_dino_dp-shape-0.2_a1024 dp_dino_dp-shape-0.3_a1024 dp_shoe_dp-coef_a1024 dp_shoe_dp-shape-0.1_a1024 dp_shoe_dp-shape-0.15_a1024 dp_shoe_dp-shape-0.2_a1024 dp_shoe_dp-shape-0.3_a1024 dp_open_box_dp-coef_a1024 dp_open_box_dp-shape-0.1_a1024 dp_open_box_dp-shape-0.15_a1024 dp_open_box_dp-shape-0.2_a1024 dp_open_box_dp-shape-0.3_a1024 dp_horse_dp-coef_a1024 dp_horse_dp-shape-0.1_a1024 dp_horse_dp-shape-0.15_a1024 dp_horse_dp-shape-0.2_a1024 dp_horse_dp-shape-0.3_a1024

Step 4: cut where the shape jumps between neighbouring rings

scripts/ring_steps.py: along each track (before any cut), the shape change from one ring to the next (each ring evaluated at 256 points from its Fourier series, the RMS distance of each one's points to the other's polyline, both ways: no fit, and no dependence on where a ring starts), log scale, with the package's cuts (red). scripts/spike_split.py: a cut where that step is at least 2.5 times the median of the steps within 4 layers on either side and at least one layer height; pieces down to 2 layers. spike: nothing else; spike+fit: then the package's cut search inside any piece whose fit still misses by more than 0.25 of a layer in shape.

The events stand out as spikes over a slowly varying baseline (0.02-1.5 layer heights). The dino's long track is cut by the package on its spikes already (11.5, 29.5, 38.5, 68.5; 66.5 not, as it would leave 2 layers). The elephant's body has spikes at 8, 13, 26, 30, 50-51, 64, 89, 91, 96, and the package cuts on some (13, 51, 91), between 26 and 30, and on flat stretches at 19, 36, 61, 70, 77; 64, 89, 96 not. The bowl's wall is smooth from 9 to 114 (falling from 1 to 0.02 as it turns vertical); its spikes are the bottom edge (6-8, up to 15 layer heights) and the rim (115+), and the package's cuts at 14.5 and 26.5 sit on the smooth stretch, fencing off the bottom edge that is too close to the end to cut. First three objects: spikes alone leave the bowl's bottom edge inside (between the track's first two rings: a cut would leave one ring; 14.8 layer heights off) and an elephant piece at 0.47; with the check: elephant 27 parts (0.21), bowl 5 (0.10, one fewer than the package), dino 28 (0.24 against the package's 25 at 0.38: the two-layer pieces at its joins).
steps elephantsteps dinosteps bowl_gsosteps horsesteps shoe

10 objects complete.

partitionpartsworst part miss
(layer heights)
parts over
0.25 layer
Chamfer ×
256
Chamfer ×
1024
Chamfer ×
6144
>30° ×
256
>30° ×
1024
>30° ×
6144
greedy1340.3831.0001.0001.0001.0001.0001.000
spike12714.79121.0121.0431.0620.8571.4351.658
spike+fit1420.2400.9580.9780.9990.6690.9071.011
objectgreedy
parts / worst
spike
parts / worst
spike+fit
parts / worst
battery_stepped4 / 0.004 / 0.004 / 0.00
dress17 / 0.3117 / 2.6822 / 0.24
elephant27 / 0.1825 / 0.4727 / 0.21
bowl_of5 / 0.074 / 0.815 / 0.07
bowl_gso6 / 0.104 / 14.795 / 0.10
mug8 / 0.159 / 0.159 / 0.15
dino25 / 0.3828 / 0.2428 / 0.24
shoe22 / 0.2318 / 0.6423 / 0.23
open_box2 / 0.012 / 0.012 / 0.01
horse18 / 0.1916 / 0.7017 / 0.22
spike_battery_stepped_spike_a1024 spike_battery_stepped_spike+fit_a1024 spike_dress_spike_a1024 spike_dress_spike+fit_a1024 spike_elephant_spike_a1024 spike_elephant_spike+fit_a1024 spike_bowl_of_spike_a1024 spike_bowl_of_spike+fit_a1024 spike_bowl_gso_spike_a1024 spike_bowl_gso_spike+fit_a1024 spike_mug_spike_a1024 spike_mug_spike+fit_a1024 spike_dino_spike_a1024 spike_dino_spike+fit_a1024 spike_shoe_spike_a1024 spike_shoe_spike+fit_a1024 spike_open_box_spike_a1024 spike_open_box_spike+fit_a1024 spike_horse_spike_a1024 spike_horse_spike+fit_a1024

Step 5: cut only when coefficients AND shape miss

scripts/and_test.py: the package's cut search unchanged; a piece is cut only when its fit misses a ring by more than 0.01 in coefficients (the points at the same t) and by more than t layer heights in shape (closest points). Sliding along the ring (large in coefficients, small in shape) no longer cuts.

It changes little: 134 parts → 133 (t = 0.15, 0.2), 129 (0.25), 128 (0.3); Chamfer within 0.2 % at every budget, normals within 1.5 %. Only a handful of the package's cuts come from sliding: the rest are misses of more than 0.3 of a layer in shape, real changes the polynomial does not follow. With the cut test as the lever, there is little room to make parts bigger at the same accuracy.
Why so little (scripts/and_scatter.py: every piece the package's cut search tests, its fit's worst miss in coefficients and in shape). 144 pieces tested on the ten meshes, 60 cut. The shape miss is about half the coefficient miss (median 0.48; 10-90 % 0.27-0.73), and the points sit close to that line: a piece that fails the coefficient test (over 0.58 of a layer) is almost always over 0.3 of a layer in shape too. Of the 60 cuts, the shape miss is under 0.15 for 1, under 0.25 for 5, under 0.3 for 6, under 0.4 for 9, under 0.58 (the same number as the coefficient tolerance) for 12. AND spares only those; the rest are real shape misses.
coefficient and shape miss of every tested piece

10 objects complete.

partitionpartsworst part miss
(layer heights)
parts over
0.25 layer
Chamfer ×
256
Chamfer ×
1024
Chamfer ×
6144
>30° ×
256
>30° ×
1024
>30° ×
6144
greedy1340.3831.0001.0001.0001.0001.0001.000
and-0.151330.3830.9981.0001.0000.9970.9980.997
and-0.21330.3830.9981.0001.0000.9970.9980.997
and-0.251290.3830.9981.0001.0000.9900.9911.007
and-0.31280.3841.0001.0001.0000.9860.9861.012
objectgreedy
parts / worst
and-0.15
parts / worst
and-0.2
parts / worst
and-0.25
parts / worst
and-0.3
parts / worst
battery_stepped4 / 0.004 / 0.004 / 0.004 / 0.004 / 0.00
dress17 / 0.3117 / 0.3117 / 0.3116 / 0.3116 / 0.31
elephant27 / 0.1827 / 0.1827 / 0.1825 / 0.2125 / 0.21
bowl_of5 / 0.075 / 0.075 / 0.075 / 0.075 / 0.07
bowl_gso6 / 0.106 / 0.106 / 0.106 / 0.106 / 0.10
mug8 / 0.158 / 0.158 / 0.158 / 0.158 / 0.15
dino25 / 0.3825 / 0.3825 / 0.3825 / 0.3825 / 0.38
shoe22 / 0.2321 / 0.2321 / 0.2321 / 0.2320 / 0.28
open_box2 / 0.012 / 0.012 / 0.012 / 0.012 / 0.01
horse18 / 0.1918 / 0.1918 / 0.1917 / 0.2217 / 0.22
and_battery_stepped_and-0.2_a1024 and_battery_stepped_and-0.25_a1024 and_dress_and-0.2_a1024 and_dress_and-0.25_a1024 and_elephant_and-0.2_a1024 and_elephant_and-0.25_a1024 and_bowl_of_and-0.2_a1024 and_bowl_of_and-0.25_a1024 and_bowl_gso_and-0.2_a1024 and_bowl_gso_and-0.25_a1024 and_mug_and-0.2_a1024 and_mug_and-0.25_a1024 and_dino_and-0.2_a1024 and_dino_and-0.25_a1024 and_shoe_and-0.2_a1024 and_shoe_and-0.25_a1024 and_open_box_and-0.2_a1024 and_open_box_and-0.25_a1024 and_horse_and-0.2_a1024 and_horse_and-0.25_a1024

The mug's handle: where coefficients and shape part ways

scripts/mug_handle.py mug: along the body track, the step between neighbouring rings in coefficients (points at the same t: what the fit sees) and in shape (closest points), with the package's cuts; below, the rings around the four largest steps (start point dotted; the slice's other rings, the handle, in grey).

Layers 28-38: the handle's root grows out of the body ring as a lobe; the coefficient step (about 3 layer heights) is 2.7 times the shape step (1.1): the lobe adds length and every point slides. The package does not cut there: the fit follows it, and the body part 6-38 holds the whole root. 38 → 39: the lobe pinches off and becomes its own ring (the handle hole appears): the body ring loses a lobe of about 8 layer heights in one layer, shape step 7.8 (19 in coefficients), and the package cuts exactly there. 94 → 95 and 101 → 102: the handle joins from above in one layer (4.3) and pinches off again (5.6): cuts at 93 and 102. The rim (119 → 121): 47 in coefficients against 5 in shape (the start point jumps), then a real jump of 31: cut at 113. The cuts are on real jumps of the outline, which both measures see; where only the coefficients jump, the fit follows, or a real jump is next to it. To keep the handle region in the body's part, the part would have to hold a lobe that vanishes within one layer: no height polynomial can, whatever the cut rule. The way out is the tracking: the lobe as its own part from where it starts to grow (a ring split at its neck).
mug handle steps

Step 6: rings split at their necks before tracking (prototype)

scripts/neck_split.py mug: every solid ring cut at its narrowest neck (the pair of points with the least chord / shorter arc, under 0.3, chord inside, both pieces at least 3 % of the area), then the package's tracking, Fourier and cut rule unchanged.

Mug: 4 tracks → 12, 8 parts → 16 (worst part miss 0.15 → 0.18 of a layer). The handle becomes three parts (lower root 33-39, handle 40-95, upper root 96-100), but the body is still cut at 33 and 96: the neck forms only once the lobe is longer than it is wide, so the body ring still holds the short bump at 28-32 and loses it at 33 (a smaller jump, still cut). The rim's thin lip (120-121) is shredded into 7 parts. To work, a split found at one layer would have to be carried down the track to the layers where the lobe is still a bump (two passes), and thin rings (rims, walls) kept whole. Not run on the other objects.
mug package mug rings split at necks

Step 7: momentum, the body goes on and the lobe is peeled off (prototype, mug)

scripts/momentum.py mug: after tracking, a long solid track is fitted along the height on the layers it follows; at the others the clean body is interpolated (PCHIP per coefficient) from the undisturbed layers on either side. Where a ring is the clean ring plus a lobe (reaching 2 layer heights out, meeting the clean ring along at most 40 % of it), the track keeps ring AND clean ring and the lobe (widened 1.5 layer heights into the body, so the parts overlap) goes to the track it touches (the handle). Then the package's cut rule.

The body is one part from the base to layer 96, through the lower handle attachment (the package: 6-38, 39-92, 93-101); the lower root joins the handle's track (one cut left at 39, where the handle hole opens: a real ledge). The upper attachment only partly (the body flares towards the rim there; the body cut at 97). 9 parts against 8, worst part miss 0.14 against 0.15. Accuracy: Chamfer 0.296 / 0.228 / 0.223 against 0.282 / 0.225 / 0.220 at 256 / 1024 / 6144; normals over 30° 13.8 / 2.8 / 1.9 % against 12.7 / 0.96 / 0.52 %. The overlap costs it: the decoder's signed distance at a layer is to the nearest ring edge, the lobe's edges inside the body included, and near the junction those inner edges bend the field. Parts that overlap are inside for the decoder, but its distance assumes rings that do not. Making this pay would take a union distance in the decoder (each part's own distance, then the largest), on NumPy, numba and CUDA, bit for bit.
mug package mug momentum

With the union distance in the decoder (worktree ../fcp_devel_union, branch union-sdf)

Decoder: the distance at a layer is measured only to segments on the region's boundary (a segment whose midpoint the other rings put inside the region on both of its sides is left out; the parity unchanged); one host flag table, the same on NumPy, numba and CUDA; disjoint or nested rings unchanged; all 281 tests pass. On the mug the flags work (the buried segments at the lower root, 28-38) and the bad normals there are gone. What is left is the upper attachment (95-101), right where the body flares towards the rim: the clean body predicted from below does not flare, so part of what is peeled is a band around the rim, not the handle. Peeled patchily (95, 100, 101): 9 parts, normals over 30° 2.8 / 2.0 % at 1024 / 6144 against 0.97 / 0.57; peeled whole (95-101): 8 parts with the body 6-102 one part, but Chamfer 0.75 against 0.22 (the band, drawn with 16 harmonics, wanders into the cavity). The lower attachment shows the idea works where the body is predictable; near the rim it does not yet.
mug momentum, union decoder

v6

The v6 work (the evaluation on meshes and clouds, the short-track filter, atoms="auto", lobe parts) has its own report: fcp_2910_v6/report/index.html.

Per object

battery_stepped dress elephant bowl_of bowl_gso mug dino shoe open_box horse

Green / red: better / worse than the default row by 2 % (Chamfer) or 5 % (normals).

battery_stepped

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit1002442429.00.25860.25860.25863.043.043.040.5573
tracked-fit1003542729.00.25860.25860.25863.043.043.040.5573
tracked-fit1005042729.00.25860.25860.25863.043.043.040.5573
tracked-fit1008042729.00.25860.25860.25863.043.043.040.5573
tracked-fit10002442429.00.25860.25860.25863.043.043.040.5573
tracked-fit10003543329.00.25860.25860.25863.043.043.040.5573
tracked-fit10005043329.00.25860.25860.25863.043.043.040.5573
tracked-fit10008043329.00.25860.25860.25863.043.043.040.5573
tracked-fit100002442429.00.26130.25940.25944.883.473.470.5599
tracked-fit100003543529.00.26130.25940.25944.883.473.470.5599
tracked-fit100005043729.00.26130.25940.25944.883.473.470.5599
tracked-fit100008043729.00.26130.25940.25944.883.473.470.5599
battery_stepped_tracked-fit_k10000_M50_a1024 battery_stepped_tracked-fit_k10000_M50_a6144 battery_stepped_tracked-fit_k1000_M35_a1024 battery_stepped_tracked-fit_k1000_M35_a6144 battery_stepped_tracked-fit_k100_M24_a1024 battery_stepped_tracked-fit_k100_M24_a6144 battery_stepped_shape-fit_k100_M24_a1024 battery_stepped_shape-fit_k100_M24_a6144

dress

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit10024171612.60.35160.18520.155242.6531.4926.850.3459
tracked-fit10035171612.60.35160.18520.155242.6531.4926.850.3459
tracked-fit10050171612.60.35160.18520.155242.6531.4926.850.3459
tracked-fit10080171612.60.35160.18520.155242.6531.4926.850.3459
tracked-fit100024161813.40.38290.20210.154543.8333.6026.530.34353
tracked-fit100035161813.40.38290.20210.154543.8333.6026.530.34353
tracked-fit100050161813.40.38290.20210.154543.8333.6026.530.34353
tracked-fit100080161813.40.38290.20210.154543.8333.6026.530.34353
tracked-fit1000024132416.50.37750.20770.154843.9034.6626.960.34397
tracked-fit1000035132416.50.37750.20770.154843.9034.6626.960.34397
tracked-fit1000050132416.50.37750.20770.154843.9034.6626.960.34397
tracked-fit1000080132416.50.37750.20770.154843.9034.6626.960.34397
dress_tracked-fit_k10000_M50_a1024 dress_tracked-fit_k10000_M50_a6144 dress_tracked-fit_k1000_M35_a1024 dress_tracked-fit_k1000_M35_a6144 dress_tracked-fit_k100_M24_a1024 dress_tracked-fit_k100_M24_a6144 dress_shape-fit_k100_M24_a1024 dress_shape-fit_k100_M24_a6144

elephant

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit1002427156.20.78700.37200.233359.8542.5216.530.487
tracked-fit1003527156.20.78700.37200.233359.8542.5216.530.487
tracked-fit1005027156.20.78700.37200.233359.8542.5216.530.487
tracked-fit1008027156.20.78700.37200.233359.8542.5216.530.487
tracked-fit10002424187.00.74210.36040.233554.9639.8717.020.48851
tracked-fit10003524187.00.74210.36040.233554.9639.8717.020.48851
tracked-fit10005024187.00.74210.36040.233554.9639.8717.020.48851
tracked-fit10008024187.00.74210.36040.233554.9639.8717.020.48851
tracked-fit100002423207.30.72210.36580.233256.5240.0916.530.48691
tracked-fit100003523207.30.72210.36580.233256.5240.0916.530.48691
tracked-fit100005022207.60.73540.37200.233455.4541.0316.460.48816
tracked-fit100008022207.60.73540.37200.233455.4541.0316.460.48816
elephant_tracked-fit_k10000_M50_a1024 elephant_tracked-fit_k10000_M50_a6144 elephant_tracked-fit_k1000_M35_a1024 elephant_tracked-fit_k1000_M35_a6144 elephant_tracked-fit_k100_M24_a1024 elephant_tracked-fit_k100_M24_a6144 elephant_shape-fit_k100_M24_a1024 elephant_shape-fit_k100_M24_a6144

bowl_of

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit1002452444.60.20930.19760.19664.800.300.320.44587
tracked-fit1003543355.80.21700.19780.19666.550.340.310.44556
tracked-fit1005043355.80.21700.19780.19666.550.340.310.44558
tracked-fit1008043355.80.21700.19780.19666.540.340.310.44556
tracked-fit10002442455.80.27560.20010.197920.291.660.820.44991
tracked-fit10003543555.80.21920.19780.19717.390.500.330.44785
tracked-fit10005034174.30.29630.19980.197216.291.560.610.44762
tracked-fit10008034174.30.29620.19980.197316.281.560.620.4477
tracked-fit100002442455.80.27560.20010.197920.291.660.820.44991
tracked-fit100003543555.80.29740.20080.197319.191.510.340.44806
tracked-fit100005034774.30.29630.20010.197216.291.680.330.4473
tracked-fit100008034774.30.29620.20010.197216.281.680.330.44727
bowl_of_tracked-fit_k10000_M50_a1024 bowl_of_tracked-fit_k10000_M50_a6144 bowl_of_tracked-fit_k1000_M35_a1024 bowl_of_tracked-fit_k1000_M35_a6144 bowl_of_tracked-fit_k100_M24_a1024 bowl_of_tracked-fit_k100_M24_a6144 bowl_of_shape-fit_k100_M24_a1024 bowl_of_shape-fit_k100_M24_a6144

bowl_gso

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit1002462436.20.21860.19840.19867.441.100.990.44427
tracked-fit1003553043.40.22360.19970.19949.091.941.570.44426
tracked-fit1005053043.40.22360.19970.19949.091.941.570.44426
tracked-fit1008053043.40.22360.19970.19949.091.941.570.44426
tracked-fit10002452443.40.22340.19960.19918.841.210.930.44472
tracked-fit10003543554.20.25410.20050.199112.331.961.280.44625
tracked-fit10005044054.20.25410.20040.198712.331.560.970.44269
tracked-fit10008044054.20.25410.20030.198712.331.560.970.44266
tracked-fit100002452443.40.22340.19910.19868.841.170.990.44347
tracked-fit100003543554.20.25410.20050.199112.331.961.280.44625
tracked-fit100005044654.20.25410.20000.198312.331.671.030.4428
tracked-fit100008044654.20.25410.20000.198312.331.671.030.44273
bowl_gso_tracked-fit_k10000_M50_a1024 bowl_gso_tracked-fit_k10000_M50_a6144 bowl_gso_tracked-fit_k1000_M35_a1024 bowl_gso_tracked-fit_k1000_M35_a6144 bowl_gso_tracked-fit_k100_M24_a1024 bowl_gso_tracked-fit_k100_M24_a6144 bowl_gso_shape-fit_k100_M24_a1024 bowl_gso_shape-fit_k100_M24_a6144

mug

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit1002482435.20.28220.22490.220412.680.960.520.49436
tracked-fit1003583235.20.28220.22490.220512.680.960.510.4946
tracked-fit1005083235.20.28220.22490.220512.680.960.510.4946
tracked-fit1008083235.20.28220.22490.220512.680.960.510.49452
tracked-fit10002472440.30.34850.23020.220920.512.510.570.49818
tracked-fit10003573540.30.33570.23030.220418.132.550.500.4975
tracked-fit10005073940.30.33570.23030.220518.132.550.530.49696
tracked-fit10008073940.30.33570.23030.220518.132.550.530.49694
tracked-fit100002462447.00.34930.23090.220420.582.821.040.49603
tracked-fit100003563547.00.34090.23160.220117.202.940.550.49727
tracked-fit100005064547.00.34090.23160.220017.202.940.580.49639
tracked-fit100008064547.00.34090.23160.220017.202.940.580.49647
mug_tracked-fit_k10000_M50_a1024 mug_tracked-fit_k10000_M50_a6144 mug_tracked-fit_k1000_M35_a1024 mug_tracked-fit_k1000_M35_a6144 mug_tracked-fit_k100_M24_a1024 mug_tracked-fit_k100_M24_a6144 mug_shape-fit_k100_M24_a1024 mug_shape-fit_k100_M24_a6144

dino

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit10024251911.60.40410.19430.134037.3618.057.280.28603
tracked-fit10035251911.60.40410.19430.134037.3618.057.280.28603
tracked-fit10050251911.60.40410.19430.134037.3618.057.280.28603
tracked-fit10080251911.60.40410.19430.134037.3618.057.280.28603
tracked-fit100024242312.00.41120.20190.133236.8419.936.950.28514
tracked-fit100035242312.00.41120.20190.133236.8419.936.950.28514
tracked-fit100050242312.00.41120.20190.133236.8419.936.950.28514
tracked-fit100080242312.00.41120.20190.133236.8419.936.950.28514
tracked-fit1000024212413.80.40590.21130.134134.4121.587.010.28433
tracked-fit1000035212513.80.41300.21750.134035.9423.066.840.28514
tracked-fit1000050212513.80.41300.21750.134035.9423.066.840.28514
tracked-fit1000080212513.80.41300.21750.134035.9423.066.840.28514
dino_tracked-fit_k10000_M50_a1024 dino_tracked-fit_k10000_M50_a6144 dino_tracked-fit_k1000_M35_a1024 dino_tracked-fit_k1000_M35_a6144 dino_tracked-fit_k100_M24_a1024 dino_tracked-fit_k100_M24_a6144 dino_shape-fit_k100_M24_a1024 dino_shape-fit_k100_M24_a6144

shoe

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit10024221510.10.43930.25110.190433.7426.477.570.41043
tracked-fit10035221510.10.43930.25110.190433.7426.477.570.41043
tracked-fit10050221510.10.43930.25110.190433.7426.477.570.41043
tracked-fit10080221510.10.43930.25110.190433.7426.477.570.41043
tracked-fit100024201811.20.58110.27260.191243.6030.949.130.41068
tracked-fit100035201811.20.50490.26310.191040.9129.608.270.41268
tracked-fit100050201811.20.50490.26310.191040.9129.608.270.41268
tracked-fit100080201811.20.50490.26310.191040.9129.608.270.41268
tracked-fit1000024172113.10.61830.27890.191443.8932.489.550.41005
tracked-fit1000035182112.40.57620.27510.191444.9433.499.580.41281
tracked-fit1000050182112.40.57620.27510.191444.9433.499.580.41281
tracked-fit1000080182112.40.57620.27510.191444.9433.499.580.41281
shoe_tracked-fit_k10000_M50_a1024 shoe_tracked-fit_k10000_M50_a6144 shoe_tracked-fit_k1000_M35_a1024 shoe_tracked-fit_k1000_M35_a6144 shoe_tracked-fit_k100_M24_a1024 shoe_tracked-fit_k100_M24_a6144 shoe_shape-fit_k100_M24_a1024 shoe_shape-fit_k100_M24_a6144

open_box

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit10024224112.00.25680.25670.25661.001.011.100.55454
tracked-fit10035234112.00.25680.25650.25651.001.051.020.55368
tracked-fit10050234112.00.25680.25650.25651.001.051.020.55368
tracked-fit10080234112.00.25680.25650.25651.001.061.020.55381
tracked-fit100024224112.00.25680.25670.25661.001.011.100.55454
tracked-fit100035235112.00.25680.25660.25661.001.051.020.55425
tracked-fit100050241112.00.25680.25660.25661.001.051.020.55426
tracked-fit100080241112.00.25680.25660.25661.001.051.020.55438
tracked-fit1000024224112.00.25680.25670.25661.001.011.100.55454
tracked-fit1000035235112.00.25680.25660.25661.001.051.020.55425
tracked-fit1000050247112.00.25680.25660.25661.001.051.020.55426
tracked-fit1000080247112.00.25680.25660.25661.001.051.020.55438
open_box_tracked-fit_k10000_M50_a1024 open_box_tracked-fit_k10000_M50_a6144 open_box_tracked-fit_k1000_M35_a1024 open_box_tracked-fit_k1000_M35_a6144 open_box_tracked-fit_k100_M24_a1024 open_box_tracked-fit_k100_M24_a6144 open_box_shape-fit_k100_M24_a1024 open_box_shape-fit_k100_M24_a6144

horse

ruleκMpartslongest degmean lengthChamfer %
256
Chamfer %
1024
Chamfer %
6144
>30° %
256
>30° %
1024
>30° %
6144
p95 %
6144
tracked-fit10024182420.70.37330.18510.142327.8410.952.890.29711
tracked-fit10035182420.70.37330.18510.142327.8410.952.890.29711
tracked-fit10050182420.70.37330.18510.142327.8410.952.890.29711
tracked-fit10080182420.70.37330.18510.142327.8410.952.890.29711
tracked-fit100024172421.90.43180.20340.142433.9015.022.910.29755
tracked-fit100035172921.90.44060.20810.143135.2516.172.890.29982
tracked-fit100050172921.90.44060.20810.143135.2516.172.890.29982
tracked-fit100080172921.90.44060.20810.143135.2516.172.890.29982
tracked-fit1000024152424.90.43660.21530.142338.0420.852.860.29715
tracked-fit1000035153324.90.44790.21320.142641.0919.742.980.29767
tracked-fit1000050153324.90.44790.21320.142641.0919.742.980.29767
tracked-fit1000080153324.90.44790.21320.142641.0919.742.980.29767
horse_tracked-fit_k10000_M50_a1024 horse_tracked-fit_k10000_M50_a6144 horse_tracked-fit_k1000_M35_a1024 horse_tracked-fit_k1000_M35_a6144 horse_tracked-fit_k100_M24_a1024 horse_tracked-fit_k100_M24_a6144 horse_shape-fit_k100_M24_a1024 horse_shape-fit_k100_M24_a6144