Ср, 27 Ноя 2024
Механоиды 3
Приветствую Вас Гость | RSS
Главная страница | Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Ландшафт
YandersenДата: Вс, 06 Май 2012, 18:17 | Сообщение # 1
1 Поколение
Группа: Доверенные
Сообщений: 196
Замечания: 0%
Статус: Offline
Поговорим о ландшафте. Огромная игровая зона требует особого подхода к вопросу о реализации ландшафта. Немало трудностей доставит динамическое изменение ландшафта (терраформинг).
Надеюсь, спора не будет насчёт реализации ландшафта - карта высот. Отдельные элементы (пики, гребни гор, обрывы) можно драпировать моделями.
Динамический ландшафт подразумевает перерасчёт нормалей. Нормали для карты высот можно вычислять на лету, непосредственно перед отрисовыванием ландшафта, но это будет менее рационально, нежели вычислять их заранее и хранить в отдельном массиве - вычисление каждой нормали требует нормализации вектора, а это не совсем "дешёвая" операция.


[Беженец со Скаев]
 
YandersenДата: Вс, 06 Май 2012, 18:43 | Сообщение # 2
1 Поколение
Группа: Доверенные
Сообщений: 196
Замечания: 0%
Статус: Offline
Дабы привнести в топик хоть какую-то полезную информацию, опишу метод вычисления нормалей.
Взглянем на участок карты высот:

Чтобы вычислить нормаль в центральной вершине, нам понадобятся координаты 4-х соседних (T=Top, L=Left, R=Right, B=Bottom). Нормаль к центральной вершине вычисляется так (я обажаю GLSL синтаксис):

//Функция принимает в качестве аргументов координаты четырёх вершин и возвращает вектор нормали к центральной вершине
vec3 GetNormal(const vec3& Top, const vec3& Left, const vec3& Right, const vec3& Bottom)
{
vec3 rightVec = Right-Left; //Вычислим вектор, направленный вправо
vec3 topVec = Top-Bbottom; //Вычислим вектор, направленный вверх
vec3 perpendicular = cross( rightVec, topVec ); //Вычислим перпендикуляр к этим двум векторам
return normalize( perpendicular ); //Напоследок нормализуем возвращаемый вектор
}
Прикрепления: 2138644.jpg (48.5 Kb)


[Беженец со Скаев]

Сообщение отредактировал Yandersen - Вс, 06 Май 2012, 18:46
 
  • Страница 1 из 1
  • 1
Поиск:


Хостинг от uCoz