GSOC 2014 QuadRemesh. How do you think it should be the user interaction?

Initial Scalar Field

The most important process in the quadrilateral remesh step is the generation of initial scalar field.The user defined feature points with minimum and maximum values, then the system compute a scalar field based on harmonic functions (see figure below).http://wiki.blender.org/uploads/thumb/7/76/Apinzonf_Quad_Cili_02.png/240px-Apinzonf_Quad_Cili_02.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Initial scalar field

The scalar field computed by the system, can be see as an interpolation between the maximum and minimum points over the surface of the shape.http://wiki.blender.org/uploads/thumb/f/fd/Apinzonf_Quad_Cili_03.png/240px-Apinzonf_Quad_Cili_03.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Initial scalar field

This scalar field is used to compute gradients fields that determine the place where new edges going to be put.http://wiki.blender.org/uploads/thumb/6/60/Apinzonf_Quad_Cili_01.png/240px-Apinzonf_Quad_Cili_01.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Initial scalar field

Blender currently does this in a complicated way.The user must first paint all vertices with a weight of 0.5, and then choose some vertices and paint with weights 1.0 or 0.0. After the user must add a new modifier “QuadRemesh” set the name of “Vertex Group” and click the button Bind.http://wiki.blender.org/uploads/thumb/d/df/Apinzonf_Quad_Menu_01.png/320px-Apinzonf_Quad_Menu_01.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Initial scalar field

The question is:[edit]How do you think it should be the user interaction to define scalar field?

Some examples[TABLE=“align: center”]

http://wiki.blender.org/uploads/thumb/3/35/Apinzonf_Quad_cactus_01.png/320px-Apinzonf_Quad_cactus_01.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Cactus

http://wiki.blender.org/uploads/thumb/6/65/Apinzonf_Quad_cactus_02.png/320px-Apinzonf_Quad_cactus_02.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Scalar Field

http://wiki.blender.org/uploads/thumb/f/fe/Apinzonf_Quad_armadillo_01.png/320px-Apinzonf_Quad_armadillo_01.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Armadillo

http://wiki.blender.org/uploads/thumb/6/69/Apinzonf_Quad_armadillo_02.png/320px-Apinzonf_Quad_armadillo_02.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Scalar Field

http://wiki.blender.org/uploads/thumb/6/6c/Apinzonf_Quad_HORSE_01.png/320px-Apinzonf_Quad_HORSE_01.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Horse

http://wiki.blender.org/uploads/thumb/3/3f/Apinzonf_Quad_HORSE_02.png/320px-Apinzonf_Quad_HORSE_02.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Scalar Field

http://wiki.blender.org/uploads/thumb/7/7c/Apinzonf_Quad_HORSE_03.png/320px-Apinzonf_Quad_HORSE_03.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Horse

http://wiki.blender.org/uploads/thumb/8/8d/Apinzonf_Quad_HORSE_04.png/320px-Apinzonf_Quad_HORSE_04.pnghttp://wiki.blender.org/skins/common/images/magnify-clip.png
Scalar Field

[/TABLE]

I think it would be cool to have it work like the skin modifier, where you can mark the root vertex. You could have a similar interaction with marking maxima and minima.

Marking vertices in edit mode for dense sculpt/scan meshes is not very easy and userfriendly. Painting weights also seem problematic since the viewport doesnt draw the meshes in a optimized way.

Vertex painting also lacks performance for any kind of real time painting of scalar field vertices.

Also because of these viewport limitations to work with high details we have to split the dynatopo sculpture to multiple pieces.Like the example below.

the current count of this sculpt is 1.5 M triangles i hope to go up as 6-7 M. These numbers present problems for dynatopo sculpts, but a similar problem can occur if the user decides to remesh a multi-res sculpt.In that case the problem is even more evident because in a multi-res sculpt you can go up to 25 M on a single object and if you apply 1 level below the 25 M mark; you end up with a 6 M face sculpt(round down). At these kind of numbers it is almost impossible to work with weight paint or vertex paint.

Since these problems are evident, I can only say as an artist I would prefer a weight paint or vertex paint system for determining scalar field vertices.


Hi apinzonf,

Some question before thinking on the way to implement it:

  • does the input value !=0.5 are used for another things than generate the scalar field (for example, geometry density or smth like that)?
  • does the scalar field/gradient field can give immediate feedback while painting 0/1 wieght values?
  • will scalar field accept different value than 0/.5/1?

Depending on those question, i think the process is already pretty clear. Not sure what is the difference btw 0 and 1 weight value when generating scalar field, but as default weight is 0, maybe switching 0 and .5 value could be good (except if it doesn’t make sense ofc).
Of course a “scalar field” preview while painting weight would make things really easy to work with, but waiting for answers :slight_smile:

Sorry for my english, hope i’m clear !

Agreed.

Maybe some kind of curve over drawing tools, or reference curves could be used instead, which do not need to interact with the actual mesh (ie like edit, weight paint etc modes). As long as you do not mess with the high res model itself, the viewport speed would be reasonable to certain degree( not like Mudbox of course)

Ideally it would be automatic, like all other automatic remeshing workflows. I agree though, your test cases for this tool need to not be low poly, simple shapes. People are going to be using this tool on dense sculpts, so doing ANYTHING in edit mode needs to be off of the table. The best way I can think of without overhauling Blender as a whole would be snapping empties to faces and placing them at extreme points, making a group out of these empties, and adding the group to a field in the modifier.

little offtopic)))
http://pixologic.com/zbrush/features/ZBrush4R6/
http://docs.pixologic.com/user-guide/3d-modeling/topology/zremesher/
http://www.zbrushcentral.com/showthread.php?173177-Tutorial-on-creating-low-poly-mesh-with-qRemesher-from-high-ress-DynaMesh-model

I guess that the best and most intuitive method will be using @psi-fy curve strokes projected on surfaces. Or even just groups of vertext snapped to the original mesh

Yes , I agree also that an automated system should be there for simpler objects / cases. However I would also like to point out that even Pixologic’s Zremesher has both “Curve Guides” & “Vertex paint map” for extra fine remeshing, yet it still comes up with a lot of edge loop spirals.

The modifier should be merged with the current remesh modifier, as a seperate mode of that modifier. I don’t think it makes sense to make a separate modifier for it.
So, just like the decimate modifier has different modes (Collapse, Un-subdivide, Planar), remesh should too.

We could use the grease pencil and mask to help.

The grease pencil will be like the curves guides in zbrush and, masking could make polygroups.

I have to retopologise objects every days, and sometimes, I cut objects in parts for the final.
On zbrush, curves guide are good, but, the result is never really good.
To have good result, we need to cut parts with polygroups.

Idealy, it will be good if the curves guides gives better result, Like that, no need of polygroups and the work will be faster.


For me, the most important is to place edges loop in good places, draw a line and the remesher make edgeloop at this line.

maybe there could be a use for the grease-pencil.

Edit: Nevermind XD

sorry for my English, I use Google translator
maybe we need an smart Remes option? For example, on a flat surface is not necessary in such a dense grid (with quads of course).


Nope, Ngons are bad !!

@pitiwazou, with quads of course, without ngons)).
this is an example to show the principle of, Remes manually with quads very difficult))

If you want to go on with vertex group, you can automate some things.
Dynamic Paint has a “+” button to automatically create a vertex group or an UVlayer when an existing one has no be created before adding modifier.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Physics/Dynamic_Paint/Canvas#Output_Panel

So, a Quad Remeshing modifier “+” button could add a vertex group automatically set to 0.5.
It could also have a kind of “Search automatically extremities” button to automatically do next step.
User could use this button to accelerate workflow with complex case (octopuss) or not use it with simple case (cactus).

We have “vertex weigth proximity modifier”. So I suppose that we can modify a vertex group without entering mesh in edit mode.
I already said that it could be great if remeshing could be based on armature. My idea is that joints could be good starting points for gradient (even if it is just the first and the last joint of a bone chain that are used).

People like curve and grease. Bones have skeleton sketching mode.
http://wiki.blender.org/index.php/Doc:2.6/Manual/Rigging/Armatures/Editing/Sketching

Particle modifier have its own particle mode. It would not be disturbing if remeshing modifier have its own mode with drawing tools.

As yii7 stated !!!
The use of weight and vertex painting is impossible in current blender.
I also don’t quite follow.

  1. How is it possible to develop remshers, auto remeshers, retopo tools, while the multires modifier is a s so problematic tool. You can see my point if you have zbrush. Zremesh something there, import it in blender and try the multires sculpting. It simply won’t work.
    I’m not talking about retopo issues as endless spiral loops etc. This is another problem irrelevant to the performance of the multires modifier.
  2. vertex painting or weight painting won’t work on hi density meshes (or on medium density meshes). However, surprise, the masking brush in sculpt mode, performs quite well. Maybe we can use the masking tool then?

Automatic solutions (for v-paint) is not an option either.
I performed a lot of tests, trying to establish a posing tool for sculpting prepossess only. Tried bones and automatic weight painting for something fast and spontaneous. A failure on hi dense dyntopo meshes as expected.

-You can’t avoid manual retopo for the final output.
-remeshers are good for multires sculpting only
-remeshers are good for vertexpainting solutions.
Blender is a dead end, following such workarounds.
My conclusions are. Fix the multires modifier and the weight/vertex painting stuff first. Then I will start listening.

Use vertex groups, just implement mask->vgroup op. 0=0(min), 0>1=0.5(not used), 1=1(max). This way its a double benefit, sculpting gets a much needed feature, and you get your max/min points for use with the quad remesher.

People hoping for this to replace zremesher are aiming a bit high with their expectations. The implementation being used is very naive and results in ngons/Tris nearly every time.

@m9105826
Zremesher is also almost useless in blender.
The only use could be to convert sculpting (dyntopo) into multires.
Because of the multires issues, this leads to multires sculpting in Zbrush.
Then, the whole baking process has to take place outside of blender.
Not much use of blender, right?
Fix multires and vertex-weight painting first, and I will start following other interesting, friendly to artists approaches.