Extracting only the outer & visible surfaces of a complex model

I was trying out an idea for this recently - a sort of inverse of an isovist.
So instead of finding the volume reached by rays projected out from a point in an interior, taking a sphere around an object and projecting rays inwards towards the center.

It’s simple and fairly fast to calculate, since for each point of the sphere it just needs to find the first intersection of a ray with the objects. Because the rays don’t cross, the resulting mesh shouldn’t have any self-intersections as long as it doesn’t have holes all the way through, and the sphere is centred inside the input.

wrap_project.gh (9.3 KB)

It works better for some shapes than others - protruding features can cause ‘shadows’ like you see on the wing mirrors.
For shapes with lots of thin curving features this approach works really badly-


Perhaps there could be some way to combine several of these projections from a few different sphere centers. Interested to hear if anyone has ideas!

To get a tighter wrap, I was also trying these inverse-isovists as an initializer for the TriRemesh function. It’s faster than starting the remeshing from just a bounding box or convex hull since it is already quite close to the target shape in most places, and it can pull in to get the details the projection misses. It still has problems with thin features below the resolution of the mesh though, like the sharp edge at the back and the details inside the wheel arches.

2 Likes