Local distortion of fitted base mesh at selected points

Hi,

I am using a number of selected points to guide the wrapping on my base mesh onto my facial scan mesh. I am getting some local distortions of the fitted base mesh at the location of the selected points. This mainly occurs at the corners of the mouth and corners of the eyes where the base mesh is finer.

Can anyone recommend the best settings to prevent or minimize this mesh distortion? I am using Wrap3.3.

Cheers,
Michael

Hi Michael,

We are currently working on brush tool for Wrap3. It’s one of the ways to correct wrapping artifacts such as distortions at the corners.
There is a little showcase
[vimeo]https://vimeo.com/256906949[/vimeo]
You can download a beta version as the standalone application here: http://www.russian3dscanner.com/downloads/R3DS_BrushTool_Beta0.1.zip

Stay tuned for upcoming updates!

Hi Yaroslav,

That looks interesting - I will definitely give it a try.

I would still like to know more about the optimal wrapping settings to minimise mesh distortion as much as possible.

Cheers,
Michael

Hi Michael!
Unfortunately there is always tradeoff between precise wrapping and mesh smoothness. You can try to increase “smoothness final” parameter (http://www.russian3dscanner.com/docs/Wrap3/Nodes/Wrapping/Wrapping.html)
Also in the next Wrap version we will introduce “control points weight final”. This parameter controls strength of control points during last iterations of wrapping. For example “control points weight final” = 0 means that control points have no strength at last iterations which leads to smooth mesh.
I send you a link to beta version of this feature.

Hi Kirill,

Thanks for your reply. I have tried increasing the smoothness final parameter, changing number of subdivision, number of iterations etc. The factor I have found to help the most is my placement of the selected points i.e. running the wrapping and then shifting these slightly in the direction opposite to local mesh deformation / stretching helps a lot.

Currently I subdivide the base mesh before running the wrap to get the mesh resolution and fit that I want. To improve this process I was thinking of running a 2 pass wrapping process i.e. run a wrap with the standard base mesh, then subdivide, then re-wrap. Do you think this would help? 

I like the idea of “control points weight final” = 0. I will give that a try.

Cheers,
Michael

Currently I subdivide the base mesh before running the wrap to get the mesh resolution and fit that I want. To improve this process I was thinking of running a 2 pass wrapping process i.e. run a wrap with the standard base mesh, then subdivide, then re-wrap. Do you think this would help? 

Do you mean first run with points and second without points?
I’m not sure. Second step of wrapping over distorted mesh usually cannot restore mesh smoothness.

I have tried increasing the smoothness final parameter, changing number of subdivision, number of iterations etc

Increasing number of ICP iterations and increasing number of subdivisions is well combined with “control points weight final” = 0.

By the way. We have a private facebook group for beta testing where we post all experimental stuff. I can add you if you want.

Hi Kirill,

No, I was thinking of using points for both passes. The first pass would be done using a coarse mesh, because I find that it results in less distortion. After fitting the coarse mesh, I would then do a subdivision and then re-fit. This second pass should work well, because its stating point is essentially already a fitted mesh.

Haven’t tried the beta version from your link yet, but it does sound good. If I do say 6 subdivisions, I find that most of the distortion occurs during the 6th subdivision. Therefore, by setting “control points weight final” = 0, I would assume that this distortion within the last subdivision should be minimal.

I am interested in know about beta testing, but I am not on facebook.

Cheers,
Michael

Hi Michael,

No, I was thinking of using points for both passes. The first pass would be done using a coarse mesh, because I find that it results in less distortion. After fitting the coarse mesh, I would then do a subdivision and then re-fit. This second pass should work well, because its stating point is essentially already a fitted mesh.

Yeah, it probably would work if first stage doesn’t introduce any distortion

Haven’t tried the beta version from your link yet, but it does sound good. If I do say 6 subdivisions, I find that most of the distortion occurs during the 6th subdivision. Therefore, by setting “control points weight final” = 0, I would assume that this distortion within the last subdivision should be minimal.

You are totally right. Final weight value are used at last stage of wrapping, initial value are used for first iteration. All other iterations use weighted average  between final and initial weights.

I am interested in know about beta testing, but I am not on facebook.

Currently we have no option for users without facebook but we are thinking about it. Which option seems good to you? E-mail subscription? Private area at R3DS site? Something else?

Hi Kirill,

I tried the beta version and am happy to report that it does a much better job than 3.3.12 in preventing local distortions of the mesh.
What worked best for me was setting “control points weight initial” to a large value (about 100) so that the selected points on the two meshes match almost perfectly in the first subdivision. I set “control points weight final” to a small value, but not quite 0 (around 0.5). This was a good compromise between preventing mesh distortion and ensuring that the corresponding selected points were close. I am currently playing around with the number of subdivisions and number of ICP iterations to see if that improves things any further.

In regards to beta testing info, my preference would be a private area within the R3DS site with option to get email updates.

Thanks for your help.

Cheers,
Michael

I’m glad to hear that =)

Hi Yaroslav,

I just tried the brush tool. Unfortunately the brush is not visible so I am unable to do anything. Is there a more recent version?

Cheers,
Michael

Hi Michael,

I sent you a link to the new version.

The brush may be not visible in several cases:
[list]
[li]Model is not loaded[/li]
[li]The brush size is very different from the model size (in a new version you may change the brush scale parameter)[/li]
[li]Alt key is pressed[/li]
[/list]

In other cases, I suppose this could be a hardware problem.
Please let me know if you are still facing the issue.

Hi Yaroslav,

New version works great. The Brush is visible immediately. The beta0.1 version didn’t work for me even for the models that are bundled with the BrushTool.

The mesh relaxation is great, as is the control you have over the mesh. Is that plan that this will become part of Wrap3, or as a separate tool?

Thanks,
Michael

Glad to hear that it works!

It will be integrated later as a separate node in Wrap3.

Hi Yaroslav,

I have been using the brush tool some more. The options with the reference scan such as project, relax project, move project etc are very handy and useful.

I have some (hopefully useful) feedback:

  1. When you press alt + left mouse button to rotate, it also zooms. I constantly find myself zooming out to fix this.
  2. Would it be possible to show a colored contour of the difference between the reference scan and model?
  3. Would it be possible to show the selected points from the reference scan and model. One of my issues is trying to make sure these match up as close as possible. If I can plot them, then I can move the model mesh manually util the landmark positions match.

Cheers,
Michael

Hi Michael,

Thank you for the feedback!

  • Do it zoom when you just trying to rotate? Zoom mode should enables only by wheeling middle button or pressing Alt+Right mouse button.
  • Nice suggestion. I’ll make a note of that.
  • If you mean correspondent selected points for the scan, it may be a challenge.
    For now, the brush is designed for optical texture comparison of the scan and model by changing it’s opacity or just hiding in the viewport.