Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 11

Тема: Шум Перлина Алгоритм Python: как реализовать?

  1. Шум Перлина Алгоритм Python: как реализовать?

    Привет, коллеги! Тут начал разбираться с темой генерации шума Перлина и возникли некоторые вопросы. Давно уже мечтаю накатать что-то интересное с использованием этого алгоритма, но пока немного туплю Хочется написать свой генератор шума на Python без использования библиотек типа numpy или scipy и до конца понять, как работает сам алгоритм. Может, кто сталкивался и подскажет, как его реализовать с нуля? И были бы крутые примеры кода! Заранее спасибо, ребзя!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Здарова! Реализовать шум Перлина не так уж сложно, когда поймешь концепцию. Начнем с базового ветора и точек сетки. Сам код на Python ниже:

    Программный код:
    import math
    import random

    def fade
    (t):
    return 
    * (* (15) + 10)

    def lerp(tab):
    return 
    * (a)

    def grad(hashxy):
    hash 15
    if else y
    if else x
    return (if ((1) == 0) else -u) + (if ((2) == 0) else -v)

    def perlin(xy):
    = [random.randint(0255) for _ in range(256)]
    p
    math.floor(x) & 255
    math.floor(y) & 255
    -= math.floor(x)
    -= math.floor(y)
    fade(x)
    fade(y)
    aaaabaaababbbaabbababbbb = [(p[A] + B) for AB in zip((p[X] + Yp[X] + 1p[1] + Yp[1] + 1), (p112))]

    return 
    lerp(vlerp(ugrad(p[aaa], xy), grad(p[baa], 1y)),
    lerp(ugrad(p[aab], x1), grad(p[bab], 11)))

    if 
    __name__ == "__main__":
    widthheight 100100
    for i in range(width):
    for 
    j in range(height):
    print(
    "{:.2f}".format(perlin(i/100j/100)), end=" ")
    print() 
    Вот такой кусочек кода должен помочь в генерировании шума. Если есть вопросы, пиши!

  4. Цитата Сообщение от Кобра
    Здарова! Реализовать шум Перлина не так уж сложно, когда поймешь концепцию. Начнем с базового ветора и точек сетки. Сам код на Python ниже:

    Программный код:
    import math
    import random

    def fade
    (t):
    return 
    * (* (15) + 10)

    def lerp(tab):
    return 
    * (a)

    def grad(hashxy):
    hash 15
    if else y
    if else x
    return (if ((1) == 0) else -u) + (if ((2) == 0) else -v)

    def perlin(xy):
    = [random.randint(0255) for _ in range(256)]
    p
    math.floor(x) & 255
    math.floor(y) & 255
    -= math.floor(x)
    -= math.floor(y)
    fade(x)
    fade(y)
    aaaabaaababbbaabbababbbb = [(p[A] + B) for AB in zip((p[X] + Yp[X] + 1p[1] + Yp[1] + 1), (p112))]

    return 
    lerp(vlerp(ugrad(p[aaa], xy), grad(p[baa], 1y)),
    lerp(ugrad(p[aab], x1), grad(p[bab], 11)))

    if 
    __name__ == "__main__":
    widthheight 100100
    for i in range(width):
    for 
    j in range(height):
    print(
    "{:.2f}".format(perlin(i/100j/100)), end=" ")
    print() 
    Вот такой кусочек кода должен помочь в генерировании шума. Если есть вопросы, пиши!
    О, бро, круто, спасибо за развернутый пример! Теперь более-менее понятно, как это всё работает.

  5. Да, шум Перлина - это вещь! У меня тоже была такая задача недавно. Суть в том, чтобы понять сначала, как работает градиентный вектор и interpolate. Вот у тебя есть точки сетки и после этого выбираешь случайный градиент для этих точек. Это придаёт уникальность каждой точке.

  6. Цитата Сообщение от Ланселот
    Да, шум Перлина - это вещь! У меня тоже была такая задача недавно. Суть в том, чтобы понять сначала, как работает градиентный вектор и interpolate. Вот у тебя есть точки сетки и после этого выбираешь случайный градиент для этих точек. Это придаёт уникальность каждой точке.
    Слушай, здорово, теперь понял про градиенты. Кажется, у меня тоже начало потихоньку вырисовываться понимание.

  7. Если не хочешь мучаться со всем, просто заюзай готовые либы. Например, noise, там все изи по докам. Но если идешь хардкорным путем, то поймешь больше

  8. Цитата Сообщение от Лаванда
    Если не хочешь мучаться со всем, просто заюзай готовые либы. Например, noise, там все изи по докам. Но если идешь хардкорным путем, то поймешь больше
    Да уж, хочется все-таки через тернии к звездам, но учту на всякий случай

  9. Обычно люди забивают на fade функцию, но это важная часть. Она сглаживает переходы между точками. Ты попробуй сначала реализовать её и посмотри, как влияет.

  10. Цитата Сообщение от Colossus
    Обычно люди забивают на fade функцию, но это важная часть. Она сглаживает переходы между точками. Ты попробуй сначала реализовать её и посмотри, как влияет.
    Еще один важный момент - респект! Понятно, что нужно сначала правильно понять, как это дело сглаживается.

Страница 1 из 2 12 ПоследняяПоследняя