Как сделать карту высот
Перейти к содержимому

Как сделать карту высот

  • автор:

Создайте 3D-карту высот

Вот полезный инструмент для преобразования изображений карт высот в полноценные 3D-модели карт высот (или высот). Инструмент поддерживает цветные изображения и изображения в градациях серого, и вы можете настроить свойства цвета, чтобы точно настроить, как ваше изображение интерпретируется инструментом. Выберите один из множества форматов 3D-моделей, чтобы сохранить карту высот, например Blender, PLY, STL и многие другие.

Инструмент использует цвета вершин или граней для представления цветовой информации, а не текстур. Преимущество этого заключается в обеспечении большей совместимости с 3D-форматами, которые не поддерживают текстуры. Если выбранный формат 3D-модели не поддерживает цветные вершины или грани, результирующая модель не будет содержать никакой информации о цвете.

Создание карты по реальной местности

Создаём карту, основанной на реальной местности: упрощаем задачу расстановки объектов + обзор генератора ландшафта DispGen Вы начали создавать карту по реальной местности? В таком случае вы наверняка столкнулись с проблемой правильной расстановки объектов на карте. В этом случае поможет временно наложенная текстура на «пол» карты, на которой будет показано правильное расположение зданий и прочих объектов

Идём в карты Google (или Яндекс, кому что нравится), ищем нужную нам местность, приближаем и делаем скрин:

Дальнейшие действия сложности не представляют: нужно обработать наш скрин, удалив ненужные части карты, затем превратить в текстуру. Создание текстуры сложности не представляет, если забыли — читайте про это здесь. Никакие параметры настраивать тут не надо, простая текстура, которую в хаммере нужно растянуть согласно необходимым размерам. Готово, можно начать строительство:

На этом туториал не заканчивается, теперь рассмотрим программу для создания ландшафта DispGen. От редактора ландшафта TerrainGenerator, который описывается тут, DispGen отличается тем, что в нём нет возможности вручную создавать ландшафт, он генерируется сам случайно или с помощью карты высот. Посмотрим на интерфейс программы:

Теперь о том, как создать карту высот. Опять же, в картах Google ищем нужную местность и делаем скрин (при этом нам нужна физическая карта, где отображается рельеф!)

В любом графическом редакторе нам нужно сделать картинку чёрно-белой и сохранить в формат BMP, что не представляет сложности:

Указываем путь к этой картинке, генерируем ландшафт и загружаем в хаммер:

Итак, урок завершён. Удачи в создании реал-мапы и до новых встреч!

Автор: Лорд Беккет Понравилось: 6 Не понравилось: 3

Комментарии пользователей сайта:

Как нарисовать карту высот?

Как можно нарисовать такие карты высот из обычных фотографий? Обычно их получают из 3D моделей, а здесь наоборот, такие карты нужны для быстрого вытягивания модели из фотографии.

ada9a43e27ed0cae963c290b0feb09cf.jpg

b1db77bd6b174c1ebb9c2e3177a3cfc7.jpg

На сайте c 02.08.2010
Сообщений: 77
Ukraine, Alchevsk

Попробуйте этот генератор, не раз уже меня он выручал

Репутация: 0
На сайте c 02.09.2014
Сообщений: 6
Цитата HypnoticDen:

Попробуйте этот генератор, не раз уже меня он выручал

Спасибо за ссылку, ставлю Вам +1, генератор очень полезный.

Но, к сожалению, такие карты высот как на скринах с его помощью не получить. Поэтому вопрос ещё актуален, если кто может помочь советом, буду очень благодарен!

На сайте c 31.12.2007
Сообщений: 449
Кемерово
Цитата rad233:

Как можно нарисовать такие карты высот из обычных фотографий? Обычно их получают из 3D моделей, а здесь наоборот, такие карты нужны для быстрого вытягивания модели из фотографии.

ada9a43e27ed0cae963c290b0feb09cf.jpg

b1db77bd6b174c1ebb9c2e3177a3cfc7.jpg

Только вручную. Планшет в руки и в бой!

Читают эту тему:

Последнее на форуме

  • Что слушаем?
  • Кто что делает? делитесь, показывайте
  • Ошибки в работе сайта
  • Выбор монитора
  • Позитивное
  • Что посмотреть?
  • 3ds max 2024
  • Награждения
  • Тестируем процы MAX + CORONA
  • установка vmpp на 2 разные версии 3ds max

Проекты

  • Ведущий архитектор в ооо тпо «Manifestor»
  • Хоккейная академия в Подмосковье
  • Создание вектора + рельеф, дверь храма
  • Работа со скелетом и анимацией в блендерк
  • модель геля для бровей с щеткой

Вакансии

  • Cпециалист в Unreal Engine
  • Визуализатор
  • 3д визуализатор интерьера в команду
  • Дизайнер визуализатор
  • Ведущий 3D-визуализатор (архитектура, экстерьеры)

Резюме

  • 3D визуализатор интерьеров
  • Архитектор | 3D Визуализация интерьеров
  • Визуализатор
  • 3D визуализация интерьера
  • 3D визуализация интерьеров | 8 лет опыта

Генерация карты высот

В качестве языка программирования здесь используется C++, но перенести этот код на другой язык программирования будет не так уж сложно.
Код написанный ниже далёк от идеала, но новичкам он может пригодится.
Не так давно у меня была проблема с генерацией карты высот для ландшафта.

Я решил попробовать задать каждой точке случайное значение.

Вот пример кода для двухмерного массива данных.

//Задаётся зерно для генерации случайных чисел srand(GetTickCount()); for(int i=0;i > 

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

Код с использованием функции Land_MakeHill(код которой находится ниже):

srand(GetTickCount()); for(int i=0;i srand(GetTickCount()); for(int i=0;i 

Обратите внимание — отличие создания холма от ямы всего лишь высота. У ямы она меньше нуля, у холма больше.
Код функции Land_MakeHill:

/*data - указатель на массив, px - координаты по x, py - координаты по y, size - размер карты, height - высота, Rad - радиус */ void Land_MakeHill(float** data,int px,int pz, int size,float height,int Rad ) < for(int i=0;i> > 

Такому ландшафту очень не хватает плавности, поэтому понадобилось сделать сглаживание.

Код функции Land_blur:

void Land_Blur(float** data,int size) < //Временный массив вершин float** oldData = new float*[size]; for (int i = 0; i < size; i++)< oldData[i] = new float[size]; >//Переносим значения из массива вершин во временный массив, чтобы для сглаживания не использовались уже сглаженные точки for(int i=0;i > //Идём начиная со второй точки до предпоследней, чтобы у каждой точки было 8 точек вокруг. for(int i=1;i > > 

Это наипростейшее сглаживание.
Берётся точка, берутся точки вокруг неё. Их значения складываются и делятся на их количество.
Это значение и есть высота выбранной точки.
Теперь код генерации карты высот имеет следующий вид:

 //Задаём случайные значения для всех точек for(int i=0;i > srand(GetTickCount()); //Создаём холмы for(int i=0;i srand(GetTickCount()); //Создаём ямы for(int i=0;i //Делаем сглаживание 3 раза подряд for(int i=0;i<3;i++) Land_Blur(World::data,World::size); 

После этого я добавил ещё немного маленьких холмов и ещё раз сгладил карту.
Вот что получилось:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *