Jump to content

Recommended Posts

I'm trying to understand a issue with surface normals after a fracture.  In the example file i have attached I use a boolean shatter on some geo. This doesn't cause any visible issues with normals. However one oddity is that the result of the shatter contains non manifold edges and wont pass through a second boolean set to union. I'm not sure if this is what causes issues later on. Then I run the shattered pieces through a foreach loop an fracture each piece with voronoi. The result reveals  bad normals along the edges of the fracture. In this case the problems can be mostly alleviated by reducing the cusp angle of the of the normal. But in some cases ive seen this solution doesn't always work. And too low a cusp angle can introduce other problems. Is the normal issue related to the non manifold edges from the boolean? Is there a way to set this up to avoid getting these normal problems. 

See attached file. 

Thanks  

5a1c61139f66b_Screenshotfrom2017-11-2712-49-00.thumb.png.ee7f019200c7655bf035af28f312126d.png

 

shatter_test.hiplc

Share this post


Link to post
Share on other sites

retrace your steps, put on display Normals....

At boolShatter, all the normals look wrong, along the edges...and away from edges, can't even see them....so go back again, at copytopoints, the normals on the 'grids' already look

f***ed without needing boolean/frac....why ? coz you're copying the N from the 'points'...so you should add ,^N after Alpha

now go back to boolShatter, you'll see a difference with the normals

(also, i think normal1 should connect to bend1)

Edited by Noobini

Share this post


Link to post
Share on other sites

i played around with this, got rid of the non-manifold warning....but honestly, don't know what the purpose is of the boolUnion ?...with this on, I think it screws up the voronoifrac, so I disabled it.

shatter_test_vu.hipnc

Share this post


Link to post
Share on other sites
On 12/1/2017 at 3:08 PM, Noobini said:

i played around with this, got rid of the non-manifold warning....but honestly, don't know what the purpose is of the boolUnion ?...with this on, I think it screws up the voronoifrac, so I disabled it.

shatter_test_vu.hipnc

Thank you very much! I was using the boolUnion just as a diagnostic as described by Steven Knipping in his 2017 siggraph presentation. But it looks like that's not always a good idea. Thanks again. 

Share this post


Link to post
Share on other sites

ok, I'll have a look again at the video and try to understand it myself...thanks.

Share this post


Link to post
Share on other sites

oh yeah, that'll be the Remove Self-Intersection, tho Steven didn't explicitly say it....Old School Jeff did in another video...

Edited by Noobini

Share this post


Link to post
Share on other sites
On 12/1/2017 at 3:08 PM, Noobini said:

i played around with this, got rid of the non-manifold warning....but honestly, don't know what the purpose is of the boolUnion ?...with this on, I think it screws up the voronoifrac, so I disabled it.

shatter_test_vu.hipnc

So I'm looking at your solution for this again and it seems the problem isn't fixed even with the normal problem solved. The problem can be seen on the clean sop after the boolean. The remove Degenerate Primitives on the clean causes the seam between pieces to be visible. this is the same problem that occurs after the voronoi. It seems like this combination of shatter and voronoi in a loop doesn't result in clean geo. 

Share this post


Link to post
Share on other sites

well I have second thoughts about this...and you know what, I'm gonna say Houdini is right !!! Here's why...

Imagine you've got a box, I picked a box so that it's perfectly flat on each side. You start off with the normals of each point pointing perfectly straight out of the surface....nice...now you 'break' up the box numerous times...Bool or Voronoi doesn't matter..you're just breaking it so it has many sharp edges now....

Let's add an explode node, then look at just ONE shattered piece in isolation...there's really really SHARP edges there...the normals of those points on those sharp edges (the seams)....CANNOT remain pointing straight out (orthogonal axis) as initially observed..I will say it again, those normals CANNOT be pointing straight out as before, they have to change to some angle..let's say it's the average between the normals of the 2 faces that make up the sharp edge....You must agree with me on this errr....point, right ?

So if we agree that the normals of the points on the seams must change to some angle and not remain orthogonal, now ignore the explode and put all the shattered pieces back in place...they are STILL shattered....even those it 'looks' like the box is back but nooooo...they are just shattered pieces lying next to each other....so just because they lie next to each other it does not mean their normals (at the seams) are now magically pointing orthogonal again ! They must point to the new angle because they're SHATTERED....and hence you 'see' the taletell seams...

So Houdini is right, stop picking on it !!! Only jokin'....:)

(and on the original unbroken box, if you look at the corners, you'll see the normals are pointing at 45degs...ie. the average of the 2 faces that make up the 'edge', this is the same effect as some new 'sharp' broken edge)

Another thought experiment, a brand new box, add normals to it at points, you'll get normals pointing out at 45degs on the corner edges. Now copytransform a few of them exactly 1 width apart....so you have what looks like a long box....where the joints are the normals are still pointing at 45degs...it can't magically change to being perfectly orthogonal (if you had added your normals to vertices instead of points....it gets interesting....but is it correct ?)

Edited by Noobini

Share this post


Link to post
Share on other sites

Thanks for your response and description of how normals work with shattering it was helpful. I think the problem I see isn't the normals. Lets consider your suggestion of a shattered box. If you add 100 division to each axis of the box and 100 rows and columns to a grid with a mountain sop. And then boolean shatter the box with a few of the grids. The result is a shattered box with barley visible seams. If you add a clean sop with remove degenerate primitives(I guess these are polys with really low area) tiny holes appear along the seams. Tiny holes in the seam also appear after running the result through a loop with a voronoi. I'm not saying Houdini is wrong I'm just wondering what the best approach to solving this is. 

In a related question, If seams between shattered pieces are unavoidable. Is it best practice for destruction to render unshattered geo and then swap in the shattered version on the needed frame? Or render the shattered geo and cover the seams with material? 

thanks for you help. 

Screenshot from 2017-12-08 12-26-19.png

box_degenerate primitives.hiplc

Share this post


Link to post
Share on other sites

this is where I said " if you had added your normals to vertices instead of points....it gets interesting....but is it correct ? " comes into play.

so if you set normals to both the box and cutting grids at points rather than normals...your seams won't be barely there anymore. it will be clearly visible...honestly I don't what is correct, I'm leaning towards normals at points rather than vertices...but of course, for your purpose just use vertices ! For the clean, dunno what magic it's doing under the hood there...

I'm no expert in this destruction caper, but I tend to agree with you that, if possible, use the unadulterated version of your geo til the last split second before the destruction and then swap in the fractured geo...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×