@daniil14056

Как реализовать текстурирование?

Изучаю 3d графику, реализую все с 0, столкнулся с вопросом, что не могу понять как устроена реализация текстурирования и связывание вершин. Особенно не понятно как Оптимально при афинских преобразованиях связать грань и область текстуры.
Даже не понимаю с чего начать, и информации не найти. При реализации возникают вопросы, которые намекают что что-то не так.
Сразу вопросы:
Допустим текстура квадрат, верхняя половина белая, нижняя черная, каким цветом будет поверхность из одного пикселя этой текстуры?
Вопрос, моя первая реализация могла такое, так же текстура, полностью черная, но есть тонкая белая линия в один пиксель, при трансформации полигона в линию(повороте на 90 градусов) или зуме до 1 пикселя, у меня получалось так что он был белым , а не черным.

Потом вопрос, модель состоит из 1000 видимых полигонов, но она очень далеко и занимает 10 пикселей на экране, вопрос, как это оптимально обрабатывать ведь 100 треугольников будут на 1 пиксель указывать.

Вообщем не понятен вообще сам алгоритм.
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 1
Вам нужно почитать что такое текстурные координаты, MIP-текстурирование, фильтрация текстур.
Если очень упрощенно, то у каждой вершины треугольника есть пара текстурных координат (u и v), это как x и y, только для текстуры. Они говорят о том, в каком месте картинки текстуры находится эта вершина. Эти координаты обычно между 0 и 1, где 0 это ноль на картинке, а 1 это ширина или высота картинки (в зависимости от того, u это или v).
Далее, при растеризации этого треугольника, для каждого отрисованного пикселя производится интерполяция этих координат. После интерполяции мы получаем координаты точки в картинке текстуры, которая соответствует данному месту на рендерящемся треугольнике.
Тут вступают в работу mip-карты (это просто наша текстура с разными разрешениями), например, исходник текстуры 512x512, мип-карты для него будут 256x256, 128x128, 64x64, итд хоть до 1х1. Из какой мип-карты брать информацию определяется по расстоянию от камеры до данной точки треугольника. Чем дальше точка, тем меньшая по разрешению мип-карта берется, для оптимизации.
Когда выбрали точку, вступает в дело фильтрация текстур, тут есть несколько разных алгоритмов. Их цель — сгладить переходы между пикселями текстуры (текселями), эти алгоритмы отвечают за то, какой цвет точки выбрать, если мы попали не точно по текселю, а между текселями (что происходит практически всегда). Самый простой — nearest, он просто берет цвет ближайшего текселя.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы