Voronoi "add edge subdivisions with noise" attribute
#1
Lightbulb 
In order to achieve a less "CG"-look of straight edges, we want to suggest an "add edge subdivisions with noise attribute" in the Voronoi.

Method:
- "add subdivisions" parameter
- "add noise" parameter for adding globally noise (like always perlin/turbulence/curl)

Because this is happening inside the Voronoi, the cut position is clearly to tell:
It's of course always constrained to the surface.

Example screenshot how "organic" it looks
   

Advantages of doing this integrated in the Voronoi operator:
- If that edge placement happens just by computation before cutting – in other words: just in order to do a refined calculation of the cut position –
then the texture becomes not distorted like it would happen with any separate deformation operation thereafter.
- It happens procedurally and only within a single operator

I really can't emphasize enough, how important an organic realistic-looking "edge breaking" is.
All those workarounds with clustering, remeshing or cascading of fracturings, which I have spent weeks with to examine, are only cumbersome workarounds and mostly not procedurally. I can see at first glance if fracturing was done "only" in tyFlow, which is sad and should be handled with more priority.
And there are also users out there (like me), which work in 8k or even 12k high-end pictures and their needs are less reflected by the "small movie" users in the Facebook forum.
Thanks!

I'm partly also referring to this thread http://forum.tyflow.com/thread-2125.html

p.s.
I would like to cite, what a colleague told me about this topic Smile
"It's the same as if Autodesk would have forgotten to integrate a "bevel" modifier and all the users do complicated workarounds with booleans or zBrush sculpting, only to achieve round looking edges."
I think the bevel is a quite good example, because it also is used to mitigate the "straight CG edges" look and does so also by adding subdivisions there.
  Reply
#2
Yes this would be really helpful indeed!! Big Grin
To have more Breaking options and modes...
Lot of people rely on Rayfire for the Fracturing and then use Tyflow for the calculations.

For example It would be also nice to have a Manhattan distance Voronoi Implementation Smile
https://en.wikipedia.org/wiki/Voronoi_diagram
Javi de Prado
Spawned back in the 80s
  Reply
#3
The Displace operator already allows you to add noise to fractured faces, and the noise will extrude perpendicular to non-fractured faces if you assign material IDs correctly.

It is not a good plan to integrate this into the Voronoi Fracture operator because as soon as resulting fractures lose their convexity, you get overlaps in your initial PhysX state which is bad. Displacements like this should stay as a post-sim effect, and there's an official example scene showing how to do it.
  Reply
#4
Thanks for reply. You wrote: "The Displace operator already allows you to add noise to fractured faces, and the noise will extrude perpendicular to non-fractured faces if you assign material IDs correctly. " I know the example scene with fractureDisplace (I think you are referring to this).

1.  When I take an own birth object instead of the primitives of the scene, I get as soon as I add subdivisions a bumpy non-smooth geometry.
This is the first big difference between doing already the wished cuts or trying to add after cutting subdivisions in order to correct them.
Attached screenshots and scene (max2020 and downsaved max2018) below. I just did a test today to answer correctly.

2. Another important difference is, that the patterns do not fit together like a puzzle.
The flat screenshot above is made of perfect matching pieces, just moved a bit to see them.

3. When I use a sphere with shell modifier (think for example of a porcelain vase, that should be breaking), the result is not usable at all.
I used a typical sphere.

I have also watched once again Anselm von Seherr's "1,5hour disintegration tutorial" on the weekend, which is great but an overkill with subdividing and remeshing, which all has the purpose to achieve "organic" lines. He used only one small object and it already takes minutes to calculate this.
His result for this purpose is great, but in bigger setups, we would have too high polycount and it would calculate way too long.
It's a method trying to fix "wrong" edges by doing extreme subdividing.
(And I also can't rely on motion blur and DOF)

This makes me still trying to convince you, that it's really worth to extend the possibilities for non-straight-edges in the fracturing process :-)
It enables shorter workflows and cooler results for everyone.

I have attached screenshots from my quick test today. Thanks a lot for looking!
   
   

.max   Tyflow Displace Scene with BIRTH OBJECTS_max2018.max (Size: 172 KB / Downloads: 224)

.max   Tyflow Displace Scene with BIRTH OBJECTS_max2020.max (Size: 172 KB / Downloads: 230)

p.s. And maybe also worth to keep in mind: Every method with doing edge adjustments thereafter, is distorting UVs.
Of course, you can reproject the UVs in the same event, but only if the broken "puzzle pieces" still fit to the original shape and as soon as the position is left and a secondary fracturing applied, this isn't anymore possible.
  Reply
#5
Just forum info:
Discussion is continued at http://forum.tyflow.com/thread-2125.html
  Reply
#6
Lightbulb 
Hey Tyson,

may I ask if there is anything planned? It's still for me and many silent others an important topic  Smile

And I would like to point you to this thread in the Tyflow forums, where a more experienced user than me offered his personal scripting, but explicitly only to you.

(Which is also a clear sign, that this topic is even for those people important, who already found their own workarounds...)

Attached a screenshot and the link. Thanks for reply

https://m.facebook.com/groups/2214906212...7870/?_rdr

   
  Reply
#7
I haven't spoken to the other user about his setup, no. Looks like he's pre-fracturing the shapes with booleans or something, judging by the unstretched UVWs along the jagged edges. Not something I can implement at an operator level until a more reliable CSG library is released by someone.
  Reply
#8
Hey guys,
My setup relies on the standard voronoi cutting algortyhm, everything is dynamic, none of the fragments are pre-fractured. This method should also allow to generate a corresponding "standard" convexhull at he same time but only for a few iterations of refracturing... This way I can have jagged and classic voronoi fragments in order to avoid simulating Physx with concave fragments. But I haven't finished to implement this part.
Anyway, even if my solution is clean regarding mesh's uvs and surface, this method is based on subdivision, pre-displace and post-displace, so it's not ideal because it produces a high polygon count.
I agree with Tyson that a csg algorythm would be a better solution.
I'm also looking for a good source on the web. I'll let you know if I find something Wink
  Reply
#9
Thanks for the clarification, Geoff.

If you're just doing subdivision + displacement, how does your method differ from the tyFlow-centric Subdivide+Displace method shown in the official example files? Is it just that you're applying clean UVWs after the displacement?
  Reply
#10
the method is pretty simple, displace in world space -> cut -> reverse displacement. The uvs are kept all along the process. that's why I asked you for the cloth de-convert uvs Smile
  Reply
#11
Ah, I see. Eloi suggested that method of displacement a while ago and while it seemed pretty interesting, I tested it and ran into some issues that led me to pan it as an officially supported method....the main one being that the reverse displacement applied to the subdivided slice cap faces can lead to a lot of nasty mesh self-intersections and other artifacts. Also you can't get clean non-overlapping convex hulls from the result when not doing displacement as a post-effect, so putting the result in a PhysX sim has issues...although I guess that would be the case for the CSG method as well, so that problem itself is not a dealbreaker.
  Reply
#12
Here's a file showing that method in action.

Notice how after the displacement is reversed, any new vertices created during the Voronoi fracture process that get back-transformed do not end up in the exact location they "should" be, because their position calculated during the Voronoi fracture and post-fracture subdivision is an interpolation of neighboring verts/edges, not the actual location they would be at if they existed pre-initial-displacement...so they're back transformed "further" than they should be. So...you get nice interior breakup, but a lot of surface artifacts, self-intersections, etc. These artifacts can be somewhat minimized with more initial mesh subdivisions.


Attached Files
.max   fractureDisplace.max (Size: 4.35 MB / Downloads: 343)
  Reply
#13
By determining displace amount by UVWs, I can get the edges a bit cleaner...still not perfect, but an improvement.

Is this similar to your setup, Geoff?


Attached Files
.max   fractureDisplace2.max (Size: 4.36 MB / Downloads: 337)
  Reply
#14
the trick for reversing displacement properly is to use the uv datas as a coordinate system, since the subdivide algorythm interpolates uvs correctly you can take advantage of this feature to get your local vertex coodinates back after displace and subdivision. I'll take a look at your setup...
  Reply
#15
That's basically what my second setup does, yea. Still some minor artifacts, but not as bad.
  Reply
#16
I saw Houdini’s solution in a video shared by others. Take a look, is there any inspiration?
https://www.youtube.com/watch?v=n_wsSlWC_Tc
  Reply
#17
Their fracture op, when detail is enabled, appears to be using CSG operations. You can see those discussed earlier in this thread.
  Reply
#18
After reading the file you uploaded, the effect is correct. It will be perfect if the edges of the pieces fit together. At present, this method can be used in scenes that are far away. Hope there will be a better solution in the future. Thanks tyson
  Reply


Forum Jump: