Thanks to Your Help Fractal Voronoi Noise Was Added Into Blender!

Actually after thinking about it the Roughness input for Distance to Edge could be used just like the Factor input for MixRGB. The behavior would then be similar enough to still call the input “Roughness” even though the calculations are completely different.

The output would then have no obvious physical meaning except for Roughness values of 0.0 and 1.0 but that’s fine as long as it looks good.

I’ll add it to the things to rework.

1 Like

That is how i made the node group. A smaller version of the voronoi texture is mixed into the original one. The mix factor is determined by the roughness value. That is how i thoght these kinds of fractals allways work. From what i recall the value that is called roughness in Blender is normally known as “gain”.

I will clean up the node group and post it tonight when the kids are in bed.

I got most of what i know about these types of fractals from Neil Blevins web site. It is been years since i researched it but that web site was really useful for me. He is an artist so there is probably nothing new for you to learn there but perhaps others are interested:

http://www.neilblevins.com/art_lessons/fractal_noise/fractal_noise.html

3 Likes

Between my lack of knowledge of the calcs (you tried) and communication issues (autism spectrum), there are spots where I’m not sure if I’m being agreed with or disagreed with. Wading in . . .

No additional data, no – the data was always there, ready for you, all I did was show it. I think the addage about if you’re holding a hammer every problem looks like a nail is of use here. You keep pointing to your hammer and saying “see, this won’t do it, you can see that, right? {{{whap!}}} How 'bout now? You can see nothing happened . . . no? {{{whap!}}} You saw it that time, yeah?” In response I’m trying to describe using pliers while mistakenly calling it a wrench. :flushed: But I think you’ve now realized that:

I think that’s what I (and @Lumpengnom ? ) have been trying to say, but to be sure:

20230210_KA8P_VorFractalTest_022.blend (3.1 MB)

You said “Darken” so I tried that first, it did the thing. From what I understand, something like that part of the node tree can be turned into the calculations that would allow a Distance to Edge input (called Roughness or whatever) on one Voronoi node to coordinate with an F1/Smooth F1/etc Roughness input on another Voronoi node while scaling the cell borders of the Detail levels as shown above. Is that what you meant you’d do when you said

:grey_question:

Ah yes Neil Blevins, an exceptional artist. Anyone who’s interested in creating art should give his posts a read.

1 Like

Well yes but no, you’re getting the right results but for all the wrong reasons.
It never ceases always amaze me how some artists are able to create the results that they want through sheer coincidence, with the math behind it just happening to work for that very specific scenario, but that’s also what I like about working with them.

Let me explain:
You might have noticed that besides the new Detail and Lacunarity inputs I also added a Normalize checkbox to Fractal Voronoi Distance to Edge.
As your posts made me notice this checkbox is rather misleading because the for Distance to Edge the output is getting normalized by default but only takes the scale input into account. When you tick the Normalize checkbox it additionally takes the Detail and Lacunarity inputs into account when normalizing.
I’ll probably change it such that it either no normalization happens at all or all inputs are taken into account. But for this discussion only the fact that the output is always normalized according to the value of the scale input is important.

Now I’d like you to have a look at this picture:


On the right side you’re seeing the output of your node setup, while on the left side you’re seeing the output of my Fractal Voronoi Distance to Edge using the same input values.
You might notice that apart from the border thickness the borders are at exactly the same locations.
This is where the part about normalization comes into play.

Your node setup normalizes each layer separately before applying the Darken function on the already normalized layers.
This is why the the borders in your setup has varying border thickness depending on the scale of each layer as the scale input normalizes differently according to the scale value.

My code normalizes the output after applying the Darken function on the not yet normalized layers.
Thus normalization only occurs once for all layers combined with the same scale value which is why the border thickness is the same irrespective of the layer.

At the end the only difference is the order of operations and no this still leaves no need for an additional Roughness input, as the behavior you want could be implemented using just a single checkbox, which reverses the order of operations.
However this is easier said than done, the Voronoi Texture code is already pretty complex and I’ll have to see if there is an elegant way to do that.

And to clear things up:

I think that’s what I (and @Lumpengnom ? ) have been trying to say

The proposal Lumpengnom came up with actually isn’t the same as yours, with one of the differences being that his proposal would actually need a Roughness input, as opposed to just a checkbox.

Is that what you meant you’d do when you said
. . . I’ll add it to the things to rework.

I meant that I will rework the Edge to Distance output to take a Roughness input to act like the Factor input of the MixRGB node.

3 Likes

Do my darndest! :rofl: Thanks for explaining (again).

If that works like I hope I have a sclera-veins idea for Suzanne’s eyes waiting for it, that’ll be one more render to impress your colleagues into adding this. :clap:

Just to make sure I’m not setting up false expectations, the new Roughness input would work like what Lumpengnom described instead of reversing the order of operations, which is what’s necessary to get boundaries of varying thickness.

1 Like

Ok, I cleaned up the node graph and made a file with three scenes. Two contain different settings for the smooth F1 version and one scene contains the distance to edge version:

6 Likes

Those are some impressive node setups you got there!
If everything goes well most of that will be possible using just a single node in the future.

4 Likes

I have started developing the improved version of Fractal Voronoi noise using your feedback.
Development is going smoothly, however it is a lot of work and Voronoi is one of the most complicated nodes Blender has, so it will take a week or two until it is fully finished.

If possible, I would greatly appreciate it if you guys could provide more use examples of use cases of Fractal Voronoi to increase the likelihood of it being accepted into the official release version of Blender.

Thanks! :hearts:

10 Likes

Super cool! :smiley:

My Pull Request for adding Fractal Voronoi noise was approved has already been merged into Blenders main branch. :tada:
It is currently scheduled to release with Blender 4.0.
Any 4.0 Alpha builds released after the 14.06.2023 already contain it.

Your help was essential for making this possible! Thanks everyone for contributing! :heart:

28 Likes

Well done :wave: :wave: :wave: :wave: :wave: :wave:

1 Like

Already having fun with it!

:+1:

2 Likes

Welcome back powerful Voronoi texturing, I have been waiting for you to return since your removal early on in the development of Cycles.

Fun fact, full-fledged Voronoi was in the very first Cycles builds, but had to be stripped to a simple cell generator because of GPU kernel limitations. No exception was made for CPU rendering.

We still don’t have the return of the Worley Constants, but it is much better than before.

2 Likes

Would you mind to elaborate a little more one the so called “Worley Constants”?

Haven’t used much but it is great for creating basic rock forms in Houdini.

1 Like

I want the perlin noise. Need it to do so much with the smoke modifier + forces.
The voronoi thing, yeah, whenever they feel like it, it’s fine.

Perlin noise. Not the cheap one. The REAL perlin noise with evolved parameters.

I’m busy with all sorts of things right now, but I plan to add the “Lacunarity” and “Normalize” inputs to the Noise Texture node as well. What do you mean by "evolved parameters"?

I made some lovely (fast) Voronoi mountains to celebrate your achievement :slightly_smiling_face:

12 Likes