Генерация террайнов
Столкнулся с необходимостью генерации реалистичных террайнов.Из чего то вменяемого по алгоритмике нашел :
http://habrahabr.ru/blogs/algorithm/111538/ Немного здесь: http://www.metalgear.ru/ru/content/a...eneratsii-kart И здесь: http://pcg.wikidot.com/pcg-algorithm:map-generation У кого был опыт разработки генераторов,поделитесь о подводных камнях и предпочитаемых алгоритмах.Задача-получить как можно более реалистичный террайн с лесными массивами.Размеры террайнов 12х12км. Озера,болота,небольшие ручьи,реки. |
Ответ: Генерация террайнов
Немного реализаций http://sourceforge.net/search/?q=terrain+generator
|
Ответ: Генерация террайнов
Продолжаю свой монолог.
Очень подробно рассмотрен вопрос генерации террайнов http://oddlabs.com/download/terrain_generation.pdf Рассматриваем вопросы водной эрозии http://www-evasion.imag.fr/Publications/2007/MDH07/ |
Ответ: Генерация террайнов
Имхо, корозия ликвидного поведения единицами один из самых реалистичных подходов к генерации ландшафта.
Одна часть - это сгенерировать вершинную карту. Другая часть, это корректно распределить горные породы, от земли, песка и т.п. И далее рассадить растительность, основываясь законам, с которой она распростроняется.. |
Ответ: Генерация террайнов
Мой простенький генератор карты высот на базе diamondsquare (blitzmax):
Код:
Type THMapGenerator |
Ответ: Генерация террайнов
Шум Перлина на C#. http://lotsacode.wordpress.com/2010/...in-noise-in-c/ .Пока за основу взял его,буду пробовать еще через пару фильтров пропускать,в качестве экспериментов с хайт мапами.Ну и в сторону водной коррозии не ровно дышу.
Кстати в сторону Minecraft.Я доподлинно не знаю так реализовано или нет,но при расширении ландшафта и генерации новых чанков(когда пользователь расширяет территорию)в алгоритм генерации в качестве соли я бы использовал ник игрока,расширяющего территорию.Так бы мы получили неоднозначность территории.В которой было бы все.И висячие сады и равнины и горы. |
Ответ: Генерация террайнов
Мой простенький генератор карты высот на базе diamondsquare (с++ & xors3d):
Код:
void xSeedRnd(int seed){ |
Ответ: Генерация террайнов
Я категорически настаиваю на закреплении этой темы в важном из-за ссылок в первых постах.
Код:
void Perlin(int size, int grain){ |
Ответ: Генерация террайнов
Вторая ссылка умерла безвременно... И да, тема - шикарна.
|
Ответ: Генерация террайнов
А как можно сделать отложенную генерацию карт высот? Например у нас есть сгенерированная карта высот 1000x1000. На основе этой карты сделан террайн. Игрок например идет к левому краю террайна, и рядом с нашим террайном генерируется новый (На основе карт высот, но при этом чтобы он был как бы "продолжением" первой карты. То есть если у нас на границе первого террайна есть пол - горы, чтобы при генерации эта же гора плавно спускалась уже на втором террайне
|
Ответ: Генерация террайнов
Цитата:
|
Ответ: Генерация террайнов
Цитата:
|
Ответ: Генерация террайнов
Цитата:
P. S. Карта планеты Земля — 3.50 Гб. |
Ответ: Генерация террайнов
Цитата:
Что то типа такого я в виду имею: PHP код:
|
Ответ: Генерация террайнов
Мне кажется, куча обращений к массиву не имеет смысла.
Я бы предложил просто построить какую-нибудь хитрую функцию от трёх переменных. например, при инициализации задавать параметры a и с, и пусть функция rand возвращает (a + c * (x ^ (x >> 5) ^ (y<<3-1) ^ (z >> 3 + z))) & 0xFF. Если хочется, можно запихать в массив данные с нужным распределением (например, нормальным), и один раз читать оттуда по "рандомной" позиции. |
Часовой пояс GMT +4, время: 06:32. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot