@Sratimon

World Editor war3 на с++ и openGl?

Есть редактор карт для war3 World Editor там при редактировании карты изменяется координата Z у трех угольников и тем самым делаются возвышенности или углубления (там есть еще много функций но это мне не нужно ).
И так вот сижу я и думаю как это сделано =)
просто нет идей
Подскажите плиз . Как понимаю там вся карта сделана из трех угольников и при изменении ландшафта у них меняется одно координата Z .
Да не спорю можно сделать быдло кодингом легко . Создать кучу переменных и поставить их на Z координату трех угольников . Но давайте представим что у меня 500 трех угольников у каждого по 3 точки то есть 500*3=1500 переменных , ну это бред !
Можно сделать функцию от рисовки трех угольников которая принимает x, y, z, z1, z2 засунуть ее в for который повторяет ее 4 раза и рисует квадрат в свою очередь его засунуть в for который повторит это все n количество раз и нарисует карту . Но вот вопрос как поменять мне z у нужного трех угольника ? а вернее у четырех трех угольников !
Короче идеи переложения !

Вот видио World Editor war3 если кто то не вкурсе
https://www.youtube.com/watch?v=56u8KbqiJxw&featur...
  • Вопрос задан
  • 263 просмотра
Решения вопроса 1
Nipheris
@Nipheris Куратор тега C++
Но давайте представим что у меня 500 трех угольников у каждого по 3 точки то есть 500*3=1500 переменных , ну это бред !


Действительно, бредовее ничего не видел. Вы слышали про struct-ы, классы, массивы? Что мешает сделать так:

struct point {
   float x, y, z;
};

struct triangle {
  point points[3];
};

triangle triangles[500]; // вот ваши 500 треугольников, рисуйте их как хотите
triangles[234].points[3].z = 155; // вот я меняю координату у 234-го треугольника
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@MiiNiPaa
WC3 хранит ландшафт в файле как непрерывный массив точек (построчно). Каждая точка занимает 7 байт.
Первые 2 байта это высота ландшафта в данной точке. Дальше 2 байта высоты воды + служебный флаг, 4 бита флагов, 4 бита — тип ландшафта (поэтому больше 16 текстур в карту не запихаешь, как ни пытайся) 1 байт украшений ландшафта, 4 бита тип обрыва и 4 бита уровень обрыва.

Все эти «треугольники» это фикция — они рисуются игрой в момент рендеринга для игрока на лету используя информацию о ландшафте и не имеют никакого влияния на симуляцию самой игры.
Ответ написан
Я немного не понял вашу идею с 3 треугольниками, можно подробней?

Моя идея следующая:
Берем карту высот(можно просто матрицу для начала, сути не меняет). Потом для каждого пикселя(ячейки) вычесляем положение на плоскости ОХУ и взависимоти от высоты в данном пикселе ставим n кубиков друг над другом.

Держать в памяти нужно карту высот и модель кубика, которую мы будем рисовать в нужных нам местах.

Но все зависит от того насколько детальной должна быть карта. Рекомендую почитать в про рендеринг рельефа.

P.S. Потом можно будет оптимизировать чтобы не рисовались невидимые кубы, но это совсем другая история..
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы