2013-04-07 2 views
0

Я видел так много примеров шума перлина, но они все там, где немного отличается.Создание изображения шума Perlin в C#

Мне интересно, как я могу использовать алгоритм шума perlin для создания изображения в C#.

Я хотел бы иметь функцию, которая каждый раз, когда я ее называю, генерирует новое изображение и помещает его в поле для изображений.

Я посмотрел псевдо-код шума perlin, но я запутался. Я хочу иметь возможность манипулировать некоторыми атрибутами с помощью ввода пользователем.

но теперь мой вопрос:

как я могу интегрировать Перлин шума в C# функция, которая возвращает данные растрового изображения (2d)?

ответ

2
 Bitmap bmp = new Bitmap(200, 200); 

     for (int x = 0; x < 200; x++) 
     { 
      for (int y = 0; y < 200; y++) 
      { 
       int calc = (int)(((SimplexNoise.Noise.Generate(x, y)+1)/2)*255); 
       bmp.SetPixel(x, y, Color.FromArgb(calc, calc, calc)); 
      } 
     } 

Я использовал https://code.google.com/p/simplexnoise/, но вы можете использовать любой генератор шума.

Надеюсь, это поможет

+0

thx за советом, но разве это не просто создание noisemap? я должен был сказать, что я хотел бы получить «карту высот», например, изображение в оттенках серого. – Ace

+0

Да, это создает noisemap с оттенками серого. это то, с чего вы начинаете. то вы должны интерполировать его, чтобы заставить его задушить. поместите уровень моря, установив каждое значение ниже уровня моря на уровень моря. и так далее. Поскольку мне уже очень скучно, я бы написал класс, способный сделать это за вас, если вам интересно – ChronosMOT

+0

да, конечно, это мне очень помогло! Я никогда не работал с созданием карт шума, и мне бы хотелось поэкспериментировать с этой техникой. – Ace