• Create Account

## Perlin Noise

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

5 replies to this topic

### #1DeltaVee  Members

138
Like
Likes
Like

Posted 31 August 2001 - 06:49 AM

I have the perlin noise generator, it works and all, no problem. I am plotting the the value returned for noise3(x,y,time), what I would like to create is a ''tile'' that matches left side to right side and top to bottom? What do I need to do? Thanx in advance. D.V.

### #2grhodes_at_work  Members

1377
Like
Likes
Like

Posted 31 August 2001 - 07:06 AM

Try this:

Generate one block using noise3(x,y,time). As you suggest, the generated block may not match on the sides, top and bottom.

Say this is the original block:

=/

To make a tileable block, do the following:

1) Mirror the original block alone one side, to get a double-length block. The double-length block is then tileable left-side-to-right-side.

Example:
=/\=

2) Take the double-length block and mirror it on either the top or bottom, so you now have a double-wide, double-tall block. This block is now tileable left-to-right and top-to-bottom.

Example:
=/\=
=\/=

or

=\/=
=/\=

The examples may be a bit abstract but you can see that the result *is* tileable left-to-right and top-to-bottom, .

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.

### #3DeltaVee  Members

138
Like
Likes
Like

Posted 31 August 2001 - 07:09 AM

I tried that (mathmatically) and it looks just like it has been mirrored along the X and Y axis. I am trying to avoid this because to the eye it looks like a cheap 1970s effect.

If you take a look at the DX8 SDK there is a bunch of bitmaps called caustxx.bmp that tile left to right top to bottom AND over the sequence from beiginning to end (24 frames), I was trying to do that.

D.V.

Edited by - DeltaVee on August 31, 2001 2:11:20 PM

### #4grhodes_at_work  Members

1377
Like
Likes
Like

Posted 31 August 2001 - 09:35 AM

Does your noise generator take boundary conditions, for example can you *specify* the values along the walls---with the algorithm generating interior values given the wall constraints? To avoid the cheap mirror look, I expect you''d have to do something like this.

Graham Rhodes
Senior Scientist
Applied Research Associates, Inc.

### #5 Anonymous Poster_Anonymous Poster_*   Guests

Likes

Posted 31 August 2001 - 10:29 AM

You can do something like this to make your tiles seamless:

Here is the paint program method:

Copy the left half of your tile, and paste it in a new layer directly above the right half of your tile. Now copy the right half of the original tile, and paste it into the upper layer directly above the left half of your tile. You should now have the original tile in the lower layer and a copy of it in the upper layer, but offset so you can see the seam down the middle. Now, do an alpha blend from the middle to the edges, such that the middle is 0% and the edges are 100%. This will make the tile seamlessly tileable horizontally speaking. Do the same thing, but vertically to take care of vertical seamless tiling.

It should be easy to implement this method in your code.

### #6Dæmin  Members

128
Like
Likes
Like

Posted 02 September 2001 - 05:51 PM

I had the same problem a while ago when I was making a small texture generator program, specifically when interpolating the perlin noise functions. What I did to make every texture wrappable is to that when interpolating around the edges I used some control points from the other side. I.e. I wrapped the control points around. A way to visualise this is to make some sort of roll or cylinder or sphere out of the image.

But a thing to note when doing that is that there should be no points directly on the other side of the image (on the border) otherwise you''ll be missing a section.

i.e.
+----------+|          ||          ||          ||          |+----------+ <- Image*-*-*-*-*-*+|          |* * * * * *||          |* * * * * *|+----------+ <- Image with control points(* = control point)

Old topic!

Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.