shrink wrap in 3DSMax is cool

I found this video yesterday and I was amazed by it.
Basically the video shows you how to deform an abject along another using UVs.
Only 3DSMax can do this?


(intersting part start around 23min)

1 Like

Its using morph target to reshape the plane to the other object , and then using SKINwrap to autoweight the cubes to the deformed plane

its nothing special in my opinion also including a UV process just to shrinkwrap is not a good workflow… Just so you know max has a “conform” tool which does what shrinkwrap does in blender ; however it doesn’t work half as good as shrinkwrap…

user " Kkar " was working on a morpher modifier you may want to check that out it is similar to the morphers in max and maya ( using a different object as morph input)

using the awesome tools like “curve and array modifier” or “object to vertex parenting” or “duplifaces” you can achieve the same thing half the time with better results…

It wouldn’t be terribly difficult to create an add-on that does the same thing.

Essentially what is being done is the modifier is creating a transform from one space (the XYZ of the geometry being projected to) into another space (the UVW space which is now simply an offset & scaled XYZ space). When projecting from one space to the other, they simply apply the inverse transform from one to the other (a matrix multiply). It would be a useful addon to make (projecting greebles onto smoother surfaces is a thing that is done :slight_smile: ), but it isn’t revolutionary nor something Blender cannot do.

In point of fact, it is a very basic version of what I was doing some ten years back when I wrote a small app that would transform the clothes made for one Poser figure to another custom one (something DAZ was not happy about at the time and so it was never released retail). Due to the fact I didn’t (and couldn’t) get a clean UVW mapping for that, I based the transforms off multiple weighted transforms of nearest triangles as described in this paper. I had considered moving it to Blender a few years back (still have the C++ code for it sitting on my backup drive) but a combination of Mesh Deform & Laplacian Deform modifier tends to do a much better job now.

Well, I used an array modifier, a curve modifier, and a shrinkwrap modifier with weights painted , and I took the curve from the inside loop cut by converting a duplicate of the vertex loop and using alt-c. I then used Ctrl-T to twist the curve to get the arrayed objects to sit against the inner face loop. I think it is passable, but he is using a script that uses his modifiers to do this.

Shrink-Wrap seems an odd name for it.

This has come up a few times (Talked about it ~2007 or earlier IIRC)

Id like to do this if nobody gets in before me, I think we have all API calls needed to make the project fairly straightforward.

Wow, that would be cool - and the wiki mentions it would add improvements for texture paint as well. I don’t understand how, but I can imagine.

I did a test with blend shape a meshdeform modifier

*The problem of shrinkwrap modifier in Blender is that it flatten everything, don’t preserve the volume.
*In Blender I don’t know how to deform the mesh like in the uv editor to make a proper deformer, so I did in Zbrush.


it is not a matter of meshdeformer, it is mainly how to make a blendshape from UVs shape.

I should have been more clear, I was refering to the built in meshdeform modifier vs this addon, when using shrinkwrap.

oh, ok, sorry. thanks for the explanation.

Agreed. When I first came into the thread, I thought it was about a new/novel method of retopologising a sculpt.

I was actually thinking of giving it a whirl this weekend after being reminded of my earlier stuff, but if you were wanting to do it I won’t steal your fun code time (god knows I need fun tasks occasionally too!) :slight_smile:

I have a few ideas on how it could/should be done and would be interested to hear how you’d go about it. I’m currently thinking it would either be using (abusing) the mesh deformer so I don’t need to calculate the weighted transforms of each triangle in the “UVW-to-XYZ mesh”. If that didn’t work, I’d probably wrap the whole thing in an in-memory (rather than explicit) lattice, project the lattice points onto the “UVW-to-XYZ mesh” and then apply the inverse transform from the source mesh to them. The inverse transforms of “UVW-to-XYZ mesh” applied to the lattice points would move from the “flat space” to the “morphed/fitted space” and, being a lattice, there would be some smoothing of the transforms without explicitly having to weight each vertex in the target mesh to multiple polygons in the UVW mapped one.