Arbitrary contour retopology

Hi

Finally I’ve made quite a breakthrough in semiautomatic retopology. What initially started as a prototype tool is evolving into a quite powerful new way to retopologize models in 3DCoat. Giving artists the freedom to experiment in an intuitive way by just drawing patches, arbitrary patches that will be optimally filled with quads.

Artist is not limited to certain number of edges , flatness or any other constraint. Just draw. I’ve also added the possibility to save and load the strokes along with the model.

The core is done, remaining now is the usability and the workflow of the tool, adding a realtime preview among other details. I’m investigating several variants and further optimizations.

I suspect this core quadrangulator algorithm will span many interesting new tools.But wait, I’m saving the real breakthrough for later 😉

PS: Could you suggest me a good (fast, high quality) screen capture program? I’ve tried CamStudio but cannot get +30fps recording  at 1080p 😦  preferably one that is HW accelerated. (using an NVIDIA GT 560M )

Cheers!

 

Arbitrary contour retopology

Improving the contour detection algorithm

Hi

contour (1)One of the core algorithm of the QuadPaint tool estimates the amount of closed contours that can be extracted from an arbitrary set of strokes, which can be treated as graphs.

In my first development attempt I successfully implemented an algorithm that extracted the minimum path loops first. It worked very well but soon realized that the condition had very common ill cases:

In the above figure, the minimum path for the outer loops overlaps the inner loop, causing messed geometry in latter stages of the pipeline:

prevSo I must carefully find another solution, another condition that adjacent loops should met:

Filled loops should not overlap , but that term is a bit tricky because we are talking of 3D meshes so some sort of projection or volume intersection test needs to be implemented, and we all know those arbitrary precision intersection mesh calculations are very heavy for close to real-time performance.

I eventually found a very elegant solution: Filled contour areas, non overlapping adjacent contours have minimum area compared to the overlapped ones, In terms of a Set theory, overlapping is equivalent to a Union and non overlapping to a Difference.

And that’s it! after implement that condition, arbitrary graph sets can be decomposed in  minimum area loops or adjacent non overlapping sets.

contour (2)

 

 

Improving the contour detection algorithm

Boundary extrusion

3DCoat currently has a powerful set of extrusion tools, you can use either voxExtrude or Bas-Relief,
both had its use cases though: VoxExtrude is for already closed mesh, you “paint” what you want to extrude, while Bas-Relief operates over the voxelized model.
But there’s a third use case: open boundaries and holes, you need to extrude and normalize.
For example in imported scanned objects from medical and technical work where they comes with holes.

Boundary extrusion

Improved surface reconstruction algorithm

After many attempts I finally got a really nice algorithm for surface reconstruction, now the triangle density is much more uniform, is like a flow I may say 😛

Since a picture worth thousand words, take a look:

This is the raw output of the Reconstructor, without smoothing, curvature preserving and other post-process steps that further improve the result. This is just to compare against the previous solution the fundamental of the algorithm.

Note: Click on images to see them with better resolution 😉

Original hole test, non uniform
Original hole test, uniform
Previous base reconstruction algorithm, non uniform starting mesh
New base reconstruction algorithm, non uniform starting mesh
Previous base reconstruction algorithm, uniform starting mesh
New base reconstruction algorithm, uniform starting mesh
New base reconstruction algorithm, with all post-process improvements activated

Hope you like it!

Improved surface reconstruction algorithm

A bit of UI cleaning

Hi 🙂

Merged tools

Those who was scared of the cluttering of the UI with new tools popping every time, shall not, as devs, many times we clutter the UI with experimental tools and on going work, so what you see in screen casts are more like our flavor of the software, by no means is the release look. Feedback is very important too, I may say, crucial, because is easy to lost track on artist needs.
So, I decided to clean a bit three floating tools that, altough they have a very different inner algorithms, externaly they may behave very similar, so I’ve merged Decimate-Reduce-Remove Clay into a single Clean Clay tool, with the option to choose among the previous actions of course, so no functionality is lost, just streamlined 🙂

A bit of UI cleaning

Curvature interpolation or better surface reconstruction

Hi all 🙂
Ok, this is a nice and very important feature 😉 I have improved the algorithm to make the holes reconstruction more smooth and continuous , the artist will have some control over the “smoothness” of the reconstructed mesh.
It does not aim for a “perfect” reconstruction but instead for a “good enough” reconstruction as an artist tool. The reconstruction problem is a multidimensional one that has as many solutions as researchers have the field 😉

I hope you like it!

Note: sorry for the bad screen capture, some codecs problems will solve soon 😛

Curvature interpolation or better surface reconstruction