I'm trying to make a program that takes a surface designed by the user, and different 3D geometries from a dataset as inputs and gives a good approximation of the surface using only the objects found in the dataset. This program shouldn't do any warping, and should avoid geometries to collide, even though cutting them could be acceptable, but again with as little loss as possible.
I thought about hardcoding this, but I can't find any good way to optimize the surface coverage without brute-forcing it. I'm wondering what ML techniques would be best for this, and how to find a good balance between precision and speed.