На днях тут напоролся на одну статью про парсер местности (далее будет понятнее) на одном форуме. Чувак тупо рассказал как криво парсить файлы .h32 в клиенте, вывел это всё в OpenGL и всё на этом. Никакого профита, на деле не было показано.
Из-за долгих споров с местными "топ" разработчиками, эго которых я зацепил своей постоянной критикой
, автор самоудалился, а модеры почистили тему и не оставили следов интересных событий. Какие же все обиженки.

Переходим к теме данной темы.
"Земля/terrain" по которой бегают персонажи, мобы и так далее, это генерируемый mesh из карты высот heightMap. Почитать об этом можно в гугле, тут я не буду расписывать. На скрине terrain сгенерированный из карты высот в клиенте.

Генерируется это из файла который находится в Levels\'location'\terrain\land_map.h32
Файл читать можно любым языком программирования (java, python, c#).
Ничего сложного в этом файле нет, если считывать его побитово, то получаем следующий формат
2 байта - float значение, 1 байт - цвет (но это не точно)
Python
где:
byte_data - это файл land_map.h32
z - координата высоты точки (vertex)
vertex_color - цвет точки (но это не точно)
Java
где:
byteData - это файл land_map.h32
heightmap - заполнение массивы высот (далее будет подробнее)
vColor - цвет точки
С# код можно посмотреть у zzsort по ссылке
Далее самое интересное и вкусно, как применить то что мы считываем.
В JMonkeyEngine есть отличная статья
Добавляем h32 файл и получаем примерно такой код:
По итогу мы получаем готовый mesh вот такого вида:

Это упрощенный пример, но на основе его вы можете построить вполне рабочий вариант.
Переходим к варианту с blender. В принципе тут код сложнее, но реализация проще, её можно описать одним скрином

Будут вопросы, пишите!)
Из-за долгих споров с местными "топ" разработчиками, эго которых я зацепил своей постоянной критикой


Переходим к теме данной темы.
"Земля/terrain" по которой бегают персонажи, мобы и так далее, это генерируемый mesh из карты высот heightMap. Почитать об этом можно в гугле, тут я не буду расписывать. На скрине terrain сгенерированный из карты высот в клиенте.

Генерируется это из файла который находится в Levels\'location'\terrain\land_map.h32
Файл читать можно любым языком программирования (java, python, c#).
Ничего сложного в этом файле нет, если считывать его побитово, то получаем следующий формат
2 байта - float значение, 1 байт - цвет (но это не точно)
Python
Python:
Please,
Вход
or
Регистрация to view codes content!
byte_data - это файл land_map.h32
z - координата высоты точки (vertex)
vertex_color - цвет точки (но это не точно)
Java
Java:
Please,
Вход
or
Регистрация to view codes content!
byteData - это файл land_map.h32
heightmap - заполнение массивы высот (далее будет подробнее)
vColor - цвет точки
С# код можно посмотреть у zzsort по ссылке
Please,
Вход
or
Регистрация
to view URLs content!
Далее самое интересное и вкусно, как применить то что мы считываем.
В JMonkeyEngine есть отличная статья
Please,
Вход
or
Регистрация
to view URLs content!
а так же очень удобный функционал построения местности по карте высотДобавляем h32 файл и получаем примерно такой код:
Java:
Please,
Вход
or
Регистрация to view codes content!
По итогу мы получаем готовый mesh вот такого вида:

Это упрощенный пример, но на основе его вы можете построить вполне рабочий вариант.
Переходим к варианту с blender. В принципе тут код сложнее, но реализация проще, её можно описать одним скрином

Будут вопросы, пишите!)