Jump to content

Can't polyfill these simple holes. Are there any modelling geniuses out there that can help?


Goliath20

Recommended Posts

Can anyone figure out why I can't polyfill these corner holes? The points are fused but double clicking one outer edge of the oval results in the entire outer edge of the oval being selected even though it SHOULD stop at 1 of the 4 fused points where the oval meets the rectangle. Can anyone explain to me what's causing the degenerate geo? Thanks  
manifold_geo.hip

 

manifold.thumb.JPG.d0b40e5fe6c1a33372613cb2c17b6c15.JPG

Edited by Goliath20
Link to comment
Share on other sites

A real tough condition for procedural tools to fill those holes. I used a curve SOP then mirrored a couple times to fill in the holes. And those four holes will create a polygon that is concave. Not a very good primitive to render with many engines, or to pass on to a game engine as triangulating that face may cause overlaps.

Polyfill sees the input as degenerate which means there are one or more cases where things are ambiguous. Consider that there are six open conditions that it considers to fill. The four holes, the perimeter of the frame and the perimeter of the exuded oval.

Instead I reworked your file to be more procedural. Where the original grid and circle are properly configured, skinned and then three methods to create the extrusion: your existing polyextrude SOPs (fussy approach), using a single poly extrude and it's ramp lookup for the extrusion, sweep SOP to sweep a profile curve to create the profile.

You can change the window outline, the padding of the circle to the perimeter and anything else you want to drive procedurally. What's also nice is that the topology is rock solid and you can create an infinite number of variations.

Begging to be turned in to an HDA.

 

manifold_geo_window_frame.hip

manifold_geo_window_frame.jpg

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

Dear Sir,

I believe the Polyfill SOP is fundamentally wrong. By definition, it should fill in HOLES. So here's my extremely simple illustration.

As you can see, yes, there are 2 borders, one inside and one outside...but there is only ONE hole. The problem is Polyfill is filling in both borders instead of just as it says in the helpcard..."Fills holes with polygonal patches."

So you see in my illustration, the problem can be seen clearly, yes I exaggerated the effect with the Surface Offset...but even if you use Quad settings instead of Triangle...you may see flat surfaces...but don't be fooled into thinking it's done it right, it's filling in both front/back on top of each other. Attached is my file for closer examination.

And a jolly good day to you sir.

(ps: I can see you taking my grid with a hole and extrude/morph its topology into a tube and argue that...well it does have 2 holes...but I'm not a Rhodes Scholar...more like Roads Kill Scholar...anyway...too much postulating already...)

Polyfill1.jpg

polyfill.hipnc

Edited by Noobini
  • Thanks 1
Link to comment
Share on other sites

  • 2 weeks later...

@old school That is cool stuff for the academically inclined, but for those that are not or when you have a model to deliver by the end of the work day, it all becomes info noise in a modeler's eyes and ears.

I hope that by know the devs in charge of these modeling tools have taken notice regarding the need of a interactive poly create tool and they've started the work on a shiny new "polyknit" tool. Or extend the current polyfill's capabilities to be usable as such. And then add even more, like for example the ability to draw polys on "screen space" and even creating polys as new separate objects by invoking the tool with nothing selected. I use the "polyknit" equivalent in Softimage for all these things and it's an invaluable tool for quick object sketching to act as a starting point for more detailed work.

@Noobini How do you mean it's fundamentally wrong, as in buggy or badly written or the wrong tool for this case?

If you specify the group of edges to be applied to (select the edges before calling teh polyfill) it works flawlessly. This probably goes to show that even this node doesn't stand the test of proceduralism, so to speak, even though that was probably its intended usage.

Edited by McNistor
  • Like 1
Link to comment
Share on other sites

because it states that its job is to fill hole(s)....so looking at my flat grid with ONE hole in it...fill THAT hole...but what it's doing is filling BORDERS...not holes like it says...

take it further, say my flat grid has 'many' holes...yes, fill all the holes inside it....but don't do the border outside...it's ludicrous..

(yes I know if you use Quad grid, and still depending on geo, it might match up nicely, but use Triangle fan and you'll see it's wrong)

Link to comment
Share on other sites

The algorithm doesn't know - I'm not making a case for whether it should or not - what is a "hole". Topology wise, there's no difference between what we humans perceive as a hole and other types of borders. One can easily imagine wrapping a grid with a hole in the middle around a sphere in which case you'll end up with a sphere with two holes. Should polyfill deal with both or only with "the border" and which is which? My point is, topologically everything is a hole, even the outside border.

In the case of a grid and other "regular" (as in, mostly quads) meshes, the outer border will have the most # of edges, so maybe the algorithm should evaluate these "holes" by counting their edges (or points if Houdini doesn't think in terms of edges) and discard the most numerous "hole" or rather the user should do that with a toggle.

Edited by McNistor
Link to comment
Share on other sites

mmm...by the tone of my post...i was just having a bit of fun with old school Jeff there...like i mean...who starts off with Dear Sir nowadays....who even uses 'jolly good' anymore...

Anyway, my workaround, for flat geo, is if you select unshared points, there's the option of Create Group...so if you label it as Border...it would create Border for ALL unshared points...then Border__0 for the Outside one then Border__1, 2, n....for inside ones...Then promote * to edges

Then in polyfill, use !Border__0 (the outside one)....Jeff....i mean Bob's me uncle...

Link to comment
Share on other sites

dunno nothing about Topobuild tbh, but my example is EXTREMELY basic...with one hole...so yeah 2 secs for you but I guess you wouldn't want to manually fix something that's way more complexed...like hundreds of holes on a panel...

come to think of it....imagine a curvy side panel on the side of a plane....it's perforated with bullet holes...now you want to patch up all the holes...sooooooo....my geo is NOT a plain flat geo...so the argument that, well......polyfill works just fine for non-flat geo is incorrect in this case

(and yes if you use Quad algo to fill the holes..it works fine...but still dependent on the 'niceness' of the geo I think, it may not match up for more 'organic' geo)

polyfill2.jpg

polyfill_workaround.hipnc

Edited by Noobini
Link to comment
Share on other sites

Hello, here is my reasoning.

Maybe you should think if you want to get an open shape or watertight. If you want watertight polyfill should just fill all borders as it does by default.

if you want to get an open shape and close only what we humans perceive as holes, maybe you can do it thinking in terms of area. So in your example you might want to exclude the larger area.

Perimeter is not valid in my opinion because you can have a very complex hole with a huge perimeter, enclosed by a square. Area makes intuitively more sense to me.

The way I did is polyfill all, isolate the new polygons, find the larger chunk of polygons and remove it, merge it with original shape.

I'd like to see better ways to do this, I feel I used too many nodes to find what I needed.

 

polyfill_Menoz.hipnc

  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...