Top.Mail.Ru
Ответы

Цветной шум перлина

Здравствуйте, я написал программу которая генерирует шум перлина, но она это делает в цветном виде. Подскажите пожалуйста, как сделать шум чёрно-белым?

Вот код:

import numpy as np
import noise
import pygame


# функция для генерации текстуры клеток
def generate_cell_texture(width, height, cell_size, seed):
texture = np.zeros((height, width))

scale = 1.0 / cell_size
octaves = 6
persistence = 0.5
lacunarity = 2.0

for y in range(height):
for x in range(width):
nx = x / width
ny = y / height

value = noise.pnoise2(seed + nx * scale, seed + ny * scale, octaves=octaves, persistence=persistence,
lacunarity=lacunarity)
value = (value + 1) / 2

texture[y, x] = value

return texture


# задаем значения переменных
world_width = 600
world_height = 600
cell_size = 10

# перегенерация шума при запуске программы
seed = np.random.randint(0, 1000)
cell_texture = generate_cell_texture(world_width, world_height, cell_size, seed)

# инициализация pygame
pygame.init()

# создание окна
screen = pygame.display.set_mode((world_width, world_height))
pygame.display.set_caption("cell texture")

# преобразование текстуры в изображение pygame
texture_surface = pygame.surfarray.make_surface((cell_texture * 255).astype(np.uint8))

# отображение текстуры на экране
screen.blit(texture_surface, (0, 0))
pygame.display.flip()

# цикл обработки событий
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT: # исправленное условие
running = False

# завершение работы pygame
pygame.quit()

По дате
По рейтингу
Аватар пользователя
Просветленный

А текстура получается нужного размера? Или в 3 раза уже?
Есть у меня подозрение, что вы создаете текстуру из 1 числа на точку, а опенгл воспринимает ее как 3 числа на точку.
Попробуйте создать текстуру в 3 раза шире и заместо одного value писать их три раза подряд