Noise, Perlin noise and esthetics of random

Here it is, a title which, as usual is quite confusing. First of all here we will not discus mathematical nature of various random number generators (which is also an interesting topic). And we will focus on esthetics of random. Random… what? Well anything random I guess.

So as I see it there are two ways of making things esthetically more interesting*. One would be depicting more. Say we have a plain wall, we would want to see 5 layers of paint which where applied, and in some parts the paint is cracked and we see bricks, also we see a spider web and so on. This is one approach, and it is a best way to achieve visual detail, and make our frame more interesting. But it takes time to construct both wall, and spiders and dirt and so on. Another approach is to increase detail by adding random elements, which by themselves do not depict anything in particular, but in certain context might be perceived as intended detail.

plian white wall
plian white wall
rich white wall
rich white wall

Again noise is just noise. But if we use gray noise placed above depicted fireplace, viewer will think its a smoke. If we add same gray pattern of noise on plain wall, viewer might interpret it as a dirt on a wall. This way is much faster. And this is what we will talk about.

First of all lets see a simple Perlin noise pattern, and a multiple scaled Perlin noise patterns. (image A)

perlin noise, taken from wikipedia
perlin noise, taken from wikipedia

And in picture “B” we see variations of Perlin noise (here I am not certain if it is actually a perlin noise, probably not, corrections are welcome) which intend to depict something more precise then abstract noise itself.

cedural maps "Celular, Dent, Perlin marble, marble", 3ds max, image B
procedural maps “Celular, Dent, Perlin marble, marble”, 3ds max, image B

So a simple comparison could sound like this.
Perlin Noise. A boring plane noise which is rather abstract and doesn’t depict anything in particular. Which is also a good thing as an element to construct more sophisticated noise like effects.
Now there is nothing better then Scaled multiple Perlin noises. It has different size elements (see image A) and is almost a god in cg world (no?). And variations of Perlin noise, which could be modified to depict wood and other interesting patterns. But what is the difference between Perlin noise – and multiple scaled Perlin noises? Well, I would say that its all same plane noise, but it goes towards depiction, towards sophistication, towards no randomness.

So desired noise for image enhancement, should look like intended detail rather then just random detail. What I want to say, its not the detail itself that is a valuable a detail, its a detail that has something behind it. And its quite tricky to make automatic algorithms that would not only add detail such as Perlin noise but a noise of a sort that somehow depicts something, without a necessity to actually take care of what it depicts. And for that I think we need to look in to such procedural maps as “planet” in 3d s max. Its is gone in new max versions.. (why?). Also in some older posts I suggested to build materials, or procedural maps that would “feel”the geometry they are applied upon. Especially the last link talks about an extra detail on edges of mesh.

One example from real world. Some days ago I was walking in a street and saw a window. It was dirty and covered in paint. But the paint was not running down, but upwards. Now first thought would be that it is an unneeded detail, which , if it where a CG shot, not a real life would make no sense and would complicate understanding of an image or a shot. And then I found a possible reason for paint running “upside down” Most likely the glass was already dirty, and a person who made window used dirty glass without directing it in any particular way from point of view of paint on glass. What I am trying to say, is that observer will always try to find explanations, and be it correct or incorrect, one always might find reason behind something. And here is the question: If it would have been a CG shot, would it be a bad shot, because if one notices this it makes them uncomfortable, ads an unnecessary level of thinking and so on. Or is it a good shot, because rather then having a clean boring “plain”glass we have some visual details…

So I guess the point of this post is to make a note, that we do want detail, but not just any detail, we want it to be “in the context”. It has to depict something, somehow. And if it actually doesn’t depict anything in particular, we should strive that a viewer would find its meaning on his own. Its a tricky task, and I guess.

—————————————————————————————————————————————————————–

*Here I have to make a note and remind you that I am by no means implying that more complicated is better, more detailed is better, visually overwhelming is a desire. But In some cases it might be the case (or some of these statements at least). Just imagine a white wall, which is shot in a close up, and all u see is just a wall. It covers hole screen. Now say a wall is white. So we can imagine a situation where we have a whole image containing only of pixels of rgb value 255,255,255. If you would not know beforehand that it is a wall, wouldn’t you say, its just blank white screen? So in some cases more detail is better. And hole today’s post is dedicated only to this situation, where more detail is better.

——————————————————————–

I have remembered this blog article of mine sis I found this cool interview with Ken Perlin himself! One nice idea he has is: if something is too complicated, add another dimention to it. What does that mean? Listen to his interview at fxpodcast here:

link to fxpostcast with Ken Perlin about noise, aesthetics and perlin noise too!

another article here: link

Advertisements

Proposal for uvw map modifier

One proposal would be very simple.
It would be to enhance existing uvw map modifier by adding ability to apply uv
mapping not for a single mesh, but to each element of the mesh.
I know its possible to achieve same result by selecting each element in mesh edit or poly edit mode
detach these elements from single mesh, and as a result, to have lots of objects to which u can individually apply uvw map modifier.
but in some cases, when u have a complex mesh, which consists of lots of elements, that could be very time
consuming work. These complex meshes are often result of importing geometry from other 3d applications.
So the idea is to apply, say a spherical or box or whatever type of uv projection method to each separate mesh element without a need to divide mesh and detach parts of it.
Now if we have a complex model, say a tree, or dono, anything actually, and we are not planing to have perfect uv’s by pelt mapping or selecting separate polygons and applying separate planar maps to parts of a mesh, we would want to have some simple method to get uv coordinates fast, and semi accurate. in current situation we can simply apply uv map modifier to whole object,
and expect that box or cylindrical map projection will do fine. and in some cases it does.
say model is far away from camera, and we have no time to produce good uv coordinates. But imagine we would have some middle quality solution. that is something between creating precise uv maps for separate polygon selections, or having to use pelt mapping, and between simply applying say cylindrical projection
to a whole mesh.
I propose to have an ability in a uvw map modifier to have a “per element” button which would apply
selected map projection method not to whole object but to each separate mesh element.
and also we would have an ability to manipulate (scale, rotate, move) uv projections within a single interface for each single element in one mesh,
at the same time without a need to apply hundreds, or be it tens of mesh select modifiers, and uv map modifiers, and struggling and getting lost in huge modifier stack.
lets look at the images below.
cylindrical map projection applied to a single mesh.1. cylindrical map projection applied to a single mesh.

 2. lots of uvw map and polygon select modifiers to achieve accurate projections for whole model.2. lots of uvw map and polygon select modifiers to achieve accurate projections for whole model.

3. proposed projection per Element mode3. proposed projection per Element mode

proposed projection per Element mode with floating box4. same, but with floating toolbox for selecting each element and having ability to apply different (cylindrical, box, etc.) projection modes.
Some additional thoughts.
Why do we think only about elements of mesh, can we use mat id’s for same porpoise? can we
apply separate uvw projection methods for mat id’s also? That could come in hand too..?
mapIDs for uv coordinate sets Next question would be, can we use both mat ID’s and Mesh elements? Or is there an easy and fast (one button solution) way to convert separate mesh elements to mat ID’s. Or can we easily convert Mat ID’s to mesh elements? And if we where to write such tool, where would we place it?
Should it be a part of edit poly modifier? edit mesh? or uvw modifier?
Any ideas?

I used to love this, and now its gone. Does 3Dmax evolve or does it degrade? Planet Procedural Map.

Ok, this line was just for fun, but.. There used to be such cool procedural map called planet. Ok it had its limitations. I would have liked to be able to add complicated maps inside each color slot of planet procedural map. But still, it was very good map. To me it was as important as noise and smoke.

noise & smoke procedurals
noise & smoke procedurals

I used to use three of them to achieve very nice random organic shaders. Ofcourse it was written to simulate planet surface, but that’s, to me at least, is only one way to use it. I used it in any situation..  But now I have 3D max 2010 and I see no Planet!!??

max 2010 vs max 9, where is planet procedural map?
max 2010 vs max 9, where is planet procedural map?

What happened, am I blind? Whats so good about it? I will add some pictures here:

planet functions
planet functions

Ok. there must be a reason why its gone. Might be its old code, somehow not compatible with some other newer elements.. So why not to rewrite it?

But if someone decides to do so, lets add some more functions to it.

In original Planet we have function called Iceland factor. It was probably the reason I used planet.

But one can increase or decrease island factor to whole generated procedural . To all its elements.

Why not to separate this effect, so we could apply it to separate elements of planet map, called colors. Now here its a bit hard to explain. Pls look at previous image and next ones.

island factor
island factor

Or, even cooler, might be we could add a map for each color slot, as how and where island factor should be high or low. What I mean is, if we change value per color slot, it would affect whole contour of that color slot, what if we could add noise or smoke material there… (i should update last pictures adding map selection button to each noise factor, i guess…  it simply would work as either value (0-1) or as a map.)

We also have blend water and land switcher. As far as I understand if it’s on, max generates gradient transitions between colors. Again, why not to have this option separately for each element, or color. And here is my proposal for Planet Pro :)

planet pro
planet pro

Ok, continent size and water size hardly make sense, but, common, that’s just an idea, not a finished procedural.  What you think of it? Could we have water regions and land regions like well… like a groups of colors? so we could apply some stuff to a bigger regions compared to one color?

like this might be:

planet procedural map pro 2
planet procedural map pro 2

Here is a text from 3d max 9 help file, describing planet material.

Here they say it’s not good for bump maps, but actually I loved it for rusty, heavily corroded surfaces.

Planet Map

Planet map used to create another world
Planet is a 3D map that uses fractal math to simulate the colors on the surfaces of a planet. You can control the size of continents, percent of ocean coverage, and so on. This map is meant to be used as a diffuse map. It does not work well as a bump map. 
Tip: The Material Editor's sample slot doesn't show the planet effect very clearly. To help get the effect you want, double-click the sample slot to get a larger sample slot, or assign the map to geometry and render the scene. Another way to preview the planet map is to use the Material Editor Options dialog to set the 3D Map Sample Scale to equal a main dimension of the object you are applying the map to. For example, if you want to use the planet map on a sphere with a radius of 20, change the map scale from 100 (the default) to 20. 

Interface

Continent Size—Sets the size of the fractal noise pattern used to generate the continents. Can range from 0 to 100. The higher the value, the larger the continents. Default=40. 
Island Factor—Sets the size of the fractal noise pattern used to generate islands and mountains. Can range from 0 to 100. At 0, the geography is very low. Higher settings create a more rugged landscape. Default=0.5. 
Ocean %—Sets the percentage of the planet's surface that is covered by water. Default=60.0. 
Random Seed—Sets the seed for pseudo-random generation of the pattern. Changing this number can completely change the pattern, even if other settings remain the same. On the other hand, a different Planet map with the same settings including the same Random Seed will appear the same. 
Water Colors group 
The colors in these three swatches are applied to the water areas of the planet surface. 
Water colors—Click a swatch to display the Color Selector and change the color. Color #1 is the "center" area of the water mass, Color #2 surrounds Color #1, and Color #3 surrounds Color #2, meeting the land. 
Land Colors group 
The colors in these five swatches are applied to the land areas of the planet surface. Their arrangement continues that of the water colors. 
Land colors—Click a swatch to display the Color Selector and change the color. Color #4 is the shoreline of the land, meeting the water; Color #5 comes next, working toward the center of the land mass. Color # 8 is at the center of the land mass. 
Blend Water/Land—When on, the boundary between water and land is blended, giving a hazy appearance. When off, the boundary between water and land is sharp. 

Viewport Improvements

One thing that takes long time while working is related to procedural maps and viewports.

If you have an empty scene, and one object, its not so hard to create a shader using procedural maps for it. Well it could still take time, What I what to say here is, It doesn’t take time or effort to apply a noise map in diffuse Chanel, render it all, look and continue adjusting noise size and other parameters. Each time rendering result to see the effect of your adjustments.

Now its a very different story when, A. you have very complicated map. Noise, or other procedural map represent only some very small and hardly noticeable part of general diffuse map.

Or B. your scene is full of objects, it has caustics and indirect illumination on, some volume fog and whatever else. In both cases it becomes very time consuming to isolate your procedural map to generate test render. That’s why one would click ”show standard map in viewport”

show standard map in viewport button

in material editor. And it works ! :) Quide good for texture maps (bitmaps). And we do not need perfect quality here, its just a viewport, just a guideline. But look what happens with procedural maps:

viewport

Well, it shows idea of noise. But size is all wrong. Which is the worst, I think. It has other problems, some cutting lines are visible.. but noise is noise, not such a big deal…  but if we are using planet (which no longer exist in max 2010) or say Perlin Marble…  –

Here is one example, say I have Utah teapot. And I what to add marble pastern, so its veins would go horizontally.. or, even more complicated, one vein should go around the opening of pot, where one adds lid..

perlin procedural maps in viewports
perlin procedural maps in viewports

here, u see picture (1) from viewport followed by rendered final.

And 2, what I had to change to have correct alignment of marble veins.. how could I do that without rendering? Here its simple, one object, only one texture… but.. If I have a situation described in the beginning of post?

Descriptions from max help file:

3D Maps

    3D maps are patterns generated procedurally in three dimensions. For example, Marble has a grain that goes through the assigned geometry. If you cut away part of an object with marble assigned as its texture, the grain in the cutaway portion matches the grain on the object’s exterior.

Turn on Show Map In Viewport.

    The map appears on objects assigned the material in all shaded viewports. Now when you adjust the map, the viewports update to display the adjustments.

    Turning on Show Map In Viewport for one map automatically turns this button off for all other maps the material has.

    Viewports can display 2D maps such as Checker and Bitmap.

    Viewports can also display most kinds of 3D maps. The exceptions are Particle Age and Particle MBlur. Also, the appearance of the Falloff map in viewports give only a vague indication of how it will appear when rendered.

    Show Map In Viewport is unavailable if the active map type cannot display in viewports.

    Displaying mapped materials in a viewport can slow performance. If you don’t need to view the texture, turn off its viewport display.

Material/map browser – Non user friendliness..

So lets imagine we want to create a new material. We go to material editor, we select a type of material, and hurray, we have it. No we want to add noise, or non existing planet :) map to our diffuse canal. And we click button “none”. Nice we are in material/map browser.

material Browser
material Browser

So far so good. Now lets count how many clicks we need to apply say, speckle map. And here we go, its not in browser, or, unless your screen size is extremely huge, you need to scroll down. That’s normal. But faster you scroll, harder to see if you reached wanted map. (some people have no problem with this) Slower you scroll, well it takes more time. (some other get annoyed). So what do we do? Simple. Same as we do in modifier selection list.

modifier List
modifier List

So we go over menu with mouse pointer, we don’t even click as in many other programs (winch is cool innovation by max) And we hit a letter on a keyboard, and here you go, no more scrolling, you are almost at speckle map. (providing there are no other maps starting S) and there are, but still, it takes fraction of second to spot required map. Why cant we have this functionality in material/map browser?