Задать вопрос
@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...
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 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. Потом можно будет оптимизировать чтобы не рисовались невидимые кубы, но это совсем другая история..
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы