Seaward.ru

Здравствуйте, гость ( Вход | Регистрация )

> Математическая генерация дна моря (глубины), Задача на мат.логику и/или программиование (не Стром-2.х)
ALexusB
сообщение Nov 13 2008, 14:32
Сообщение #1


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Народ, нужна помощь в одной интересной задаче для нужд игры про "кораблики" не на стром-2.х

Уперся в генерацию (роботом) дна (мелей)

Дано:
Есть матрица, например, 64х64 или 100х100, не важно, хоть 100х60 клеток.
Значение клеток - это глубина в метрах.
Для простоты считаем до 7 метров, далее для корабля не важно - "нет дна".
То есть 1 2 3 4 5 6 7 видов значений.

переходы глубин плавные, то есть 1-2 2-3 и тп, 1-7 или 1-3 быть не может.

Рандомно задаются:
- место мели в матрице
- размер и форма мели
- ширина полоски перехода на каждую глубину (то есть ширина 1-2, 2-3... можно одну на всех - это частный случай)
- число мелей (они могут быть в нескольких местах или накладываться, тогда переходы будут 1-2-3-4-3-2-1 или 1-2-1, зависимо от расстояния)

Требуется
Алгоритм генерации мелей амебообразной формы (из значений 1) с плавным переходом в 7

Решение

???

Какие есть идеи?

Понятно, что вариант наколбасить все ручками рабочий - редактор такой сделать не вопрос, он у мя уже почти готов.
Но хочется, чтоб само делало, каждый раз разное
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
3 страниц V < 1 2 3  
Reply to this topicStart new topic
Ответов(40 - 55)
TAHAT
сообщение Dec 21 2008, 22:41
Сообщение #41


Подвергающий ласкам
*******

Ветеран ФорумаЗаслуженный Корсар
Группа: модераторы
Сообщений: 4,548
Регистрация: 22-March 05
Из: Бердск, НСО
Пользователь №: 594



Человек на твоей задаче магистерскую работу защитил... и статью написал: http://3daccelerator.com.ua/articles/3dlandshaft.html
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Dec 22 2008, 16:22
Сообщение #42


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Спасибо за статью!!!
накидаю несколько вариантов - покажу результаты по алгоритмам

переходы тоже будут с допусками в стыках, но пойдет.
Там можно еще нормализацию добавить - то есть не все поле заполнять рандомно - а избранные места.
Предварительно заполнив глубиной по мах.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Dec 22 2008, 22:44
Сообщение #43


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Получилось
http://dev.seaward.ru/File/MapEdit_1.swf

рельеф есть - факт. Баланса для карты нет - тоже факт. Фарватера нет или нужно глубин вводить больше.

Тут не совсем приведенный алгоритм, скорее тасовка нормализаций и сдвигов высот.

Еще повожусь и подберу нужное
Можно настройкой играться - совсем мелко или глубоко.

В целом, я удовлетворен - работает шустро, визуально приемлимо, осталось только протности задавать, чтоб густо-пусто было. Типа пирамидок рендомной формы.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
N.tony
сообщение Jun 6 2009, 13:41
Сообщение #44


пират
*******

Эрудит-ВсезнайкаЗаслуженный КорсарЖелезный Профессор

Группа: форумчанин
Сообщений: 1,060
Регистрация: 9-July 08
Пользователь №: 17,197



Если я не сильно поздно, я бы тоже предложил smile.gif

Если вам нужна модель дна, не пристыкованного к суше (т.е. без начально заданных краев с некоторых сторон), то можно использовать простейший способ а-ля "карта высот":
В фотошопе есть специально обученный фильтр "облака". Создав новый файл нужного размера, просто применить черно-белый вариант облаков, а затем проскейлить цвет каждой точки (белый -> 1, черный -> 7). В результате получится, в общем-то, то что надо:


Прикрепленные изображения
Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Tymofei
сообщение Jun 6 2009, 14:02
Сообщение #45


Приватир
*******

Заслуженный КорсарЗаслуженный ХудожникЗнаток Игр Сиварда
Создатель Модов к ГПК
Группа: форумчанин
Сообщений: 3,759
Регистрация: 20-November 07
Из: Москва
Пользователь №: 12,641



Цитата(N.tony @ Jun 6 2009, 14:41) *
Если я не сильно поздно, я бы тоже предложил smile.gif
Мулька в том, чтобы визуально отображались математические значения.
Если возвращать значения глубин по распознаванию цветов получится не айс - метод будет медленным, ИМХО.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
N.tony
сообщение Jun 6 2009, 14:11
Сообщение #46


пират
*******

Эрудит-ВсезнайкаЗаслуженный КорсарЖелезный Профессор

Группа: форумчанин
Сообщений: 1,060
Регистрация: 9-July 08
Пользователь №: 17,197



Цитата(Tymofei @ Jun 6 2009, 13:02) *

Мулька в том, чтобы визуально отображались математические значения.
Если возвращать значения глубин по распознаванию цветов получится не айс - метод будет медленным, ИМХО.

Если сохранять изображение как серый битмап, то в итоге там и будет матрица со значением 0-255 для каждой точки. Распознавать ничего, собственно, не надо:
Код
7-H=(X-S)/Y

Где H - итоговое значение глубины, X - значение, записанное в битмапе, S - шифт для сдвига всего изображения в более "глубокую" область, а Y - собственно, коэффициент. Он считается как-то типа (255-S)/7, ну а потом просто надо округлить правую часть и отрицательные значения делать нулем.

Как-то так.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Jun 6 2009, 21:36
Сообщение #47


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Сохранать нагенеренное == рисовать руками (с использованием спец средств)
К этому и пришел - генерировать мели, как уровни для игры бесполезно на данном этапе.
Мне сча, как показала разработка, мели вообще не нужны - я их просто не буду делать, это задел на потом, если оно (потом) будет.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
N.tony
сообщение Jun 6 2009, 23:08
Сообщение #48


пират
*******

Эрудит-ВсезнайкаЗаслуженный КорсарЖелезный Профессор

Группа: форумчанин
Сообщений: 1,060
Регистрация: 9-July 08
Пользователь №: 17,197



Цитата(ALexusB @ Jun 6 2009, 20:36) *

Сохранать нагенеренное == рисовать руками (с использованием спец средств)
К этому и пришел - генерировать мели, как уровни для игры бесполезно на данном этапе.
Мне сча, как показала разработка, мели вообще не нужны - я их просто не буду делать, это задел на потом, если оно (потом) будет.

Ну, это же только первый набросок, так сказать smile.gif Вторым шагом идет изучение реализации фильтра "облака" в фотошопе и попытка создания упрощенного алгоритма для ваших нужд.

Я вот так сильно заинтересовался этим вопросом, что даже почитал литературы:
http://oddlabs.com/jo/terrain/Realtime%20P...0Generation.pdf

В целом, покопавшись немного, заалгоритмил метод midpoint displacement, с помощью которого получается примерно такая картина.

Upd Еще добавлю анимашку про то как оно получается smile.gif У меня параметры смещения для новых точек сильно зависят от итерации, т.е. основной рельеф появляется уже в самом начале, а дальше добавляются только штрихи. Можно изменить веса так, чтобы мели генерировались итерации на третьей-четвертой, тогда может получиться более хаотически.

Вот ведь мне делать нечего по выходным...


Прикрепленные изображения
Прикрепленное изображение Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
N.tony
сообщение Jun 9 2009, 00:40
Сообщение #49


пират
*******

Эрудит-ВсезнайкаЗаслуженный КорсарЖелезный Профессор

Группа: форумчанин
Сообщений: 1,060
Регистрация: 9-July 08
Пользователь №: 17,197



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

На момент, видимо, сделать что-то существенно лучше с midpoint displacement не получится - и так на картинке видно, что из-за ненатурального изменения параметров появляются небольшие артефакты в виде горизонтальных и вертикальных "дорожек".

Дальше только если подключать, например, диаграммы Вороного - это, в целом, как раз для изначального засеивания поля мелями, а затем уже использования смещений для "шума". Боюсь, пока заалгоритмить эту штуку я не смогу - надобно читать умные книжки, а это не так увлекательно smile.gif

З.Ы. http://dev.seaward.ru/File/MapEdit_1.swf отчего-то не работает, поэтому я не в курсе какой у вас был предыдущий результат. Собственно, хочется спросить - то, что у меня получается, оно положительные эмоции вызывает?


Прикрепленные изображения
Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Jul 4 2009, 19:12
Сообщение #50


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Результат впечатляет, особенно анимированное масштабирование.

Другое дело, что начав делать не конкретные заготовки и набирать возможности под игру, а спланировав конкретные модули, БД и сетевое общение, я понял, что мели - это делекое будущее.
Они ж на ИИ тоже влияют, а у меня пока даже тупого нет.

Реальный генератор ландшафта красив, я выше по ссылкам делал как пример - но это не играбельно sad.gif
Приведенное в #49 тоже не играбельно в силу того, что на такой карте низя играть - она не в балансе.

Нужно больше воды и меньше мелей, чтоб карта была стратегической в плане боя большой вс. мелкий корабль

Пока мне видится генератор карт из нарисованных руками мелей (шаблонов)
Сам шаблон может генерится по формулам, а потом руками его "принять, не принять".
Мелей в сумме должна быть не более 20% карты и должны быть явные фарватеры для кораблей
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Serginio
сообщение Jul 4 2009, 20:08
Сообщение #51


инопланетянец
*******

Заслуженный КорсарСоздатель Модов к ГПК
Группа: форумчанин
Сообщений: 2,018
Регистрация: 7-August 07
Из: Днепропетровск
Пользователь №: 11,632



Цитата(ALexusB @ Jul 4 2009, 19:12) *
Мелей в сумме должна быть не более 20% карты и должны быть явные фарватеры для кораблей

Если в генератор засунуть не 7 высот, а скажем 10-12, и утопить ландшафт до самой верхней отметки, то дорожки-фарватеры появятся сами собой. Там, где преобладать будут глубокие значения пикселов wink.gif

Попробуй мысленно притопить карту из #49 и мелкому кораблику будет раздолье, а крупный тоже сможет вывернуться, но уже с трудом...
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Jul 4 2009, 21:31
Сообщение #52


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Тоже делал, делал по 20-30 высот и обрезал по 7, типа как горы задить водой - будут острова-мели

Токо получается криво - квадратики большие, высот мало, а генерится оно "естественно", то есть просто пятнами перехода

Пирамидка в виде основания облочка не получается этим генератором. Ее проще самому нарисовать (шгаблоны) разных форм.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Serginio
сообщение Jul 4 2009, 21:47
Сообщение #53


инопланетянец
*******

Заслуженный КорсарСоздатель Модов к ГПК
Группа: форумчанин
Сообщений: 2,018
Регистрация: 7-August 07
Из: Днепропетровск
Пользователь №: 11,632



Цитата(ALexusB @ Jul 4 2009, 21:31) *
Тоже делал, делал по 20-30 высот и обрезал по 7, типа как горы задить водой - будут острова-мели

Токо получается криво - квадратики большие, высот мало, а генерится оно "естественно", то есть просто пятнами перехода

Пирамидка в виде основания облочка не получается этим генератором. Ее проще самому нарисовать (шгаблоны) разных форм.

Хм. То, что высот мало - решаемо. Нужно не только низ обрезать, а и верх. Тогда мель будет не в виде пика, а в виде какого-то пятна. Типа была пирамидка над водой, потом море верхушку обрушило до уровня воды (срезало).
Квадратики большие - вроде от масштаба зависит.
А форма основания не критична, более критична пологость склонов. Дальше пусть рандомно расползается.

Мне в этом плане понравилась система, которую Танат подсказал (по ссылке). Ещё зимой смотрел. Там можно изощратся по всякому.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
N.tony
сообщение Jul 4 2009, 23:00
Сообщение #54


пират
*******

Эрудит-ВсезнайкаЗаслуженный КорсарЖелезный Профессор

Группа: форумчанин
Сообщений: 1,060
Регистрация: 9-July 08
Пользователь №: 17,197



Цитата(ALexusB @ Jul 4 2009, 18:12) *

Мелей в сумме должна быть не более 20% карты и должны быть явные фарватеры для кораблей
Если под мелями тут имеется в виду любая точка с высотой меньше 7, то 20% - это как-то маловато...
Обрезать-то можно по-всякому, но получится, например, вот так:


Прикрепленные изображения
Прикрепленное изображение
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Serginio
сообщение Jul 4 2009, 23:22
Сообщение #55


инопланетянец
*******

Заслуженный КорсарСоздатель Модов к ГПК
Группа: форумчанин
Сообщений: 2,018
Регистрация: 7-August 07
Из: Днепропетровск
Пользователь №: 11,632



Цитата(N.tony @ Jul 4 2009, 23:00) *
Если под мелями тут имеется в виду любая точка с высотой меньше 7, то 20% - это как-то маловато...
Обрезать-то можно по-всякому, но получится, например, вот так:

Не-не. 20% - это самый гут. Вот, если бы на этой мигающей картинке ещё мелкие точки убрать (алгоритмом), а оставить только крупные пятна мелей, то было бы очень похоже на правду.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
ALexusB
сообщение Jan 2 2011, 23:21
Сообщение #56


Разработчик ВМЛ-КВЛ
*******

Seaward TeamЖелезный Профессор
Группа: Admin
Сообщений: 16,167
Регистрация: 2-November 04
Пользователь №: 3



Анимация воды на флаше. Линки давал когда-то, раз тему восстановили вопросом про волны, то освежим
http://xitri.com/2008/05/05/more-vody-prog...i-ne-tolko.html
http://xitri.com/2008/05/10/foam-water-main-secret.html

Я пробовал пару способов, но уперся в тормоза. Нужно мудрить слоем размером с экран, а не все поле локации делать с водой.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

3 страниц V < 1 2 3
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 28th March 2024 - 23:45

Блок рекламы
Яндекс цитирования Rambler's Top100
Rambler's Top100