Procedural way to do normal scaling by exact distance? (Like cloth surface, but keep only resulting surface)


I’m looking for exactly what cloth surface does (with sub set to 0) where it expands or contracts by a consistent distance procedurally according to inidividual normals… except I just want the resulting surface, not a solid.

cloth normal expansion.c4d (172.2 KB)

It looks like this is sort of what normal scale tool does, but I can’t select polys because I am trying to apply it to a dynamic object whose polys (and even poly count) keep changing. Also, normal scale goes by percentage, and I want exact distance per poly just like cloth surface does. Is there some way to do this procedurally?


There are a few similar tools like Cloth (xsThickness, Solidify Generator) but you’ll still end up with a mesh.

Why not use cloth, or one of these others…and then constrain your desired objects onto the resulting position? Or just skip these and use constraint with an offset.


I’ve tried every permutation I could think of, and I’m not seeing how constraint would be used in that way. Are you referring to something other than surface clamping?

Just to clarify: Solid platonic group represents a single irregular (normals not aligned with origin) object. Goal is to expand the surface of that single object by the same exact distance in every direction. (Expand solid bit in image by consistent distance along individual poly normals so it precisely matches translucent contour).

Cloth sim was just first example I found that does normal scaling by entering a distance value… which would be ideal if I could just keep the new expanded / contracted surface.


I think I’ve got it… Displacement deformer set to 100% strength with directions set to vertex normals, and custom shader set to pure white. Need to experiment a bit to verify, but that seems at the moment to be giving procedural scaling with precise distance as user input.


Hadn’t heard of solidify generator. Looked it up / downloaded out of curiosity. Seems like a more straight forward version of the concept I was looking for, lets you keep just new surface if you want, and haven’t confirmed yet, but docs look like it also provides auto poly selection for thickness vs original and new surfaces. Nice… Thx for that. It appears to need an editable object underneath it. Not a problem at the moment, but wondering in general if there is a way to get it to work on parametrics.

It seems to be very picky about editable objects being on first child level below it to work, so just adding a correction deformer to parametric doesn’t work as correction is then 2 levels down. I’ve tried instancing the parametric correction, and placing the instance as first child of solidify generator. Nope. Seems like there might be a way to do this and I’m just doing it wrong.