2012-03-09 4 views
2

UPDATE: Официальный список вопросов:Java Перлин шума для 2D поколения местности

  1. Что значения с плавающей точкой (оба входных параметров и выходных) из 2D-реализации шума представляют? - Частично ответил, входы - это координаты. Как насчет выхода? Кроме того, могу ли я использовать свое целое как float для коордов? 1,0, 122,0 и т. Д.?
  2. Что такое хороший способ реализовать семя в генераторе 2D-шума? Должен ли я просто создать 3D-генератор шума, используя третий параметр в качестве семени? Будет ли это подразумевать, что каждое семя может генерировать уникальный 2D-шум?
  3. Идя вместе с 2d-картой, генерирование растровых изображений, похоже, происходит по тем же линиям. Как я могу сгенерировать растровое изображение с выхода? Предположительно плавает.

Мои вопросы: что представляют собой значения поплавка (как входные параметры, так и выходные данные) в разрезе и вставке perlin noise 2D-реализация? Как я могу сгенерировать растровое изображение? Если я могу получить 2d-массив некоторого типа данных, я уверен, что смогу выяснить, как его использовать для моделирования моего ландшафта.

И я бы использовал реализацию вырезания и вставки, если бы я мог убедиться, что я могу засеять значения для них. Это другая часть вопроса, это безответный, который я нашел here. - Какой хороший способ реализовать семя в генераторе шума?

Хорошо, я понимаю, что этот вопрос задан много раз, поэтому позвольте мне объяснить, что я исследовал и нашел.

Во-первых, я нашел здесь this сайт, который, казалось, был победителем, объяснив это мне. Тем не менее, я тогда придумал другой вопрос, который я нашел, но не ответил полностью here.

Затем я попытался испачкать руки и закодировать их на Java, что является моим языком выбора. Я нашел this, в котором мне пришлось попробовать хеш-функцию в качестве ответа как функцию шума, потому что я мог использовать там семя. Затем я столкнулся с проблемой не возвращать float, чтобы следить за остальными процессами в учебнике. Вернуться к доске для рисования. По пути я нашел много других сайтов с вопросами о шуме perlin.

Я нашел здесь неотвеченный вопрос, о котором я даже не думал, потому что я не получил работу, чтобы выполнить ее. Я больше не могу найти ссылку, но он сказал что-то в этом роде, даже если у вас была копия и вставленная реализация, какие входы поплавка вы вводите в функцию? Мне сказали, что мне нужно передать INTEGERS, которые являются моими x и y на карте. Я получаю выходы float из реализаций вырезания и вставки. Что ЭТО означает? Как эти 2D? Если бы я мог хранить вещи как целые числа, это имело бы смысл в моем мозгу, но в некотором роде, я вижу, что сохранение их как целых чисел не было бы правдоподобным для интерполяции и сглаживания значений непрерывной кривой.

+2

Пожалуйста, отредактируйте ваш вопрос. Поместите то, что вы ищете ближе к вершине, а затем объясните, что вы уже пробовали. –

+0

[здесь] (http://stackoverflow.com/questions/9546306/perlin-noise-2d-assistance) - эта статья, которую я нашел, задал аналогичный вопрос! Он остался без ответа. Я предоставил немного больше информации о своих попытках найти ответ, поэтому я надеюсь, что кто-то найдет время, чтобы ответить на мой вопрос. Если бы я смог это понять, я мог бы помочь этому другому парню. – user1258957

ответ

1

Как я понимаю, это просто координаты, для которых вы хотите получить значение.

Использование float здесь не имеет смысла, если вы не хотите поддерживать масштабирование без джиттера. Используя значения float, вы можете легко масштабировать ландшафт, вычисляя промежуточные значения.

+0

Я не намерен использовать любую форму масштабирования. У меня есть 2D-массив плиток, который я хочу определить, будь то океан, море, земля, холм, гора и т. Д., Основанные на высоте. Я выбираю Perlin Noise, потому что мне нужно, чтобы это была непрерывная функция. (Так что это выглядит гладко) Я мог бы ввести x, y как float (0.0, 1.0), но выход был бы плавающим? Я ожидаю, что выход будет высотой или чем-то равным высоте. Должен ли я вводить x и y как float, когда функция базового шума (One, которую использует функция PerlinNoise, но я не использую вручную) принимает ints? Эта часть сбивает с толку. – user1258957

+0

Большинство людей, которые занимаются ландшафтом, нуждаются в трехмерном ландшафте, поэтому возможность масштабирования в любую точку поверхности очень важна. Кроме того, когда вы используете шум для расчета текстуры для UV-карты, вам нужны координаты в диапазоне '[0,1]'. API может смущать вас, но не у всех есть ваш прецедент. –

1

1/значения представляют собой линейную или кубическую интерполяцию между выборочными случайными точками, образующими сетку 2d, поэтому каждая точка представляет собой вычисленный баланс между 4 заданными не рассчитанными ближайшими точками, генерируемыми случайной функцией.

2/это здорово:

function rndng (n: float): float 
{//random linear graph -1, 1 
    var e = (n *122.459)%1; 
    return (e*e*143.754)%2-1; 
} 

function rnd2d (n: float, m: float): float 
{//random 2d gooed enough for mountains -1, 1 
    var e = (n*m *31.178694)%1; 
    return (e*e*137.21321)%1; 
} 

если скорость не является проблемой, вы можете умножить 5-10 из них для супер случайной функции, в противном случае это самый быстрый на процессоре, что функция.

3/вам нужно подключить растровые изображения для чтения и записи функций библиотеки и записать пиксели, т. Е. Получить пиксель, установить пиксель. читать и записывать растровые изображения, а также создавать и сохранять растровые файлы и имена файлов.