Structural Affinity: An Algorithm for Coherent Cage-Based Shape Design
Organizations: University of Cambridge
Abstract
Cage-based deformation (CBD) parametrises 3D geometry through a small set of control handles, effectively enabling a variety of tasks from animation and interactive modelling to tool-based co-design, neural deformation transfer, and aerodynamic shape optimization. Many optimization approaches relying on CBD employ regularisation strategies to reduce the distortion of the deformed mesh by encouraging smooth, regular cage deformations. These techniques offer soft guidance to an optimization algorithm towards desirable deformations, but compete with the task objective rather than changing the deformation parameterization itself. In this work we introduce Structural Affinity for CBD, an explicit regularisation method which enables smooth deformations through control cages by exploiting a two-cage structure to couple cage-handle motion directly. Structural Affinity precomputes an affinity matrix using mean-value coordinates, binding the inner control-cage to a coarser outer-cage. This matrix defines how much a cage handle displacement propagates to neighbouring handles which substantially decreases and often eliminates cage self-intersections, reduces mesh distortion, and adds linear overhead at deformation time. Across robotic control--morphology co-design, source-to-target neural deformation transfer, and aerodynamic wing shape optimization, Structural Affinity produces more regular deformations and substantially reduces reliance on hand-designed structural loss terms. We report consistent gains on three complementary diagnostics: the cotangent Laplacian, a proxy for surface smoothness; cage distortion, capturing whether control handles move coherently; and surface roughness, which measures undesirable oscillation in wing geometry.
Figures & tables
| Category | Method | Cage Lap ( ) | Cage Edge | CotLap | Self-Intersect ( ) | DCD | SAUCD |
| Chair | Vanilla NC | ||||||
| CBD-SA NoReg | |||||||
| CBD-SA NC Loss | |||||||
| Table | Vanilla NC | ||||||
| CBD-SA NoReg | |||||||
| CBD-SA NC Loss |
Appendix figures & tables17 assets
Supplementary material from the paper’s appendix.
Appendix
| Category | Affinity | Affinity Density |
| Chair | 0.3 | 0.4 |
| Table | 0.2 | 0.4 |
| Car | 0.4 | 0.4 |
| Category | Training shapes used for bounds | Outer cage | Scale/radii |
| Chair | 6,440 | 12V/20F | scale 2.25, margin 0.15 |
| Table | 8,015 | 12V/20F | |
| Car | 3,339 | 12V/20F |
| Outer cage | Seeds | Cage Laplacian | Chamfer |
| Canonical 12-vertex support | 6 | ||
| Coarser enclosing support | 3 | ||
| 20%-perturbed support | 3 |
| Category | Method | Effective cage Laplacian ( ) | Effective cage edge |
| Chair | Direct projection | 8.92 | 0.254 |
| CBD-SA | 5.18 | 0.232 | |
| Table | Direct projection | 20.79 | 0.350 |
| CBD-SA | 7.26 | 0.285 | |
| Car | Direct projection | 0.644 | 0.0716 |
| CBD-SA | 0.630 | 0.0667 |
| Category | Method | CD ( ) | DCD | SAUCD |
| Chair | Vanilla NC | |||
| CBD-SA NoReg | ||||
| CBD-SA NC Loss | ||||
| Table | Vanilla NC | |||
| CBD-SA NoReg | ||||
| CBD-SA NC Loss |
| Resolution | FFD Base Grid | FFD Base DVs | FFD Match DVs | CBD-SA DVs |
| Small | ||||
| Medium | ||||
| Large |
| Quantity | Value |
| Geometry | NASA Common Research Model (CRM) wing |
| Symmetry | Half-wing symmetry |
| Aerodynamic mesh | |
| Baseline twist | CRM twist baked into the baseline mesh |
| Mach number | |
| Freestream density |
| Scale | Affinity | Affinity Density |
| Small | 0.1 | 0.05 |
| Medium | 0.7 | 0.15 |
| Large | 0.7 | 0.1 |
| Optimizer | Driver | Main limits | Additional settings |
| SLSQP | SciPy | tol = 1e-9 maxiter = 200 small/medium maxiter = 2000 large | objective_scaler = 1e4 debug_print = false print_results = false opt_settings = {} |
| IPOPT | pyOptSparse | tol = 1e-6 maxiter = 3000 max_iter = 3000 | objective_scaler = 1e4 gradient_method = openmdao acceptable_tol = 1e-5 acceptable_iter = 15 hessian_approximation = limited-memory limited_memory_max_history = 1000 mu_strategy = monotone mu_init = 1e-5 nlp_scaling_method = none start_with_resto = yes max_resto_iter = 200 |
| Outer cage | Perturb. | Matched | Mean | 95% CI | Reduction |
| 19–27 vertices | 5% | 9 | 2.06% | ||
| 19–27 vertices | 10% | 9 | 0.83% | ||
| 38 vertices | 5% | 8 | 1.53% | ||
| 38 vertices | 10% | 9 | 0.75% |
| Parameter | Value |
| actor_hidden_dim | 128 |
| critic_hidden_dim | 256 |
| num_steps | 8 |
| v_min | |
| v_max | |
| policy_noise |