ПрограммированиеСтатьи

Генерация шума (3 стр)

Автор:

Демонстрация возможностей

Шумовые функции могут быть использованы разными способами. Сложение октав уже было упомянуто выше.
Также ряд интересных эффектов может быть получен применением какого-либо преобразования к результату шумовой функции.
Широко известно, например, использование функции abs для получения текстуры мрамора, и frac (дробной части) для дерева.
Больше примеров можно найти, например, в лекции Кена Перлина "Making noise":
Изображение
Функции (справа сверху, по часовой стрелке):
sin(x + sum 1/f( |noise| ))
sum 1/f( |noise| )
sum 1/f(noise)
noise

Примеры 3-мерных текстур, задающих плотность (прозрачность бинарна, и определяется сравнением плотности с пороговым значением) или коэффициент преломления:
http://mrl.nyu.edu/~perlin/experiments/hypertexture/

+ Показать

Также много эффектов можно реализовать, используя значение шумовой функции для деформации изображения (напр. самплинг в точке, смещённой относительно исходной в соответствии со значением шумовой функции), как растрового, так и процедурного (неявного):
checkerboard | Генерация шума checkerboard_noise_translated | Генерация шума

Обзор приёмов применения шума при текстурировании можно найти, например, в книге "Texturing and Modeling: A Procedural Approach", 2002, David S. Ebert, F. Kenton Musgrave, Darwyn Peachey, Ken Perlin, Steven Worley, 3rd ed. Morgan Kaufmann Publishers, Inc.

Эксперименты в использовании шума могут помочь читателю получить опыт, усвоить существующие приёмы и создать собственные.

Примеры с shadertoy


Ниже приводятся несколько использующих шум шейдеров с https://www.shadertoy.com (по мотивам находок foxes в комментариях к статье):
https://www.shadertoy.com/view/XtXXD8 - Value Noise

https://www.shadertoy.com/view/lsf3WH - Value Noise (2D).
https://www.shadertoy.com/view/4sfGzS - Value Noise.
https://www.shadertoy.com/view/XdXGW8 - Gradient Noise (не Perlin).

https://www.shadertoy.com/view/XsX3zB - simplex 2D.
https://www.shadertoy.com/view/XtBGDG - simplex 3D.
https://www.shadertoy.com/view/4l2GzW - Worley на jittered grid.
https://www.shadertoy.com/view/ldB3zc - модификация Voronoi.
https://www.shadertoy.com/view/llsSDf - мыльные пузыри на основании клеточного шума.

Литература:


http://physbam.stanford.edu/cs448x/old/Procedural_Noise%282f%29Categories.html - категории шума.
http://graphics.cs.kuleuven.be/publications/LLCDDELPZ10STARPNF/ - State of the Art in Procedural Noise Functions, статья сравнивающая различные виды шума
http://en.wikipedia.org/wiki/Perlin_noise
http://www.noisemachine.com/talk1/index.html - слайды Кена Перлина о генерации шума.
http://mrl.nyu.edu/~perlin/noise/ - Improved Noise reference implementation (Java)
http://mrl.nyu.edu/~perlin/paper445.pdf - Improving Noise, Ken Perlin, SIGGRAPH 2002
http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter26.html - Implementing Improved Perlin Noise
http://en.wikipedia.org/wiki/Simplex_noise
http://www.csee.umbc.edu/~olano/s2002c36/ch02.pdf - симплекс-шум.
http://freespace.virgin.net/hugo.elias/models/m_perlin.htm - октавы численного шума (ошибочно названные в статье шумом Перлина).
http://graphics.pixar.com/library/WaveletNoise/paper.pdf - статья Wavelet Noise (Robert L. Cook, Tony DeRose, Pixar Animation Studios).
http://graphics.ucsd.edu/courses/cse168_s06/ucsd/cellular_noise.pdf - A cellular texture basis function, 1996, Worley, Steven, Proceedings of the 23rd annual conference on computer graphics and interactive techniques. acm.org. pp. 291–294.
http://wearcam.org/gabor1946.pdf - Theory of communication, GABOR, D., J. Int. Electrical Engineers 93, 429–457
http://www.academia.edu/653965/Texture_synthesis_for_digital_painting - Texture Synthesis for Digital Painting, John Peter Lewis, Massachusetts Institute of Technology (Computer Graphics (Proc. ACM SIGGRAPH 84), vol. 18, 245–252).
http://www.academia.edu/653961/Algorithms_for_solid_noise_synthesis - Algorithms for Solid Noise Synthesis, J. P. Lewis, Computer Graphics Laboratory New York Institute of Technology, (Computer Graphics (Proc. ACM SIGGRAPH 89), vol. 23, 263–270) .
http://graphics.cs.kuleuven.be/publications/LLDD09PNSGC/ - Procedural Noise using Sparse Gabor Convolution
http://graphics.cs.kuleuven.be/publications/GLLD12GNBE/ - Gabor Noise by Example
http://libnoise.sourceforge.net/ - библиотека, реализующая различные виды шума
https://github.com/nothings/stb - коллекция библиотек stb, включающая stb_perlin.h - public domain, single-file, header-only реализацию 3-мерного шума Перлина
http://habrahabr.ru/company/unigine/blog/167075/ - "Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 1. Oil Rush" - содержит множество примеров использования процедурной генерации и опыт интеграции её а арт-пайплайн.
http://habrahabr.ru/company/unigine/blog/184614/ - "Применение процедурных генераторов в создании контента для real-time 3D приложений: Часть 2. Valley Benchmark"
http://www.decarpentier.nl/scape-procedural-basics - использование шума в генерации ландшафта (часть 2 из серии).
http://www.decarpentier.nl/scape-procedural-extensions - использование шума в генерации ландшафта (часть 3 из серии).
Страницы: 1 2 3

#noise, #Perlin, #генерация, #математика, #текстурирование

20 мая 2015 (Обновление: 31 дек 2018)

Комментарии [55]