Задача Четырехугольник (FIT9201SURNAME_Tetragon)
Сроки выполнения
Рекомендуемый срок: 11 мая
Крайний срок: 18 мая
Предисловие
Задача на дробно-линейные преобразования, разработку алгоритмов текстурирования и трилинейную фильтрацию.
Условия
Элементы пользовательского интерфейса приложения
1. Окно поддерживает произвольные размеры - тянем курсором мыши за край окна.
2. Область рисования занимает большую часть окна и изменяется автоматически
3. Кроме области рисования, имеется квадратная область (правый верхний угол) для просмотра результата визуализации исходного изображения в маленьком масштабе. Масштаб зависит от размеров окна.
4. Две кнопки для добавления случайного четырехугольника (выпуклого или нет, в зависимости от кнопки).
5. В области рисования рисуются все добавленные четырехугольники (текстурированные).
6. Четыре точки, образующие четырехугольник выделены синим (желательно укрупнить их). Ребра рисуются красным цветом.
7. Кнопка Clear для удаления всех добавленных четырехугольников.
8. Checkbox для включения трилинейной фильтрации.
Логика приложения
Приложение визуализирует группу четырехугольников, заданных пользователем. Задаются они независимо, двумя способами: кнопками генерации случайных либо кликами мышки в области рисования. При этом необходимо учитывать порядок точек. Текстурирование производится с использованием дробно линейного преобразования и трилинейной фильтрации.
Необходимо построить дробно-линейное преобразование, переводящее прямоугольник в четырехугольник. Преобразование должно записываться следующими выражениями.
Рассматриваются следующие виды четырехугольников. Третий четырехугольник на изображении далее по тексту будем называть вырожденным.
NEW Реализовывать вырожденный случай необязательно, но рекомендовано.
Для текстурирования используется текстура условно большого разрешения (1024x1024) - изображение планеты Земля.
При текстурировании маленьких объектов необходимо учитывать тот факт, что пикселям на экране соответствует группа текселей. Для нормальной визуализации в этом случае необходимо учитывать все тексели, находящихся в области границ пикселя.
Правильным решением при расчете цвета пикселя является вычисление его путем взятия среднего значения по группе текселей. В настоящее время широко применяемым эффективным алгоритмом, реализующим это, является метод построения мип уровней. Он не требует большого числа операций, уменьшает число кэш-промахов и дает хорошее изображение. Метод используется в совокупности с соответствующей фильтрацией (трилинейная, анизотропная) и т.д. - различие в способах выборки и смешивания текселей. Далее представлен пример мип уровней одного изображения. Уровни нумируются от нуля, нулевой уровень - текстура максимального разрешения.
Каждый последущий мип-уровень текстуры строится из следующих соображений: размеры в 2 раза меньше по ширине и высоте, цвет текселя высчитывается по блоку 2x2. Допустимо брать четверть суммы значений пикселей блока, цветовые каналы при этом обрабатываются независимо. После того как уровни построены, на этапе визуализации, в зависимости от алгоритма фильтрации, делаются выборки значений из различных мип уровней. В задаче допустимо заранее рассчитать все мип-уровни и использовать (например, загрузить из файла) готовые изображения во время работы программы.
В качестве алгоритма фильтрации в задаче необходимо использовать трилинейную фильтрацию. Суть ее в том, что на этапе определения цвета обрабатываемого пикселя выбирается два соседних мип-уровня так, чтобы отношение размеров пиксель-тексель было как можно ближе к 1:1. Таким образом, текстурные координаты представляются тройкой (u, v, d), где d - level of detail, определяет уровни для текстурных выборок. В итоге, для конкретного обрабатываемого пикселя имеем два либо один мип уровень, из которых делается выборка значений. При выборке значений из мип-уровня применяется билинейная интерполяция. После этого, если выборка из двух мип-уровней, два цвета смешиваются линейной интерполяцией (относительно вещественной части d). Для определения d можно использовать максимум длины стороны пикселя в текстурном пространстве либо абсолютный максимум частных производных u и v по dx и dy в экранных координатах.
Пример использования мип-уровней представлен на следующем изображении - нижняя плоскость визуализирована с использованием трилинейной фильтрации.
Замечания
Основные требования к задачам сохраняются. Допускается уточнение условий задачи по электронной почте.
Эта задача на оценку и сдается лично. Приветствуется сдача задачи в рекомендуемые сроки.
Рекомендуется сдавать задачу последней. Данную задачу можно сдавать с неполным функционалом - работающая трилинейная фильтрация обеспечивает оценку удовлетворительно, за задачу.