Making 'Random' Procedural Shaders Less... Well... Repeating (PP2014/Firefly)



  • It happens with a lot of the 3D texture nodes in the material room. If you apply them to a large surface you get a distinct repeating tile pattern. Here's the Cellular node with default settings plugged into the Poser Ground (scaled at 100%)...

    0_1471260006319_NonRandom.jpg

    ...notice the same exact pattern repeated in each of the four quadrants.

    Question is, how can I avoid this repetition of the same pattern - I need a much more random look.


  • Poser Ambassadors

    I was going to answer, but there are too many answers to this and for even one of them, far too much to write, without asking more detail of your requirements.

    So -

    • Is a FireFly solution required, or can we switch to SuperFly?

    • If FireFly, am I allowed to use 50 to 200 math nodes and build the function from scratch, or are we trying to stick to the built-in Cellular? (Which, by the way, I have tried and found no way to fix. That doesn't mean there is no way, just that I have not found one.)

    • You mentioned cellular by way of example, not the entire requirement. Which others do you want to fix, and the first two questions will apply again?

    Generally speaking, the Poser procedurals were somewhat "naive" in their implementation and should have been built with a sound use of a large-period pseudo random function, or PRF. (Being in the cryptography business, I have some more awareness and respect for randomness than most CG guys.) I can build such things from nodes, but it is hella lot of nodes.

    I'm still waiting for SM to realize that modular software can be developed, whereby I write what I want as a DLL (for Windows) or shared library (for Mac) which would permit extension of the material nodes without access to Poser source code.



  • For my purposes it has to be Firefly since I'm limited to PP2014.

    I'm quite happy playing with large node networks, and my maths is okay.

    Cellular and Noise are the two that are really bugging me


  • Poser Ambassadors

    Here are a couple approaches I've posted in the past to clean up obvious repititions in the Noise node. This relies on the apparent fact that the underlying pseudo random "field" used in the Noise node is different from that used in Clouds or Fractal Sum, and that these two can interfere enough to make the repetition less obvious, or even disappear.

    0_1471274200716_clean noise shader.png

    0_1471274206741_clean noise shader 2.jpg


  • Poser Ambassadors

    Note - I am two days away from going on vacation, so I'm deeply cramming to get my work done, and after Wednesday I won't be around to answer questions, or not deep ones requiring testing anyway.

    I'll be in Prague, then Salzburg, then Budapest.



  • Thanks. I'd already tried plugging a clouds node into various inputs of the Cellular node with unexpected and psychedelic results - https://community.hivewire3d.com/threads/possibly-unexpected-ways-to-use-nodes.888/#post-58950. I thought I'd also tried with the Noise node, but I'll have to try that again.

    Multiplying different 3D texture nodes together is something I'll play with - I'd only really tried multiplying nodes of the same type, setting input 'X' of each to different prime number values to increase the size of the repeat.

    And enjoy your holiday !


  • Poser Ambassadors

    Modulating the scale of a procedural does cause localized distortions, but as you found you can only do it modestly and that the underlying shapes are not erased - rather just pushed around.

    The multiply for the Noise node isn't pushing the shapes around, it's substituting another noise structure. (Clouds or FS on a small scale is noise). Clouds and FS display repetitions as well, but the combinations I showed hide those repetitions. The two different sets of repetitions interfere such that, overall, the period of the repetition is now enormous.

    This doesn't at all work for things with a shape, such as bricks, tile, or cellular. For these, we need to alter the underlying basis function that provides the random elements, from which the shapes are constructed. You didn't change the basis, you must moved the repeating shapes into new positions, but they still repeat.



  • (Just a note to self regarding DIY cellular so that I don't forget - Voronoi diagrams and Delaunay triangulation?)