Создайте 3D-карту высот
Вот полезный инструмент для преобразования изображений карт высот в полноценные 3D-модели карт высот (или высот). Инструмент поддерживает цветные изображения и изображения в градациях серого, и вы можете настроить свойства цвета, чтобы точно настроить, как ваше изображение интерпретируется инструментом. Выберите один из множества форматов 3D-моделей, чтобы сохранить карту высот, например Blender, PLY, STL и многие другие.
Инструмент использует цвета вершин или граней для представления цветовой информации, а не текстур. Преимущество этого заключается в обеспечении большей совместимости с 3D-форматами, которые не поддерживают текстуры. Если выбранный формат 3D-модели не поддерживает цветные вершины или грани, результирующая модель не будет содержать никакой информации о цвете.
Создание карты по реальной местности
Создаём карту, основанной на реальной местности: упрощаем задачу расстановки объектов + обзор генератора ландшафта DispGen Вы начали создавать карту по реальной местности? В таком случае вы наверняка столкнулись с проблемой правильной расстановки объектов на карте. В этом случае поможет временно наложенная текстура на «пол» карты, на которой будет показано правильное расположение зданий и прочих объектов
Идём в карты Google (или Яндекс, кому что нравится), ищем нужную нам местность, приближаем и делаем скрин:
Дальнейшие действия сложности не представляют: нужно обработать наш скрин, удалив ненужные части карты, затем превратить в текстуру. Создание текстуры сложности не представляет, если забыли — читайте про это здесь. Никакие параметры настраивать тут не надо, простая текстура, которую в хаммере нужно растянуть согласно необходимым размерам. Готово, можно начать строительство:
На этом туториал не заканчивается, теперь рассмотрим программу для создания ландшафта DispGen. От редактора ландшафта TerrainGenerator, который описывается тут, DispGen отличается тем, что в нём нет возможности вручную создавать ландшафт, он генерируется сам случайно или с помощью карты высот. Посмотрим на интерфейс программы:
Теперь о том, как создать карту высот. Опять же, в картах Google ищем нужную местность и делаем скрин (при этом нам нужна физическая карта, где отображается рельеф!)
В любом графическом редакторе нам нужно сделать картинку чёрно-белой и сохранить в формат BMP, что не представляет сложности:
Указываем путь к этой картинке, генерируем ландшафт и загружаем в хаммер:
Итак, урок завершён. Удачи в создании реал-мапы и до новых встреч!
Автор: Лорд Беккет Понравилось: 6 Не понравилось: 3
Комментарии пользователей сайта:
Как нарисовать карту высот?
Как можно нарисовать такие карты высот из обычных фотографий? Обычно их получают из 3D моделей, а здесь наоборот, такие карты нужны для быстрого вытягивания модели из фотографии.
На сайте c 02.08.2010
Сообщений: 77
Ukraine, Alchevsk
Попробуйте этот генератор, не раз уже меня он выручал
Репутация: 0
На сайте c 02.09.2014
Сообщений: 6
Цитата HypnoticDen:
Попробуйте этот генератор, не раз уже меня он выручал
Спасибо за ссылку, ставлю Вам +1, генератор очень полезный.
Но, к сожалению, такие карты высот как на скринах с его помощью не получить. Поэтому вопрос ещё актуален, если кто может помочь советом, буду очень благодарен!
На сайте c 31.12.2007
Сообщений: 449
Кемерово
Цитата rad233:
Как можно нарисовать такие карты высот из обычных фотографий? Обычно их получают из 3D моделей, а здесь наоборот, такие карты нужны для быстрого вытягивания модели из фотографии.
Только вручную. Планшет в руки и в бой!
Читают эту тему:
Последнее на форуме
- Что слушаем?
- Кто что делает? делитесь, показывайте
- Ошибки в работе сайта
- Выбор монитора
- Позитивное
- Что посмотреть?
- 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);
После этого я добавил ещё немного маленьких холмов и ещё раз сгладил карту.
Вот что получилось: