Redundant Mesh anomaly

268 views
Skip to first unread message

Ken Carter

unread,
Jul 22, 2012, 2:23:21 AM7/22/12
to recons...@googlegroups.com
Got my new Zotac Nvidia GT 630 card installed and everything is working now.
Well sort of working.

The exterior of the scan looks fairly good but for some reason I'm getting meshes inside the outer mesh - like it's making a shell. This is a real problem because it even keeps the Poisson filter in Meshlab from working correctly. Usually the Poisson filter will ignore little holes and complete small areas of missing scan areas (i.e. top of head, under chin, etc.) but with the errant meshes the Poisson filter tries to go inside instead of smoothly bridging the holes. Since the normals on the redundant meshes are flipped,I was able to clean them out somewhat by splitting the mesh in half in Meshmixer, hiding one half and then paint selecting them from the inside. The problem however is that where they are really close to the outside mesh like at a hole for instance, the selection bleeds out onto the outside mesh.

On the attached scan I used the standard 1 cubic meter high res config with the integrate_truncation set to zero. This seemed to work better than anything else I've tried.

Does anyone know what could be causing the redundant meshes? Would it be the zero setting on the integrate_truncation? If it weren't for this one problem this thing would be working just about perfect.

Thanks,
K

mannequin_scan.jpg
inside_shell.jpg

Christoph Heindl

unread,
Jul 22, 2012, 2:33:17 AM7/22/12
to recons...@googlegroups.com, nos...@sbcglobal.net, christo...@profactor.at


Am Sonntag, 22. Juli 2012 08:23:21 UTC+2 schrieb Ken Carter:

Does anyone know what could be causing the redundant meshes?  Would it be the zero setting on the integrate_truncation? 

What's the thickness of the mesh at locations where the second skin happens? It could be a bug. Can you reproduce the problem, if so you could do a --record and sent us the depths.gz file along with your settings file (or upload it somewhere if it gets to big, drop an email to info(at)reconstructme(dot)net).

Maybe Christoph Kopf can have a look at it while I'm on vacation.

Best,
Christoph

Ken Carter

unread,
Jul 22, 2012, 3:10:08 AM7/22/12
to recons...@googlegroups.com, nos...@sbcglobal.net
Hi Christoph,

The scan is a full size mannequin torso so the mesh is quite thick all over. If you look at the second pic in my post you can see the extent of the redundant mesh - it covers a large portion of the exterior mesh. The pinkish color is the backface of the exterior mesh. If you look close you can see there was also a strange planar surface that got generated somehow kind of at an angle.

I will try this again tomorrow and look at doing the record.

Thanks,
K

Christoph Kopf

unread,
Jul 23, 2012, 9:03:05 AM7/23/12
to recons...@googlegroups.com, nos...@sbcglobal.net
Hi Ken,

this is Christoph Kopf. I tried to reproduce, but i can't. Can you please upload a stream + setting on a filehoster and tell me when it's available? Another issue:
The integration truncation is automatically trimmed to a meaningful value if it seems too less (e.g. zero). Please look at the last line of the log output. Did this also appeared at your reconstruction process?

[2012/07/23 14:58:36.789852][info   ] Welcome to ReconstructMe
[2012/07/23 14:58:36.793852][info   ] Running 0.6.0-0
[2012/07/23 14:58:36.795852][info   ]
[2012/07/23 14:58:36.796852][info   ] Licensed for non-commercial purposes only.
[2012/07/23 14:58:36.799853][info   ] See 'Non-Commercial License of ReconstructMe.txt'
[2012/07/23 14:58:36.802853][info   ]
Do you agree to our license terms? (y/n) : y
[2012/07/23 14:58:39.899030][info   ] Starting sensor
[2012/07/23 14:58:39.901030][info   ] Testing OpenNI driver backend
[2012/07/23 14:58:45.088327][info   ] Preparing environment for Device Cayman
[2012/07/23 14:58:45.096327][info   ] Settings successfully loaded from file.
[2012/07/23 14:58:45.103327][info   ] Override - Setting integrate_truncation to 8.594 

Best regards, Christoph 

MagWeb

unread,
Jul 23, 2012, 9:58:42 AM7/23/12
to recons...@googlegroups.com, nos...@sbcglobal.net
Hi,

the same problem of a second skin happens here too (as reported). It seems to be not related to the either thickness of the scanned object.
It seems to me that this is easy to reproduce: 
Try a hard to track object with smooth (like the mannequin), slim or regular surfaces and save the result after the moment MM loost tracking or its tracking gets nervously jumping around...
Helper objects ( like some irregular cloth on the ground) will help to avoid this error.

Lowering the integrate_truncation to a lower value makes it easier to remove some (but not all) second skins (for in more often cases they are not connected to the either surface) 
To remove not-connected second skins: select connected faces of the first surface - invert selection - delete . That´s the easy part.

About removing  connected areas:
Sure, I´m a fan of MeshMixer - but its selection tool isn´t ideal to remove these errors. Its selection tool selects all front-faces within the tool's sphere (if AllowBackfaces is disabled) . Therefor it selects also parts of the surface you want to keep if they are close enough. You could try to rise the CreaseAngle value in the ToolProperties ...

Try Meshlab's paint-brush-selection. (You can find it within the paint tools dialog - the brush icon with the red tip) . Disable the backfaces AND hidden polygons checkboxes and paint-select the second skins looking towards the backside of the surface you want to keep.



MagWeb

unread,
Jul 23, 2012, 11:01:01 AM7/23/12
to recons...@googlegroups.com, nos...@sbcglobal.net
Me again,

it seems to be harder to reproduce that with record + replay than in realtime...

Here is a recorded stream of a case (47x35x15cm) 56MB - partial scan


recorded and replayed at default settings shows some second skin areas inside.
Sure - this object isn´t ideal for tracking but it was a quick shot to force that error.

hope that helps

Gunter

Sean Tu

unread,
Jul 23, 2012, 12:11:10 PM7/23/12
to recons...@googlegroups.com
More often than not I get the second interior layer along with random surfaces inside whatever I'm scanning. I suspect it's because I'm going too fast as the problem seems to be worse when the ReMe looses track and I have to get it to sync up again.

Tony Buser has put together a great video/tutorial where he uses Netfabb to get rid of the inside surfaces along with some other opensource/freeware tools for preparing a scan for printing:
http://vimeo.com/38764290

Ken Carter

unread,
Jul 23, 2012, 12:17:31 PM7/23/12
to recons...@googlegroups.com
Hi folks,

Yesterday I was able to set up a simple scan scenario and run a record. Neat feature BTW!

Instead of using the mannequin which was a somewhat time consuming scan, I simply put a pillow in the middle of my sofa and did a 180 degree scan. This can be reproduced easily by anyone that owns a sofa and a pillow. The cloth folds give plenty of irregularities to keep tracking issues to a minimum - these should be clean scans.

Here is the Rapidshare link to a zip file containing the files and configs:
https://rapidshare.com/files/4190824627/reconstructme.zip

The zip file also includes the .obj files for the recorded scan and also the .obj file for the mannequin scan above which was a realtime 360 degree scan.

As MagWeb mentioned, the recorded scan seems to significantly reduce the amount of errant meshes, but as you can see in the attached pic "mesh-recordtest-IT5.jpg", there still remains some second skins in certain places. Setting the IT to different values gave different errant meshes. For example setting it to 10 gave less errors on the sofa part but more mesh debris inside the pillow.
Try running the playback with different IT settings and you will see.

In the atatched pic "paintselect.jpg" which was a realtime scan, you can see that the amount of second skin greatly increases with realtime scanning.

Christoph, to answer your question on the IT override, when using the hires 1m config with the IT set to zero, it plugged in the value 4.297.

Here is the log file from one of those scans:

[2012/07/22 14:35:43.921875][info ] Welcome to ReconstructMe
[2012/07/22 14:35:43.937500][info ] Running 0.6.0-405
[2012/07/22 14:35:43.937500][info ]
[2012/07/22 14:35:43.937500][info ] Licensed for non-commercial purposes only.
[2012/07/22 14:35:43.937500][info ] See 'Non-Commercial License of ReconstructMe.txt'
[2012/07/22 14:35:43.953125][info ]
[2012/07/22 14:35:49.750000][info ] Starting sensor
[2012/07/22 14:35:49.765625][info ] Testing OpenNI driver backend
[2012/07/22 14:35:56.953125][info ] Preparing environment for Device GeForce GT 630
[2012/07/22 14:35:56.968750][debug ] Preparing environment for Device GeForce GT 630
CL_DEVICE_VENDOR NVIDIA Corporation
CL_DEVICE_VERSION OpenCL 1.1 CUDA
CL_DEVICE_PROFILE FULL_PROFILE
CL_DRIVER_VERSION 301.42
CL_DEVICE_AVAILABLE 1
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE 32768
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE 2
CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE 128
CL_DEVICE_GLOBAL_MEM_SIZE 4294508544
CL_DEVICE_LOCAL_MEM_SIZE 49152
CL_DEVICE_LOCAL_MEM_TYPE 1
CL_DEVICE_IMAGE_SUPPORT 1
CL_DEVICE_MAX_CLOCK_FREQUENCY 1620
CL_DEVICE_MAX_COMPUTE_UNITS 2
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE 65536
CL_DEVICE_MAX_PARAMETER_SIZE 4352
CL_DEVICE_MAX_WORK_GROUP_SIZE 1024
CL_DEVICE_MAX_WORK_ITEM_SIZES [1024, 1024, 64]
CL_DEVICE_EXTENSIONS cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64

[2012/07/22 14:35:56.968750][info ] Settings successfully loaded from file.
[2012/07/22 14:35:56.968750][info ] Override - Setting integrate_truncation to 4.297
[2012/07/22 14:36:01.484375][info ] Press 'p' to reconstruct/pause recording
[2012/07/22 14:36:01.484375][info ] Press 'r' to reset volume
[2012/07/22 14:36:01.500000][info ] Press 'ESC' to stop recording
[2012/07/22 14:50:38.515625][info ] Content saved as mannequintest2.obj

default-hires.jpg
mesh-recordtest-IT5.jpg
paintselect.jpg
selection_bleedthrough.jpg

Ken Carter

unread,
Jul 23, 2012, 1:53:14 PM7/23/12
to recons...@googlegroups.com
WOW Sean! Thanks for that great video tutorial link. Looks like I will be loading up Netfabb for sure.

If Netfabb can repair the mesh I would skip the Poisson filter and go right to Meshmixer to iron out the kinks and then back to Netfabb. The downside with the Poisson filter is that you lose a little detail in the scan.

If you have Rhino, you can use the mesh extract by part command which will separate out any loose errant meshes. Just select the outside scan surface to separate it then copy the resulting selected mesh and move the copy away from the original. Then delete the original mesh. Unfortunately this only works for the unconnected pieces of mesh though. Any second skins that are attached to the scan surface will still remain.


A couple of questions on the record/replay:

Without any video feedback on the scan, is there any way to know if you are off track, or does the replay automatically fix that?

Also, is it necessary to load the config settings on the record or just with replay?

Thanks everyone,
K

Sorbus

unread,
Jul 23, 2012, 4:16:31 PM7/23/12
to recons...@googlegroups.com, nos...@sbcglobal.net
Applying the poisson filter to one layer only one layer does reduce detail, but there are techniques to ensure the poisson filter does not affect surface details. I take a multiscan of the same object, then merge down the 'stack' of layers in Meshlab. Running the filter after that gives a cleaner surface with as much detail as the individual scans.

This image was based on four repeat scans taken quickly one after the other, merged down with no tidy up other than the poisson filter.

Ro

Screen Shot 2012-07-23 at 20.58.10.png

Ken Carter

unread,
Jul 24, 2012, 3:26:43 AM7/24/12
to recons...@googlegroups.com, nos...@sbcglobal.net, rowan...@gmail.com
Hi Sorbus, that's a great looking scan. So that's done from just one viewpoint?

rowan...@gmail.com

unread,
Jul 24, 2012, 10:24:50 AM7/24/12
to recons...@googlegroups.com, nos...@sbcglobal.net, rowan...@gmail.com
Yes, as it was a quick self-scan. But it needn't be. I've successfully scanned faces/torsos using the technique.

Christoph Kopf

unread,
Jul 24, 2012, 10:43:08 AM7/24/12
to recons...@googlegroups.com, nos...@sbcglobal.net
Hi, 

i reconstructed your recorded scan + the scan of MagWeb. I get the same results, but i can't find out why there is a second surface inside. Maybe the final algorithm has a bug.

Regards, Christoph

Lino Stavole

unread,
Aug 6, 2014, 10:45:01 AM8/6/14
to recons...@googlegroups.com
Is there any progress on this? I've been experiencing this in almost every scan

Pascal Roget

unread,
Aug 21, 2014, 12:47:43 AM8/21/14
to recons...@googlegroups.com, nos...@sbcglobal.net
Y'all should investigate your own threads, one of the posters here is a chatbot.

Lino Stavole

unread,
Aug 28, 2014, 12:11:42 PM8/28/14
to recons...@googlegroups.com
I am still experiencing this. Has there been any workarounds beside Netfabb?

faeze allahabadi

unread,
Jul 19, 2018, 1:10:41 AM7/19/18
to ReconstructMe
I am experiencing the same problem. Did you fix it?Did you find the reason?
I am using SDK version 2.6.43.
Reply all
Reply to author
Forward
0 new messages