ACD Context
- ACD: approximate a dense mesh with a few convex pieces (collisions for games/VR/robotics sim). Objectives: 1) minimize # of components , 2) minimize total concavity
- Prior methods: concavity metric + plane-selection strategy. Greedy (V-HACD, NavACD) is fast but leaves redundant pieces. CoACD uses MCTS over plane cuts which is better, but simulates many exact cuts per step which is slow
- RL-ACD: learning a policy that predicts the cutting plane
Pipeline
- State = current set of pieces . Action = (which piece & plane, ), transition = boolean cut:
- Reward (hull volume removed normalized by the whole mesh) + a completion bonus at the end so it stops cutting
- Policy only sees , never (POMDP obs ). This is fine because reward adds across pieces so other pieces donβt change the best cut for
- State encoder: sample 2048 points on and on , normalize, run through frozen pre-trained I2P-MAE
- Discrete action space, fixed candidate set with choices (a) equidistant axis-aligned XYZ planes (b) PCA-axis-aligned planes (c) concave-edge planes
- Same for every piece, pieces are normalized before encoding so every piece has the same candidates. DQN: output heads, head = . Only encode once, one MLP pass, argmax
- Deploy: whole mesh starts as one piece. In each step encode every piece, one MLP pass each, take the global best and perform that cut, repeat until every pieceβs concavity < threshold. This is greedy but over a quantity that accounts for the future, , instead of immediate concavity reduction like priors
- Q-net is a small 4-layer MLP with in, Q-values out. Soft Q-learning (soft-max instead of max in the Bellman target)
Baseline
V-HACD, NavACD (greedy) + CoACD (MCTS)
Results
Table 1. ShapeNet decomposition performance (format: meanmax Β±std). Parameters: π‘π=convexity threshold(%), π=navigation spaceβs radius(%), π‘=navigation spacesβs tolerance distance(%). Metrics: π·β=Hausdorff distance, #P=part count, #F=face count (k=Γ103 ), π =computation time
Fig. 6. Comparison with V-HACD using the same number of decomposed parts. Numbers below each result indicate the number of convex parts, Hausdorff distance, face number, and decomposition time (π ). Close-up views highlight decomposition quality.
Dual-state Bellman loss
We donβt use standard Q-learning because
- yields exactly one next state when we should have two (two children from slice)
- The true = all of which we do not want to encode
RL-ACD
- Assume value of a pile of pieces = sum of each pieceβs value, . Cutting doesnβt touch the others, so they cancel out of the target. Therefore we can have the network look at one piece at a time
- Score of a piece = score of its best available cut,
- Dual-state Bellman loss:
- , same. This weights bigger (by volume) halves more
- Halves donβt overlap so , which is the contraction condition converges. and trains faster than one shared
- Everything else is deep soft Q-learning
Learned policy vs. tree search
MCTS
- Every step simulates exact cuts (slice mesh, hull children) for many candidate planes over multiple lookahead steps to find the best cut
- Cost = # candidates * depth * exact-cut
- Nothing carries over between meshes
RL policy
- Exact cuts happen during training and get stored in a replay buffer. At runtime, one point cloud gets encoded + one MLP pass per piece, then best cut is chosen using Q-values, one exact cut executed
- A bigger candidate plane set is free, just more MLP outputs
- The Q value already accounts for the lookahead since the Bellman target folds in the future value of the two children, instead of simulating