Просмотр полной версии : Планета sweeper'а
Подброшу-ка я вещества в вентилятор.
5310
о, круто!
симпатичный шарик
хотя подобное уже делал super, может было проще заюзать его наработки?
а перепады высот будут только цветом или формой тоже?
если второе, то как планируешь делать их?
какой по размеру максимальный пробовал шар?
с каких размеров становятся заметны искажения формы тайлов?
о, круто!
симпатичный шарик
хотя подобное уже делал super, может было проще заюзать его наработки?
Я, честно говоря, не спрашивал. Кроме того, там тайлы треугольные.
а перепады высот будут только цветом или формой тоже?
если второе, то как планируешь делать их?
хотелось сделать формой. Алгоритм был примерно такой: высоту для вершин усредняем по трем тайлам, которые сходятся в этой вершине.
Получается объемный пяти или шестиугольник, который разбивается на треугольники. При максимальном использовании opengl на весь объемный (5/6)-угольник можно натянуть текстуру. Пока текстур нет, высота просто хранится в тайле.
Но! Реализм же. Радиус Земли 6320Км, что на этом фоне гора в 5Км?
какой по размеру максимальный пробовал шар?
с каких размеров становятся заметны искажения формы тайлов?Пробовал Big, строит около минуты на i5/2.4GHz/8Gb/windows 7/64
Giant не дождался.
Про искажения не понял. Там 12 пятиугольников, вокруг них 6-угольники слегка искажены. Это всё. Конкретная форма тайла значения не имеет. Важно, чтобы тайлы знали о соседях.
Я, честно говоря, не спрашивал. Кроме того, там тайлы треугольные..
Не имеет смысла.
Там уровень кода никакущий.
Наде6юсь в этом варианте не так...
так же как и в том, что он будет открытым ;)
Не знаю, я даным мне доступом не пользовался.
С пользовательскими настройками там ведь ничего не поставить?
Да я и не совсем понимаю замысел?
Но! Реализм же. Радиус Земли 6320Км, что на этом фоне гора в 5Км?
Да. РеализмЪ.
Только у нас ведь не космосим, а историческая стратегия.
Хотелось бы при большем приближении, чтоб выглядело как плоскость...
superregistr
05.04.2012, 21:57
Aku_Aku, ты по старым наработкам судишь, а у меня много чего внутри переделано было, что снаружи не заметно.
Алгоритм сферы примерно такой: каждый треугольник икосаэдра делить не 4, а на 9 частей. Тогда будут шестиугольники.
superregistr
05.04.2012, 22:03
Важно, чтобы тайлы знали о соседях.
У меня каждый тайл имеет две координаты: номер слоя (отсчитывается с севера на юг) и номер в слое (отсчитывается по правилу правого винта). Потом я установил между тайлами аналитическую связь. Много бумаги исписал.
Потом я установил между тайлами аналитическую связь. Много бумаги исписал.А я решил, что у меня бумаги и так много. Да и мозги уже не те. Наверное, можно было бы... Но мне лень.
superregistr
05.04.2012, 22:29
http://www.gamedev.ru/files/images/?id=61610
superregistr
05.04.2012, 22:32
http://forums.arcanumclub.ru/uploads/post-3864-1318176064_thumb.jpg
Как по мне - не ровный "шарик".
Я, честно говоря, не спрашивал. Кроме того, там тайлы треугольные.
ну у него промежуточный вариант был вроде с шестиугольными тайлами..
хотелось сделать формой. Алгоритм был примерно такой: высоту для вершин усредняем по трем тайлам, которые сходятся в этой вершине.
Получается объемный пяти или шестиугольник, который разбивается на треугольники. При максимальном использовании opengl на весь объемный (5/6)-угольник можно натянуть текстуру. Пока текстур нет, высота просто хранится в тайле.
можно наоборот высоту в вершине хранить, а для тайла (для игровых расчетов) высчитывать среднюю из всех его вершин
Пробовал Big, строит около минуты на i5/2.4GHz/8Gb/windows 7/64
Giant не дождался.
а big и giant как количественно выражены?
сколько тайлов?
а big и giant как количественно выражены?
сколько тайлов?
(убрал отладочную печать, теперь реально дождаться)
Giant: 94 сек, тайлов: 10832
Big: 27 сек, тайлов: 5882
Ну и результат мне пока не очень нравится. Плосковато. Гондвана получается. Надо дальше думать про алгоритмы генерации высот.
Вот Аку выкладывал ссылку на проект Basic Hex Map Sphere (http://sourceforge.net/projects/hexmapsphere/?source=directory)
http://sourceforge.net/projects/hexmapsphere/screenshots/GHMScreenShot01.JPG/182/137
Интересно? или ты тоже к этому имеешь отношение?
Интересно? или ты тоже к этому имеешь отношение?Посмотрю, спасибо. Удивительно, те же самые искажения 6-угольных тайлов вокруг пятиугольных. Нет, отношения не имею. Кроме того, у меня фон белый :)
Garik710
08.01.2014, 22:07
Не поделитесь секретом, как вычислять вершины в таком шаре, или ссылочкой, где это описывается.
И ещё, как создать алгоритм поиска кратчайших путей на такой карте?
Не поделитесь секретом, как вычислять вершины в таком шаре, или ссылочкой, где это описывается.Начал с тех 12 вершин, которые будут пятиугольными тайлами. Их координаты вычисляются как координаты четырех углов трех "золотых" прямоугольников. (см икосаэдр: http://ru.wikipedia.org/wiki/%D0%98%D0%BA%D0%BE%D1%81%D0%B0%D1%8D%D0%B4%D1%80, золотые прямоугольники http://www.opengl.org.ru/books/opengl1_402.html) Дальше брал вершины по три штуки, такие, чтобы образовывали грань икосаэдра, и достраивал до нужной мне сетки. Там сложновато, много констант, которые определяют законы разбиения. Но если попробовать разбить ручками несколько раз, приходит ясность.
И ещё, как создать алгоритм поиска кратчайших путей на такой карте?После того, как для каждого тайла известны его соседи, можно использовать алгоритм "A*" (http://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0_A*). Суть такова: из пункта А в пункт Б попадаем не более чем N шагов, где N -- общее количество тайлов. Для начала распихаем во все тайлы число N как количество шагов, необходимых для достижения пункта А. Потом вспомним, что из пункта А в пункт А шагов не надо, и поместим в А число 0. Далее цикл, пока есть изменения. Для внесения изменения берем каждый тайл и смотрим его соседей. Для всех соседей вычисляем минимум шагов, записанных в тайле, пусть это M. Если в самом тайле (центральном, который сейчас меняем) число больше, чем (M+1), записываем в тайл число M+1 и фиксируем факт, что есть изменение. Напоминаю, внешний цикл идет пока есть изменения. Как только после очередного просмотра изменений нет, выходим из цикла и строим путь из пункта Б в пункт А. Для этого берем число шагов пункта Б, вычитаем 1 и ищем соседа, у которого число шагов в точности равно этому значению. Переходим в этого соседа, уменьшаем число шагов на 1 и снова ищем соседа. Сосед с числом шагов 0 и будет пунктом А.
Garik710
09.01.2014, 16:48
Над построением буду думать, спасибо, а с алгоритмом А* я знаком, просто сбивает с толку необычное расположение и различная форма тайлов.
Powered by vBulletin® Version 4.1.9 Copyright © 2024 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot