Главная » Статьи » Учебник: теория

Текстурирование. Часть1.
Текстурирование

Текстурные координаты

В простейшем случае, текстурирование сводится к наложению текстуры в вашей программе трёхмерного моделирования. При экспорте обратите внимание на относительный путь между созданной вами моделью и текстурой. Этот путь будет прописан в egg файл. Когда панда будет загружать вашу модель, она попытается найти текстуру по указанному пути относительно egg файла. Panda3D может загружать JPG, PNG, TIF, и некоторые другие графический форматы в качестве текстуры.

Текстурная карта или текстура — это двухмерное изображение, наподобие JPEG или BMP файла, которое используется для окрашивания трёхмерной модели. Естьмножество различных эффектов, которые можно получить используя разные варианты текстурирования, однако для начала мы рассмотри базовые понятия и приёмы.

Текстура у нас двухмерная, а модель — трёхмерная, поэтому каждая вершина модели должна иметь помимо трёх координат x,y,z, ещё две — u,v, которые указываюткак расположена эта точка на текстуре, соответственно этому части текстуры переносятся на поверхность модели. Фактически любой пакет трёхмерногомоделирования умеет работать с текстурными (u,v) координатами. Координаты u и v расположены в диапозоне от 0 до 1. U — слева направо, v — снизу вверх. Такимобразом, левый нижний угол текстуры имеет координату 0;0, а правый верхний — 1;1. На рисунке это наглядно видно

Замечание: диапазон координат всегда 0;1 независимо от размера сторон текстуры.

Стандартные размеры текстур

Многие видеокарты требуют что бы размер текстуры в пикселях по каждому измерению был степенью числа 2. Например 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 и т.д. Не обязательно стороны текстуры должны быть одинаковы, одинакового размера, однако правило степени двойки должно соблюдаться. Так 64х128 так же правильно как и 256х256 или 512х32. По умолчанию, Panda3D сама масштабирует текстуру к ближайшей степени двойки в меньшую сторону, если это необходимо. Однако, приложение будет загружаться быстрее, если вы изначально сделаете размер, соответственно правилам.
Если нужно что бы панда масштабировала изображение в большую сторону нужно отредактировать конфигурационный файл, установив в нём textures-power-2 up, по-умолчанию стоит textures-power-2 down.
Имейте ввиду, что размер, который вы выбираете для текстуры не повлияет на её размер на модели — это целиком зависит от текстурных координат, однако, делая текстуру больше или меньше вы можете изменять детализацию (качество прорисовки) текстуры на модели.

Дополнение текстуры

Иногда необходимо загружать данные в текстуру каждый кадр — например для того, что бы проиграть ролик. Если каждый раз масштабировать текстуру, то это будет слишком медленно, поэтому используется метод дополнения — создаётся минимальная текстура, соответствующая правилам и перекрывающая размерами изначальную. Например для кадра ролика 640х480 будет создана текстура размером 1024х512. После этого изображение помещается в нижний левый угол, а остальное заполняется чёрным цветом. Для выяснения размеров чёрных полей можно использовать функции:

padx = texture.getPadXSize()
pady = texture.getPadYSize()

Дополнение текстур используется в двух случаях: для проигрывания роликов и при отрисовке в текстуру, если буффер текстуры нестандартного размера.

Нестандартные размеры текстур

Некоторые современные карты могут работать с нестандартными размерами текстур. Если у вас такая карта и вы желаете, что б панда позволила использовать нестандартные размеры, то это нужно указать в конфигурационном файле.
textures-power-2 none
Так же можно указать панде, что необходимо проверить возможности видеокарты
textures-auto-power-2 #t

При открытии окна будет проверена возможность работы с нестандартными текстурами, и в случае успеха сделана соответствующая настройка. Однако, нужно быть осторожным — некоторые карты на самом деле не умеют работать напрямую с нестандартными текстурами — они делают это  посредством драйвера, который масштабирует текстуру так же как и панда до стандартных размеров. В этом случае лучше дать возможность работы с размерами текстур панде, т.к. могут возникнуть проблемы с производительностью при использовании динамических текстур.

Категория: Учебник: теория | Добавил: ninth (08.02.2009)
Просмотров: 4822 | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Онлайн всего: 1
Гостей: 1
Пользователей: 0