Skip to main content

A numpy-based noise generator

Project description

Table of Contents

  1. Vectorized value & gradient noise with NumPy
    1. Install with PIP
    2. Install locally
    3. Examples

Vectorized value & gradient noise with NumPy

Rumore is a lightweight Python library for procedural noise. It provides value noise and gradient noise in 1D/2D/3D plus octave summation of these (fractal Brownian motion, fBm).

The library does not implement Ken Perlin’s original algorithm directly, but its gradient noise produces visually similar results.

Install with PIP

pip install rumore

Install locally

Clone the repo, navigate to the directory and from there

pip install -e .

Examples

Import necessary stuff

import matplotlib.pyplot as plt
import numpy as np
import rumore

rumore.set_defaults()

Generate some 1d gradient noise with different number of octaves

x = np.linspace(-10, 10, 200)
plt.figure(figsize=(5,4))
for i in range(1, 8):
    plt.plot(x, rumore.grad_noise(x, octaves=i))
plt.show()

img

Perturb points along a circle with 2d noise

t = np.linspace(0, np.pi*2, 200)
x = np.cos(t)
y = np.sin(t)
r = rumore.grad_noise(x, y)*0.5+0.5
plt.figure(figsize=(4,4))
plt.plot(x*r, y*r)
plt.show()

img

Generate a grid of 2d noise value (a grayscale image)

x = np.linspace(0, 5, 300)
y = np.linspace(0, 3, 100)
img = rumore.noise_grid(x, y)
plt.imshow(img)
plt.show()

img

Set noise properties. Here we set the octave_map property, defining a function that is applied to the noise of each octave. Note that in a notebook these states are persistent, which can give unexpected results. You can reset everything by using rumore.set_defaults().

rumore.cfg.lacunarity = 2.0
rumore.cfg.falloff = 0.5 # falloff for each octave (persistence)
rumore.cfg.set_degree(5) # Interpolation degree (3 or 5)
rumore.cfg.shift = 0 #120.321 # Shift between octaves
rumore.cfg.octave_map = lambda x: np.sin(x*np.pi*4)

x = np.linspace(0, 5, 300)
y = np.linspace(0, 3, 100)
img = rumore.noise_grid(x, y)
plt.imshow(img, cmap='gray')
plt.show()

img

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rumore-0.1.7.tar.gz (8.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rumore-0.1.7-py3-none-any.whl (8.4 kB view details)

Uploaded Python 3

File details

Details for the file rumore-0.1.7.tar.gz.

File metadata

  • Download URL: rumore-0.1.7.tar.gz
  • Upload date:
  • Size: 8.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.8

File hashes

Hashes for rumore-0.1.7.tar.gz
Algorithm Hash digest
SHA256 5a8a2ae5f22c300d95f4efe72c15310c5c419518342cd67794596bf5845ee249
MD5 0b8f7dbe31a58b1b511dbee57a75e400
BLAKE2b-256 f4ef231881b0742f59e0168e22b4b4a82abb27e4936277f34e8d8e6296bf1206

See more details on using hashes here.

File details

Details for the file rumore-0.1.7-py3-none-any.whl.

File metadata

  • Download URL: rumore-0.1.7-py3-none-any.whl
  • Upload date:
  • Size: 8.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.8

File hashes

Hashes for rumore-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 7c19570742d2dfc9b4f660c9056d4238ccb7871992b8b15806b8327e68b8f012
MD5 214b778e37ef4ca62fbffc8f7a3e4597
BLAKE2b-256 70285524474b98e5b2525d11ca2801f34c489cfd8347395b76bd5071ddfc2570

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page