Implemention of feature aligned quad dominant remeshing

Hello,

I am thinking of beginning to work on implementing feature aligned quad dominant remeshing (http://pages.cs.wisc.edu/~csverma/CS899_09/quaddom1.pdf) in Blender. Of course, at least for the time being, I would need to make the changes to the bmesh branch, as this uses T-verticies, but I think that should work well as bmesh is beginning to stabilize and is pretty close to being ready to merge to trunk. This feature would help the array sketching script that recently came into existence, and would also allow Blender to retopologize meshes automatically. Now, my main concerns are the following:

  1. Is this feature important enough? Meaning, does the community want this feature?
  2. Where in the directory structure should it be implemented? I assume source/blender/blenlib but I am probably mistaken.

Thanks!

I can’t speak for the developers or help you out with the B-mesh issue, sorry about that.

I can, however say that this looks incredibly useful and looks like technology that would make the whole modelling, sculpting and re-meshing business a hell of a lot easier.

Hear, hear! :yes:

Hi,

  1. Is this feature important enough? Meaning, does the community want this feature?

Definitely :slight_smile: Although you probably knew my answer already :slight_smile:

  1. Where in the directory structure should it be implemented? I assume source/blender/blenlib but I am probably mistaken.

I don’t think it will matter too much, svn it is easy to move files around if it ends up we want it somewhere else in the source tree.

LetterRip

If it preserves all the features as well as in the pictures, I’d say go ahead and bring it into Blender, would be very useful with the sculpting once we can render multires meshes with 20 million polygons without running out of memory.:smiley:

+1 for this feature!

HELL YEAH! I always wanted this particular feature. I know that it looks like that an object will be remeshed as a whole, but it would be useful (although not a deal breaker) too if one could select verts/ poly’s to be remeshed.

Thanks for all the positive replies!

Thanks, I will go ahead and begin working on the actual programming then. :wink:

This is going to be implemented as a modifier, so that won’t work too well unless I include options to only retopologize certain vertex groups. On the other hand, retopologizing only certain faces would probably lead to much messier meshes, so I would think it is better off without that.

Also, earlier today, I tried to compile the B-mesh branch, and I was hit with an error right off the bat. I realize this is currently under heavy development but it still caught me off guard. Interestingly, the bug was related to the error message reporting utility for B-mesh. :confused: I will write it for the current mesh editing tools for now and port it to ngons once it seems a bit more stable.

Just wanted to add myself to the list of people that think this is a really cool project. And remember that even when in this community there are many sculpters, that’s not the majority, so you may not receive a massive amount of replies telling you how cool this is. But efforts like yours are the ones that will bring more of that kind of artists closer to Blender.

This seems really cool, but aren’t several people already working on various implementations of “remeshing,” for example isn’t it Farsthary’s latest project?

Don’t let a compile error discourage you from using B-mesh, a remeshing algorithm like this will be a lot easier and quicker to implement if you use it. Joe is actively developing in this branch so I don’t think it can be a big issue, maybe just a compiler/platform specific problem.

+1 from here too.

Dude, seriously - thanks for doing this, that’d be an awesome contribution to Blender and the community! :smiley:

zardox,

This seems really cool, but aren’t several people already working on various implementations of “remeshing,” for example isn’t it Farsthary’s latest project?

Fasthary is implementing a fast skinning tool for fluids, this is a high quality remeshing - they have very little in common.

The other remeshing project is a fast remeshing tool for creating LOD, but again without regard to topology - the important things here are ‘quad dominant’ and ‘feature aligned’ - ie it could be close to final mesh quality automatically.

LetterRip

Again, thank you for all the positive replies!

I assume that is true as well, but the specific error message I got was odd, and I had to change the following to get it to successfully compile:

Index: source/blender/editors/mesh/mesh_intern.h

— source/blender/editors/mesh/mesh_intern.h (revision 27025)
+++ source/blender/editors/mesh/mesh_intern.h (working copy)
@@ -66,7 +66,7 @@
/*calls a bmesh op, reporting errors to the user, etc.

selects an output slot specified by selslot*/
-int EDBM_CallAndSelectOpf(struct BMEditMesh *em, struct wmOperator *op, char *selslot, char *fmt, …);
+//int EDBM_CallAndSelectOpf(struct BMEditMesh *em, struct wmOperator *op, char *selslot, char *fmt, …);

/same as above, but doesn’t report errors./
int EDBM_CallOpfSilent(struct BMEditMesh *em, char fmt, …);
@@ -91,8 +91,8 @@
/
******************** editface.c */

int edgetag_context_check(Scene *scene, BMEdge *eed);
-void edgetag_context_set(Scene *scene, BMEdge *eed, int val);
-int edgetag_shortest_path(Scene *scene, BMEditMesh *em, EditEdge *source, EditEdge *target);
+void edgetag_context_set(BMEditMesh *em, Scene *scene, BMEdge *eed, int val);
+int edgetag_shortest_path(Scene *scene, BMEditMesh *em, BMEdge *source, BMEdge *target);

/* ******************* editmesh.c */

Index: config/linux2-config.py

— config/linux2-config.py (revision 27025)
+++ config/linux2-config.py (working copy)
@@ -83,7 +83,7 @@
BF_GETTEXT_LIB = ‘gettextlib’
BF_GETTEXT_LIBPATH = ‘${BF_GETTEXT}/lib’

-WITH_BF_GAMEENGINE = True
+WITH_BF_GAMEENGINE = False
WITH_BF_PLAYER = False

WITH_BF_BULLET = True

+1 here as well - this would be an awesome feature as a modifier, and I think it would make for a very valuable addition to Blender. :smiley: Thank you in advance for the hard work you will be undertaking!

+1 The results shown on that PDF are absolutely beautiful! The remeshing is so clean that it seems almost too good to be true. Is this going to be a part of this year’s GSOC?

One of the GSoC proposals is to implement this, it depends on what the other proposals are, how many slots google assigns to us, and related things.

LetterRip

Whoah! Hold on??? There is a list. Sign me up…
Fast:evilgrin:

1+ from me:RocknRoll:

Yeah, I am waiting for this feature since I saw the array sketching thread! Afaik it is one of Farsthary’s (damn did I write it correct ;p?) possible projects for 2010 but he’s not yet working on it if I’m not mistaken.

+10 ;).

This would be great. It would take all the heart-ache out of retopolgy!

Would it be possible to add a ‘poly-target’ to the code, that would aim for a certain number of polygons in the re-alligned mesh?