Shrinkwrap challenge

Ok, so I’m posting this as per special request. I’m providing a sample of an original state of a mesh that needs to be shrinkwrapped.

I was originally working on this back in 1/28/23, and yes I went a long way with the project already. So, I’m mostly posting this to oblige the request, and provide more direct reference to my experience with shrink wrap frustrations I’ve had so far.

I might have to post different states of the geometry later, to demonstrate other sequences. But figured this should be a good start.


rhino_forum_shrinkwrap_test.3dm (3.1 MB)

If we ignore the fact the meshes were derived from iphone 3D scanner technology, and the mesh is comprised of two separate scans that were later trimmed and manually aligned; then we have a mesh that looks pretty bad to say the least.

So, if we ignore how bad it is and simply try to shrinkwrap it, then what shall we discover?

Well, I remember the results were pretty bad. I remember the shrinkwrap generated a very complicated solid shell entity. This ended up adding a great amount of extra time to deal with – that I didn’t foresee.

To my surprise, the shrinkwrap command wasn’t able to fill in or span across the gaps, the way I’d hoped.

Unfortunately, nothing seems to be automatic in these industries. Maybe someday AI will add some automation.

I think its important to know that ShrinkWrap wraps meshes, it currently doesn’t use AI to fill in missing data in the model where there isn’t any. You’ll need to add the missing bits if you expect a solid volume. Otherwise you can take a shot at the FillMeshHoles option or the Inflate Vertices option. You can have gaps that will be forgiven, just not gaps a lot larger than your target edge length.

I used a SubD plane and pushed it around a little for the top, nothing accurately done (15 seconds maybe?)

I used InterpCrv and snapped around the interior open area and ran Patch (maybe sub 2 minutes for that action).

That was enough to get it to Inflate as a solid volume.

8 Likes

Maybe someday.

Indeed.

I found this option to be very problematic, and had alot of failures.

I’ll need to study this more.

I’ll take this into more consideration.

I’m shocked, it seems you were able to have success with much fewer steps than I did, and you were able to get it to have it forgive larger gaps I think, not to mention the mesh overlapping areas.

Maybe something improved on recent R8 updates…

I’d be more interested to see your parameters inbetween those middle two states. I’m surprised to see that transition succeed at that point so quickly. Looks like the tools are dealing very well with gaps and overlaps – I’m very surprised. Because, even with those green patches, I remember there being many issues with gaps and mesh overlaps between the original two meshes that I manually trimmed and aligned.

Also, the main problem I had is the shrinkwrap ended up creating a very complex solid-shell that was a nightmare to split apart, even though that’s what I ended up doing to get everything to eventually work.

I’m mostly curious how tightly your shrinkwrap was able to conform to the messy mesh, and any control you had over the conformation, and also mesh density composition.

I also like the final quad remesh on the left, but am curious about the parameters of that dialogue as well.

Overall looks very good at a glance. I just wish Rhino could align the original scanned meshes too :grin: and wish iphone could scan better lol.

R8 is coming along very awesome though :sunglasses:

Hi @Trav, i was able to crash V8 to the desktop a few times with the example model but no error report dialog came up. Did you notice that too ?

I first thought it may be related to the many non manifold mesh edges but was able to crash it again using only points sampled on the model. In both cases the crashes happened when i tried to lower the edge length below 0.1.

btw. do you see that the ShrinkWrap and QuadRemesh previews clips the preview geometry below the groundplane ? (this happens over here when groundplane is enabled but is not shown, eg. in a shaded viewport).

thanks,
c.

@lander does this help:


rhino_forum_shrinkwrap_test_g.3dm (4.0 MB)

1 Like

Hi Clement -

I briefly played with this file but did not encounter any crashes here.
If you can find specific steps, please let us know.
-wim

1 Like

Hi @clement no crashing here on my end but if you have a reproduceable way to make it crash I can get it patched up.

In terms of the ground plane being visible I do see there’s now an option to draw the ground plane in shaded views and I can see why this would clip many types of preview display conduits. I’ll have to chat with the render team and see what they think about it.

1 Like

@lander My Parameters were very basic. Just used the Inflate Vertices and Points option and set the target size to a value that appeared to fill all of the remaining holes and gaps. Then offset that distance back in ward to fit tighter to the surface since “Inflate” always offsets in all directions from each vertex in a mesh or point cloud.

You can’t expect FillMeshHoles do do anything here. For example run DupBorder on your model and look at the resulting curves. How would the FillMeshHoles command even begin to comprehend the appropriate borders to stitch shut? It just can’t and thus does nothing. btw that checkbox is ignored when Inflate Vertices is active.

Below you can see the overlay preview to see the exactness, which is hard to know since your 2 main fragments aren’t we’ll aligned and cross through each other in several places by a large amount.

If you want more even density of the resulting faces then turning the polygon optimization to 0 will keep them more uniform.

As for the QuadRemesh settings. I just took the defaults and enabled Convert to SubD

Anyway, I hope this helps. I’ve included the file.
ShrinkWrapFragmentedSegments.3dm (7.8 MB)

3 Likes

Yes thank you.

hmmm :thought_balloon: I’ll need to study this more…

Yeah I agree hahah. I was having much trouble with that tool here.

Some reason I didn’t exploit that option I don’t think. I remember I went in the subD direction though, and alternated back n’ forth through subD, polysrf’s, and quad meshes, etc. – I’ll have to share some other states later.

Reverse engineering programs like ‘RapidWorks’ used to provide many options for things like that – fwiw.

That preview looks cool :sunglasses:

Ikr! haha that’s why I thought you’d be stumped like I was :sweat_smile: but you solved it in a few min :money_mouth_face:

This looks beautiful! :face_with_monocle: :smiling_face_with_three_hearts: I remember spending several hours per day for days, working on sealing that thing up. And I think I deviated a great amount from the original geometry.

Luckily I wasn’t worried about the deviations for this particular project, but I really like your demonstration of precision to the original meshes, because this would definitely be something I’d need for other projects.

Good to know! Meanwhile I do prefer higher densities near higher curvature – for certain things. Back in the day when I did alot of reverse engineering work, I’d have alot of fun maintaining the densities near sharp corners and high detail areas per say.

But the uniform compositions are definitely a powerful stage to have a workflows. It can really clean things up and add a nice smoothing effect without much loss of detail.

This is really cool. I actually spent alot of time on this type of stage. I really really like how subD’s can generate a nice flow effect to the geometries!

Definitely! thnx! :beers:

This will most likely help me alot on my next couple similar projects!

2 Likes

I was playing around with this a little bit. And did have success with it.

I think originally I was struggling in the past because I was not taking the advantage of using multiple target objects (meshes, surfaces, subD! :smiley:etc.) – being able to do this is really cool.

I will say though, I think the dialogue is still lacking some intuition for the user.

It’s weird to me that the “inflate is offsetting in all directions” but then I set the “offset” field as a negative value?

And it’s great that it’s successful, but things are still a bit more offset than I’d hoped. I would like the shrinkwrap to be tighter to the original objects in some areas, but obviously not in others haha… :thinking: :thought_balloon:

Guess I can’t really complain cause the resulting object is amazing lol, and maybe I can offset that back more originally or after the fact… :thinking:

Draw a point object and shrinkwrap just the point. Play with the offsets

Now draw a point next to that point and shrinkwrap both points. Play with the offsets

It should then start to make more sense as to what is happening.

2 Likes

lol k I’ll check that out.

I used -0.04 this time and it looks more like I’d want. It’s tighter and still ignoring the noise and mess from the bad mesh geometry.

So, I mean this is really awesome! lol

It’s hard to say where the shrinkwrap should be tighter to the mesh. Maybe if the original mesh wasn’t so messy haha.

Awesome tool!

1 Like

Just to be honest. I think you’re wasting your time.

You’d get a much better result scanning your object with an actual 3D scanner like my Artec Leo.

I understand the low budget / open source approach but I just don’t think we’re at the point yet where an iPhone replaces a professional scanner and post processing software yet… I started my 3D scanning exploration with a David Laserscanner about a decade ago. The value of efficient post processing is really underestimated. Combining / fusing multiple scans is no problem in a dedicated software.

3 Likes

It’s just weird cause it seems like the “target edge length” is more like an ‘offset distance’ when the actual ‘offset’ parameter is zero or a smaller number than the length…

No, its trying to create “spheres” that are constructed with edge lengths that you’ve specified. A point has 0 radius so as an offset value increases the sphere is more well defined by the offset radius.

1 Like

I agree. But recently I had an almost 2-decade-old-several-thousand-dollar solution vaporize, due to litigation.

Meanwhile, I do have a $20k-$30k alternate solution at my disposal, but that’s beside the point.

Aside all that, it really would take a standalone $15k-$25k piece of software – “dedicated” as you’d say, to really do the job.

But I’m kinda done putting my time and money into those solutions.

I’d rather use my smart phone, and R8 shrinkwrap! :smiley:

Fair enough. Good luck :grinning:

1 Like

K, but now use points in the shape of a sphere, and try to get zero distance offset shrinkwrap to interpolate through all the points…


:thinking: :thought_balloon: zero distance but still offset…

I’d expect it to interpolate the points at zero distance…

Sorry, I’m obviously not explaining it very well.

A point has 0 thickness.

You can’t wrap something of 0 thickness.

What you can do is generate spheres of a given radius at each point until they coalesce into a solid.

This is what inflate vertices and points does.

2 Likes

Hi @Trav, i’ve been able to crash it again and this time the error reporting dialog came up. I’ve checked the box to include the file and send it.

I’ve also recorded the crash but the video is too large to upload here (20MB). Please let me know if you need this too.

thanks,
c.

_
c.

1 Like