- 3dMax экспортирует файл модели, содержащий содержимое: координаты вершин, нормали, отношения ребер,
- модель модель
- В пространстве есть модель камеры, и камеру можно разместить в исходном виде путем трансформации.
- Преобразование модели трехмерного пространства в проекцию на экран
- Растеризация путем сэмплирования Растеризация
Следующий шаг — затенение
1 Затенение: определение Определение затенения
Процесс введения света и тени и различных цветов называется затенением
Определение в этом уроке — это процесс применения материалов к объектам2 Модель отражения Блинна-Фонга Простая модель затенения
Что касается модели затенения Блинна-Фонга,
я ранее объяснял ее концепцию в учебных заметках LearnOpenGL — освещение 02: Основы освещения/Расширенное освещение.В
то время я также использовал PPT учителя Яна и в качестве пояснительного материала используется видео, а реализована простая реализация (на примере точечного источника света),
поэтому повторяться здесь не буду3 частоты затенения Частота затенения
3.1 Плоское затенение
- плоское затенение
3.2 Раскраска вершин
- Затенение вершин
Затенение выполняется один раз для каждой вершины, а значение цвета интерполируется.
3.3 Затенение пикселей
- Затенение пикселей
Затенение Фонга здесь относится к частоте затенения. Упомянутая ранее модель Блинна-Фонга представляет собой модель затенения, которая
вычисляет нормаль по трем вершинам треугольника. Пиксели внутри треугольника интерполируют значение нормали. Для каждого пиксельного затенения3.4 Сравнение
- Когда геометрия достаточно сложна, простой метод затенения также может дать хорошие результаты.
3.5 Метод расчета вершинных нормалей
- Метод вычисления нормали вершины
Нормальный метод внутреннего плавного перехода - барицентрическая интерполяция центр тяжести интерполяция
нормальная помнить нормализацию
4 Конвейер графики (рендеринг в реальном времени) Конвейер рендеринга в реальном времени
об этой части
Получение знаний на данный момент позволяет нам изучать API (такие как OpenGL, DirectX)
Рекомендуется здесь: ShaderToy, на этом веб-сайте нам нужно сосредоточиться только на том, как писать шейдеры.
текущий рендеринг в реальном времени
5 Отображение текстуры Отображение текстуры
Что касается содержания наложения текстуры,
я объяснил это в учебных заметках LearnOpenGL — Начало работы 05: Текстура.
- Схематическая диаграмма в PPT является хорошим представлением этого процесса отображения.
- Дизайн самой текстуры можно бесшовно соединить: мозаично, метод проектирования бесшовно связанных текстур: Wang Tiling
6 Барицентрические координаты интерполяция барицентрических координат
- интерполяция барицентрических координат
Расчет коэффициента определения с использованием площади
Расчет коэффициента определения с использованием координат
- При использовании метода интерполяции координат центра координаты центра тяжести до и после проецирования могут изменяться, поэтому необходимо вычислять соответствующие координаты центра тяжести на соответствующем этапе интерполяции, и их нельзя повторно использовать по желанию
- интерполировать
7 Применение текстур Применение текстуры
- Интерполированные UV-координаты вычисляются на точке, затем запрашиваются на текстуре, а затем применяются по мере необходимости (простое приложение на рисунке, назначенное напрямую)
8 Увеличение текстуры увеличение текстуры
Разрешение текстуры слишком маленькое, и несколько пикселей (пикселей) сопоставлены с одним и тем же текселем (пикселем текстуры).
- Обходной путь → Интерполяция
8.1 Билинейная интерполяция Билинейная интерполяция
Билинейная интерполяция: горизонтальная интерполяция + вертикальная интерполяция.
lerp — это аббревиатура линейной интерполяции.
На следующем рисунке показана интерполяция по ближайшим четырем точкам.
- Найдите четыре точки вокруг целевой точки
Расстояние по вертикали и горизонтали между красной точкой и нижним левым углом четырех точек
8.2 Бикубическая интерполяция Бикубическая интерполяция
Взятие 16 окружающих точек также используется для вертикальной и горизонтальной интерполяции.Используйте
4 точки каждый раз, чтобы сделать трехкратную интерполяцию вместо линейной разности.Двусторонняя трехсторонняя
интерполяция требует много вычислений, но эффект хороший.Об
этом метода, вы можете обратиться к этому великому богу.Познакомить с
взаимосвязью между алгоритмом бикубической интерполяции (бикубической интерполяцией) и графикой и
методами расчета
9 Проблемы с большими текстурами
- Когда текстура слишком большая, один пиксель соответствует множеству текселей → Недостаточная частота дискретизации приводит к муаровому рисунку + алиасингу (aliasing)
Пиксель на дальней нулевой плоскости соответствует большому блоку текстуры, простая точечная выборка не работает
Решение:
передискретизация, увеличение частоты дискретизации, но слишком расточительно
Выборка приведет к алиасингу, поэтому мы не делаем выборку, а получаем только определенный диапазон средних значений.
Это вопрос о точечном запросе и запросе диапазона
- Запрос точки, дайте точку, получите значение точки
запрос диапазона, без выборки, по заданной площади, получить (среднее) значение площади
9.1 Многоуровневая градиентная текстура Mipmap
Многоуровневая текстура с постепенным расстоянием Mipmap
может выполнять быстрый запрос диапазона, но она является приблизительной и только квадратной.Что
касается содержимого Mipmap, я объяснил это
в части Учебных заметок LearnOpenGL - Начало работы 05: Метод окружения текстуры/Фильтрация текстуры в текстуре
- Ниже приведена схематическая диаграмма в PPT.
Принципиальная схема расчета Mipmap
Сначала нам нужно узнать площадь, покрытую пикселями, и сделать приближение
При рассмотрении пикселя также учитывайте окружающие точки
, а затем сопоставьте их центры с UV, чтобы рассчитать расстояние
, поэтому вы можете использовать квадратную рамку с пунктирной линией, расстояние которой является длиной стороны, чтобы аппроксимировать неправильный четырехугольный
слой D. расстояние между пикселями отображения uv
в качестве примера берется логарифм 2.
Если размер области 1×1 D=0, то находим его на мипмапе самого исходного уровня.Если
размер области 4× 4 D=2, то найти его на мипмапе второго уровня, то есть на втором уровне это 4х4 станет 1х1, а потом перейти на второй уровень проверить значение этого пикселя, что это среднее значение этой области
Просто между целочисленными слоями будут разрывные промежутки,
поэтому если это не целочисленный слой, то проверяем два слоя до и после, выполняем билинейную интерполяцию, а потом выполняем другую интерполяцию,
то есть трилинейную интерполяцию, и получаем результат
9.2 Анизотропная фильтрация Анизотропный фильтр
Mipmap будет размывать детали на расстоянии,
потому что он может запрашивать только область окна, а интерполяция в конце концов только приблизительна.
-
Решением трилинейной интерполяции является анизотропная фильтрация.
Аппроксимация квадрата иногда бывает слишком неохотной.После наложения текстуры на рисунке ниже делается мипмап нечетной формы
из квадрата, то есть картинка в левом верхнем углу картинки ниже, но сжатие то есть не квадратным сделать нельзя.Анизотропная фильтрация позволяет нам выполнять запросы диапазона на длинных областях, но не на наклонных областях.Накладные расходы на создание графов с анизотропной фильтрацией (Ripmaps) в три раза больше ,
чем у исходных.Анизотропия
означает, что в разных направлениях его производительность отличается.
X анизотропии - это сжатие в несколько раз, то есть сколько слоев добавляется от левого верхнего угла к правому нижнему углуEWA-фильтрация, разбивающая любую неправильную форму на множество различных кругов, чтобы покрыть эту форму.
Естественно, несколько запросов могут охватывать ее, но это занимает много времени.10 Применение текстуры Различные карты
текстурДалее, на основе штриховки, мы можем наклеивать различные текстуры.
Существует множество типов текстурных карт.
10.1 Карта окружающей среды Карта окружающего освещения
Запишите свет со всех направлений.Предполагая, что окружающий свет исходит из бесконечности, записывается только направление.Иными словами,
текстура может использоваться для представления окружающего света.Сферическая
карта окружения Сферическое картографирование окружения
можно сравнить с земным шаром
с растяжением и искажениемКарта куба Карта куба
записывает окружающий свет на поверхности куба.Также
есть проблемы.Раньше на сферу можно было легко попасть светом в определенном направлении,а теперь необходимо судить с какой стороны куба это направление записывается на .10.2 Bump Mapping
Текстура Bump Mapping записывает движение по высоте без изменения геометрической информации.Текстура
создает искусственные ложные нормали, тем самым получая ложные цветовые эффекты и создавая эффекты рельефа.Благодаря определяемой пользователем
разнице высот попиксельное возмущение изменение направления линии и нормального направления, результат окраски изменитсяВычислить направление нормали: найти вертикальное направление после нахождения касательной
Нормальный алгоритм в случае UV
10.3 Отображение смещения Карта смещения
аналогична вводу карты рельефа, но карта смещения действительно меняет геометрическую информацию, а смещение вершин более
реалистично по сравнению с ним, потому что карта рельефа выявит наполнение на границе. , Карта смещения
требует, чтобы треугольники модели были достаточно детализированы, а объем вычислений Высшее
DirectX имеет метод динамической интерполяции, интерполирующий модель в соответствии с необходимостью и делающий модель более детализированной в зависимости от ситуации.10.4 Процедурные текстуры Процедурные текстуры
Трехмерная текстура определяет значение любой точки пространства.Для
такой текстуры нет реального изображения этой текстуры.Они
определяют шумовую функцию трехмерного пространства.После различной обработки функция может стать что ему нужно
10.5 Предварительно вычисленное затенение
Используйте пространство для расчета времени, сначала рассчитайте карту окклюзии окружающего света, а затем вставьте текстуру.
10.6 Твердотельное моделирование и объемный рендеринг
Трехмерные текстуры широко используются при объемном рендеринге
, таком как МРТ-сканирование, для получения информации об объеме, и используют эту информацию для рендеринга и получения результатов.