#qt #opengl #карты
Рисую с помощью OpenGL в Qt плоскую и 3Д Землю. На данный момент в качестве текстуры используется растровое изображение. Хочется, чтобы была возможность увеличивать карту с детализацией изображения. С чего начать? Может какие-то статьи или книги есть на подобную тему? Сама в интернете ничего не нашла.
Ответы
Ответ 1
Хранить географические карты в растре? Вы серьезно? Начать нужно с того что: Где-то достать растровую плоскую физическую карту мира Сконвертировать её в нормализованную 8 битную карту высот. (уже кто-то сделал) C помощью displacement mapping получить полигональную сетку из растровой карты высот. Спроецировать полученную сетку на сферу с помощью функции обратной, той что использовалась при развертке сферы в карту. (Картографические проекции достаточно сложны, однако по ним есть много информации) В конце в качестве diffuse map использовать оригинальную карту. Также можно еще взять случайную карту нормалей и добавить немного bump mappingа в получившийся ландшафт. В результате может-быть получится более менее сносная картинка, которую можно нормально скалировать, вращать, бомбить трехмерными ядерными ракетами, заселять виртуальными горожанами, насылать нашествие инопланетян и.т.д. и.т.п. Вот еще годная статья по поводу сравнения методов рельефного текстурирования. Также есть много софта для получения сетки рельефа напрямую из карты высот. Нарпимер всем известный Terragen. С ним генерация картинок вроде такой становится тривиальной задачей вообще не требующей значительных художественных навыков: И еще подборка статей про алгоритмическую генерацию рельефа местности: Как это делают в NVIDIA Фрактальная генерация Получение своих континетов для новичков Хороший пример генерации через WebGL размером всего в 130 строчек JS Обзорная презентация. Мало формул, много примеров и названий технологий Также имеет смысл ознакомится с различными методами генерации градиентных шумов, чтобы с помощью них получить свою случайную карту нормалей/высот и сделать ландшафт еще более реалистичным.Ответ 2
Если нужно детализировать текстуру то используй MIP mapping
Комментариев нет:
Отправить комментарий