An idea came to me recently that I think would be very effective for retopology.
The dilemma
If you've tried doing Multires sculpts you've probably noticed that pinching, stretching, and uneven mesh density are common side effects, yet DynTopo, especially when used in Subdivide Collapse mode, doesn't have this issue. You can sculpt freely, but at the expense of having your nice quad mesh obliterated into a glob of tris. So we end up going back and painstakingly building another quad mesh over our DynTopo sculpt.
For anyone not familiar with this, see Intro to Dynamic Topology Sculpting in Blender
The solution?
What I was thinking is that if we duplicate our mesh object to make a backup before breaking out the DynTopo, we can slap a Multires Modifier and then a Shrinkwrap Modifier on that original base mesh and it will conform very nicely to the sculpted mesh! But the big question is - how can we get that shrink-wrap deformation data into the subdivision levels of the multires so that we can have the dyntopo-sculpted detail at various levels in a clean quad mesh?
Visual aid - The red mesh was sculpted using DynTopo, the blue is the original with modifiers on it:
(X-ray display is being used so that we don't see ugly overlapping faces)
Since the Multires Modifier necessarily comes before the Shrinkwrap Modifier in the stack, we can't send the shrinkwrap vert position data backwards up the stack and into the multires subdivision levels. And if we apply the Multires Modifier then obviously that defeats the purpose because it's not Multires anymore.
So how?
Could there be a way to get the vertices within multires Sculpt Mode to snap to the same location as they are in when Shrinkwrap is used? And if it can't be done by some snapping method, could it perhaps be done (even more efficiently) by using a Python script?
Imagine a script that gets the vertex position data from a version of the mesh that has had its Modifiers applied, and copy that vert position data into the not-yet-applied multires data of the other. Of course the subdivision levels would have to match. I am especially curious to hear from anyone familiar with how Python can manipulate vertex data. But Python or not, if this can be achieved by any means it would be extremely useful. What do you think?