Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Формула 8.1. Аксонометрическая проекция спрайта.

Листинг 7.1. Дизассемблирование оператора IF. | Алгоритм 7.1. Тест видимости объекта. | Листинг 7.3. Новая функция Draw_Sprite() с отсечением. | Алгоритм 7.2. Тест столкновения спрайтов. | Листинг 7.4. Программа CIRCLES.С. | Листинг 7.7. Демонстрация «animotion» (STICK.С). | Листинг 7.8. Пример прокрутки (DEFEND.C). | Листинг 7.9. Эффекты экрана (SCREENFX.C). | Листинг 7.10. Программа, масштабирующая текстуры стен (SCALE.C). | Листинг 7.11. Трехмерный астероид (AFIELD.С). |


Читайте также:
  1. V2: Формула Эйлера для критической силы сжатого стержня и пределы ее применимости
  2. А. Проекция.
  3. АБСОЛЮТНАЯ И ОТНОСИТЕЛЬНАЯ АДРЕСАЦИЯ ПРИ РАБОТЕ С ФОРМУЛАМИ
  4. Алгоритм 8.1. Масштабирование спрайта.
  5. Б. Понятие о классической статистике. Скорости молекул. Распределение молекул по скоростям и энергиям. Барометрическая формула
  6. Бланк-формула частной концепции
  7. В.13. Задача Коши для уравнения колебания струны. Формула Даламбера.

Математический аппарат аксонометрии прост: нам требуется знать только значение координаты Z и расстояние до объекта. Имея эти данные, мы получаем новое положение проекции спрайта следующим образом:

х_Projected = view_distance * х_sprite / z_sprite

у_Projected = view_distance * у_sprite / z_sprite

Такой метод проекции работает четко: спрайты перемещаются вдоль линий перспективы в окне просмотра. Однако есть одна тонкость, которую необходимо обсудить. Речь идет о том, что я назвал бы пространственным искажением. Оно возникает, когда вы смешиваете одну систему виртуальных объектов с другой. Представим, например, что вы помещаете трехмерный спрайт в пространство, созданное трассировкой лучей. По отношению к этому пространству спрайт будет передвигаться и масштабироваться некорректно из-за того, что спрайт и стены создавались на основе двух различных способов построения перспективы. Решить эту проблему можно с помощью всего лишь одного-единственного умножения во время построения проекции. Мы должны умножить координаты спрайта на коэффициент масштаба внутренней размерности. Этот поправочный коэффициент отображает одно математическое пространство на другое. По существу, мы должны масштабировать пространство спрайтов таким образом, чтобы оно соответствовало пространству трассированных лучей (или любому другому пространству, в которое мы собираемся его поместить). Конеч но, существует строгий математический способ расчета этого коэффициента (если вы любите точность, напишите мне письмо, и я покажу вам, как это делается). Что же касается меня лично, то я просто играю с расстояниями до спрайтов, пока объекты не начнут выглядеть вполне приемлемо. Итак, мы в общих чертах разобрались с проецированием спрайта на экран. На всякий случай повторю еще раз:

Чем-то напоминает рецепт колдовского зелья, не так ли? Тем не менее, выполнив эти операции и подвигав спрайт по экрану, мы получим иллюзию если не трехмерного, то, по крайней мере, двух с половиной-мерного изображения.

Таким образом, правильно поместив на экран объект, мы должны еще научиться корректно масштабировать его размеры при отдалении (или приближении) спрайта от наблюдателя.

Правильный расчет масштаба

Мы не учли одну вещь: масштаб спрайта. Нам надо увеличивать или уменьшать размеры спрайта, исходя из его положения на оси Z по отношению к наблюдателю.

Другими словами, мы должны отыскать формулу, которая бы позволяла нам получать подходящий размер или масштаб в пикселях для прорисовки спрайта. К счастью, масштаб обратно пропорционален значению Z-координаты спрайта (то есть расстоянию от спрайта до игрока). Следовательно, для вычисления точного масштаба (или, по крайней мере, хорошо смотрящегося масштаба), мы можем использовать Z-координату спрайта с некоторым поправочным коэффициентом.

Опять-таки не надо забывать о пространственных искажениях, возникающих при смешивании одной системы виртуальных объектов с другой. Поправочный коэффициент, сглаживающий эти искажения, легче всего подобрать экспериментально. Наша масштабирующая подсистема будет вычислять пиксельный размер, в соответствии с которым растровые текстуры должны будут соответственно сжиматься и растягиваться. Сам расчет масштаба на основании Z-координаты спрайта будет производиться по формуле 8.2.


Дата добавления: 2015-07-12; просмотров: 196 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
ВЫСОКОСКОРОСТНЫЕ ТРЕХМЕРНЫЕ СПРАЙТЫ| Формула 8.2. Расчет масштабирования.

mybiblioteka.su - 2015-2024 год. (0.004 сек.)