View Full Version : Autochrome and Perlin Noise

alexhill

09-10-2010, 04:37 PM

Yeah, that guy doesn't know what he's talking about (with all due respect ;))... unless lasers are somehow "digital", holography is no different than black and white photography.

As for the aquatint, that's interesting but I can't think of how that this could lead to three separate colors randomly distributed on a screen; nor do I need another process to drive me nuts! I'm very much intrigued by these types of printing methods though.

The aquatint idea would be for a cmyk 4 plate photogravure, and is actually part of the process. I am no expert on photogravure, and my attempts have failed miserably and at quite a cost ;)

holmburgers

09-10-2010, 04:46 PM

...and my attempts have failed miserably and at quite a cost ;)

As they would say in the sitcoms.... "aaawwwww"

:laugh:

alexhill

09-10-2010, 10:05 PM

Haha :)

holmburgers

09-21-2010, 01:16 PM

Ok,

My bro whipped this together. Not sure in what program... maybe Perl, maybe just PS, maybe both, IDK! It's gaussian noise with a stained glass filter applied.

Now, obviously it's not right because it consists of too many colors, but if you could limit the elements to just RGB, I think this noise pattern and effect would work well. My brother said "well it'd be interesting to see what it would do to use all the colors." HAH! What an amateur!

;)

There are many historical precedents for people who thought that a rainbow screen-plate would somehow produce better color than just RGB. Unfortunately, these folks have no understanding of color theory. As for my brother, he's family so I tolerate it.

Mustafa Umut Sarac

09-22-2010, 08:48 AM

Holmes ,

I found below code at internet. Its 2 dimensional perlin noise. POVRAY is free and render such codes but it is very slow.

Umut

function Noise1(integer x, integer y)

n = x + y * 57

n = (n<<13) ^ n;

return ( 1.0 - ( (n * (n * n * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);

end function

function SmoothNoise_1(float x, float y)

corners = ( Noise(x-1, y-1)+Noise(x+1, y-1)+Noise(x-1, y+1)+Noise(x+1, y+1) ) / 16

sides = ( Noise(x-1, y) +Noise(x+1, y) +Noise(x, y-1) +Noise(x, y+1) ) / 8

center = Noise(x, y) / 4

return corners + sides + center

end function

function InterpolatedNoise_1(float x, float y)

integer_X = int(x)

fractional_X = x - integer_X

integer_Y = int(y)

fractional_Y = y - integer_Y

v1 = SmoothedNoise1(integer_X, integer_Y)

v2 = SmoothedNoise1(integer_X + 1, integer_Y)

v3 = SmoothedNoise1(integer_X, integer_Y + 1)

v4 = SmoothedNoise1(integer_X + 1, integer_Y + 1)

i1 = Interpolate(v1 , v2 , fractional_X)

i2 = Interpolate(v3 , v4 , fractional_X)

return Interpolate(i1 , i2 , fractional_Y)

end function

function PerlinNoise_2D(float x, float y)

total = 0

p = persistence

n = Number_Of_Octaves - 1

loop i from 0 to n

frequency = 2i

amplitude = pi

total = total + InterpolatedNoisei(x * frequency, y * frequency) * amplitude

end of i loop

return total

end function

Mustafa Umut Sarac

09-22-2010, 08:51 AM

Holmsburgers ,

This code is 1 dimensional but I dont know where to use !

POVRAY or terragen , try to complile with them or ask your brother !

Umut

function Noise1(integer x)

x = (x<<13) ^ x;

return ( 1.0 - ( (x * (x * x * 15731 + 789221) + 1376312589) & 7fffffff) / 1073741824.0);

end function

function SmoothedNoise_1(float x)

return Noise(x)/2 + Noise(x-1)/4 + Noise(x+1)/4

end function

function InterpolatedNoise_1(float x)

integer_X = int(x)

fractional_X = x - integer_X

v1 = SmoothedNoise1(integer_X)

v2 = SmoothedNoise1(integer_X + 1)

return Interpolate(v1 , v2 , fractional_X)

end function

function PerlinNoise_1D(float x)

total = 0

p = persistence

n = Number_Of_Octaves - 1

loop i from 0 to n

frequency = 2i

amplitude = pi

total = total + InterpolatedNoisei(x * frequency) * amplitude

end of i loop

return total

end function

Mustafa Umut Sarac

09-22-2010, 08:56 AM

2 dimensional

Landscapes: These are a perfect application for 2D Perlin Noise. Unlike the subdivision method, you do not have to store the landscape anywhere in memory, the height of any point on the landscape can be calculated easily. What's more, the land stretches indefinitely (almost), and can be calculated to minute detail, so it's perfect of variable level of detail rendering. The properties of the landscape can be defined easily too.

Clouds: Again, cloud rendering is well suited to Perlin Noise.

Generating Textures: All sorts of textures can be generated using Perlin Noise. See the table below for some examples. The textures generated can go on for ages before repeating (if ever), which makes them much more pleasant to look at than a repeating tiled texture map.

Mustafa Umut Sarac

09-22-2010, 08:56 AM

1 dimensional

Controlling virtual beings: Living objects rarely stay still for very long (except students). Use perlin noise to constantly adjust the joint positions of a virtual human player, in a game for example, to make it look like it's more alive.

Drawing sketched lines:

Computer drawn lines are always totally straight, which can make them look unnatural and unfriendly. You can use Perlin Noise to introduce a wobblyness to a line drawing algorithm to make it appear as if it's been drawn by hand. You can also draw wobbly circles and boxes. Some research has been done on making a Sketchy User Interface.

holmburgers

09-22-2010, 11:14 AM

I emailed this to my brother, saying "do you understand this?" We'll see what he says. :D

holmburgers

09-27-2010, 12:34 PM

Here is my brother's response to me sending him the above code. I'm simply posting this as reference material... I have no idea what any of this means or how to implement it. Frankly, I'm not even sure if it relates to Perlin noise. But perhaps someone else does....

__________________________________________________ ___________________

I think that's pseudo code. I don't recognize it as any language I know. They're just functions too, it's not a full functioning program. It's actually a little ambigious at points depending on which order of operations you're using (although if we assume those are standard it's fine). Depending on how big your input numbers are these intermediate numbers could get huge.

There is a Scene Description Language for POVRAY (see the wiki article), but it doesn't look the same.

These are easy to implement. For example, the first function in perl would be this:

print x(@ARV);

sub x {

my ($x, $y) = @_;

my $i = $x + $y * 57;

$n = ($n << 13)**$n;

$n = 1 - ((($n * ( $n**2 * 0x3d73 + 0xc0ae5) + 0x5208dd0d) && 0x7fffffff) / 0x40000000);

return $n;

}

You could run it for 3 and 4 with: perl -Mbigint -e 'print x(@ARV);sub x {my ($x, $y) = @_;my $i = $x + $y * 57;$n = ($n << 13)**$n;$n = 1 - ((($n * ( $n**2 * 0x3d73 + 0xc0ae5) + 0x5208dd0d) && 0x7fffffff) / 0x40000000);return $n;}' 3 4

Mustafa Umut Sarac

09-27-2010, 02:20 PM

Holmsburgers ,

I found similarity between 2D Perlin code and your brothers code. I think he got the function from your letter and he applied to his code. If he has the written code , it wouldnt be harder to produce the screen.

Holmes , I think You are very near to your final goal.

Ask him to visit the APUG and see the autochrome book cover scan. May be he could calibrate his code.

Best ,

Umut