Retopology: Min-Deviation-Flow in Bi-directed Graphs for T-Mesh Quantization

It is a stopmotion animation I used to create when trained people to explain them principles of stripe modeling and retopology workflow.

  • Will it replace the current “Remesh modifier”?

I think that remeshing and retopology are a bit different processes which are expected to bring different results, aren’t they?


Ah I see. Wasn’t sure if it’s just stop motion or if it also used some kind of “magnetic guides” to pull the outer loop to the geometry like the Softwrap Addon. :smiley:

1 Like

Hi, your questions were for Martin but I believe I can answer them:

  1. There is no date (or release) associated to this project. This is something Martin would like to contribute once he is done defending his thesis. Starting next year he shold have more time to continue working on this project.

This is thus dependent on his time availability and whether this work could even fit within his postdoc (or if would have to be done on the side, or instead of).

For now the idea is to assess whether this technology is interesting to Blender and if it would be an improvement to the existing method.

  1. Ideally this should be a native tool. But it will depend on the integration design (which is to be figured out only when there is time and after we are happy with the results it can yield).

  2. I don’t see this as a replacement for the Remesh modifier. More a possible replacement for the Quad remesh tool.


TLDR reply;

It would be very cool if “grease pencil” or “annotate” pen could be used in conjunction with a auto-retopo solution.

The gist:
The mesh currently sits in a triangulated dynatopo state/ or / a quad, ngon state of construction. The mesh is currently considered “final” in terms of look and fidelity, but I the user, would like to use auto-retopo to start its foundation.

I select the “annotate” pen tool and draw w/ my mouse or wacom tablet on the areas (by lets say 3 colors) Blue for loops, Green for flow/ face direction, Red for sharp corners/creased edges. (the user in this case has the leisure to put down as much info by color as necessary to get as accurate as it can.

I mark my mesh in all the areas I need the auto-retopo tool to recalculate and approximate. Press the build button, it scans the mesh and analyzes any color line data, and builds according to that 1st. If none, it examines the entire mesh and starts approximating what it typically does and gives me the best results that it can come up with.

Would this be feasible within Blender’s architecture?

2nd idea, would be to optionally allow the user to assign face-sets as markers on where the border edge (inside) the topology ends/begins.

1 Like

This is basically how QRemesher as Blender Plugin works.
Zbrush offers a few more options in their implementation here. They have guides, polygroups and polypainting as guidelines for attracting Polygonflow.

I am not sure how this would work with greasepencil, though, as a grease pencil stroke isn’t really tied to a specific mesh.right?

I don’t think grease pencil or annotations would be the right thing to use here. Grease Pencil is it’s own object + data, so you’d have to add and remove that all the time. Same with annotations. From an architecture point of view, it feels much simpler to add a separate paint operator just for guiding the retopology. We already have a good paint API that allows to easily create new painting operators.

Similar to how we have a “Live UV Unwrap” mode, I could imagine a live retopology mode, where the user can draw the guides and the retopology is done with every new stroke. Just a thought.


Hi everyone!

Sorry for the long delay in responding, I’m unfortunately currently pretty busy with finishing my PhD thesis (including new improved quad-meshing methods).

First of all, thank you all for your interest and your valuable feedback and comments. They gives us a much better picture what topics are most important to focus on in our research.
Also, thanks a lot for the suggested/provided meshes.
I’ve experimented with them a little bit with mixed results, I’ll make a separate post about this later.
By the way, I’m also testing my new (unpublished) algorithms on them, the results seem promising so far :slight_smile: Unfortunately I can’t talk about that much yet in public, but will of course update you once I can.

Let me try to comment on commonly mentioned topics.

First of all, we need to talk about speed. Our paper that sparked this discussion did indeed speed up one part of the whole retopo algorithm by a large margin, however that unfortunately does not mean the whole tool is always fast - we merely eliminated one common bottleneck.
In the current tool, performance is most closely related to the number of input faces.
QuadWild has an (optional, default-on) automated initial triangle remeshing phase which is important for robustness, by repairing common defects and improving mesh quality to make it more suitable for the mathematical optimization algorithms (for example, “round”, close to equilateral triangles are much better than thin needles). This also includes mesh decimation that greatly improves runtime, however at the cost of geometric accuracy. For example, in the fireplace mesh, the default settings obliterate most interesting detail. On the other hand, disabling this preprocessing phase makes some steps (in particular the polygonal decomposition) very slow - multiple hours on a fine mesh based on the fireplace model :frowning: (Indeed it is a good stress test). We’ll need a good way to set the desired tolerance here to not decimate too much.

Several comments directly or indirectly relate to what we would call “feature constraints”, so I’d like to talk about that a bit.
Feature constraints are typically used to preserve sharp edges from the input, but they can also be used to force arbitrary edge paths to be preserved as quad edges. This also influences cross field computation, which will be aligned to those features.
QuadWild currently either selects feature edges based on a dihedral angle threshold (very simple, but often pretty bad), or with list of edge indices as additional input. For a good integration, I guess we could make use of edges marked as “seam” or “sharp”, as well as material boundaries (i.e., edges whose incident faces are assigned different materials). This is unfortunately something you currently can’t try out without writing code for it :confused:

  • Soft edges. I made a shape similar to the screenshot of @JulianPerez, and unfortunately with the default settings, QuadWild doesn’t follow those soft edges well. There could be two (non-conflicting) remedies:
    a) The cross field (indicating desired edge orientations) optimization should be improved to better follow those edges (this “curvature alignment” would also be beneficial in many other situations); or at least the user should be able to edit the cross field to encourage/enforce this alignment (similar to Instant Meshes)
    b) Feature constraints by the user: One can directly mark paths as “features”; currently, they do need to be edges in the mesh, so one may have to subdivide the input (e.g. with the knife tool). Better tools to find and insert such paths/loops would be useful here.

  • Spiraling. Several of you mentioned spiraling as a big issue. There is a bunch of research into automatically fixing it or preventing it from occuring in the first place. However, my impression is that manual guidance will probably be more reliable for now, and is definitely much easier to implement. In fact, the “feature” handling of several retopology tools - including QuadWild - should in theory already suffice to allow the sort of manual control some of you mentioned, e.g. delineating a region from which no spirals can escape. A feature edge loop around Suzanne’s ear that is marked as feature would effectively prevent any spiraling from escaping the ear. We could also apply such constraints later in the process, e.g. marking mandatory edge loops in the polygonal decomposition.

  • Heatmap for quad density. There is some support in the QuadWild code (but not exposed/usable), however as far as I remember, it did not influence crossfield optimization, which I believe is crucial to get high quality here. (Note that several crossfield methods with support for sizing have been published, but I haven’t worked on that topic in particular). T-mesh quantization can take user-specified target densities into account, but it might result in excessive sizing singularities when strong emphasis is placed on adhering to those target densities. By the way: A generalization of a heatmap could allow different scales for both quad directions (anisotropic sizing), but visualizing and editing such a 2-D sizing field will be more difficult than a simple (isotropic) heatmap. Nevertheless, would anisotropic sizing even be something that is relevant for the artistic usecase?

I hope this already helps resolve some of your questions. I’ll try to squeeze in the time to show and discuss the results on your meshes soon :slight_smile:

Best Regards
Martin Heistermann


It will be the most useful if this can be implemented as a node inside Geometry Nodes.


I’d like it to replace quadriflow first… then it could go fancy in geo nodes… :wink:


I don’t think Blender has any tools right now fore editing an anisotropic field. Best I can think of is editing two heatmaps separately, -which can be done within regular “weight painting” mode- but without the visualization part. Probably not ideal. Imho this kinda crosses the line of diminishing returns. Producing such a map would probably be somewhat involved (especially without convenient visualization) and this kind of fine grained control would probably be attained more easily with manual editing of the output mesh. I’m thinking mostly of humans, and other organic shapes here. Perhaps I’m not seeing all potential uses of this

1 Like