Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Теория текстурирования, первая часть, каки обещал 
:(
    Опции темы
gepard
Дата 9.3.2004, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Текстуры. Фильтрация, мипмаппинг.

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

Bool ColorSystems()
{
char* cs_name=”Unknown”;
cs_name=”RGB”;
printallabout(cs_name);

Самая простая и распространенная цветовая модель. RGB - RED GREEN BLUE . При работе с этой системой надо указывать три параметра, которые означают, как бы количество краски одного из трёх цветов, добавляемое для смешивания. Например, 0 0 0 - чёрный цвет, мы не добавляли никакой краски; 1 1 1 - белый цвет, мы добавили всех красок поравну, чем меньше будет значение той или иной краски, тем темнее будет общий цвет; 0.5 0.5 0.5 - серый; 1 0 0 - красный. Так же возможна градация не от 0 до 1, а от 0 до 255, принцип один и тот же.
Код

cs_name=”YCbCr”;
printallabout(cs_name);

Y - яркость, Cb - задание синевы, Cr - задание красноты. Эту цветовую модель, например, использует, формат JPEG, при сохранение файла. По сути, главным в этой системе является компонент Y - он является полутоновым представлением цветного изображения. Если в RGB системе все компоненты примерно равнозначны, то в YcbCr - нет.
Код

cs_name=”CMYK”;
printallabout(cs_name);

CMYK - CYAN MAGENTA YELLOW BLACK. Голубой, фиолетовый, жёлтый, чёрный. Тут надо отметить, что если будут значения 1 1 1 1 - чёрный цвет, 0 0 0 0 - белый. Здесь всё также предельно просто, как и с RGB
Код

cs_name=”L*a*b”;
printallabout(cs_name);

Эта модель разрабатывалась специально для человеческого глаза. Короче собралась толпа умных динозавров, вроде тех что сидели за TX-2, и решили стандартизировать наше восприятие цвета. Результатом их жизнедеятельности явилась эта цветовая модель, которая, надо отметить, является самой мощной из всех выше описанных. В ней есть цвета, которых нет в предыдущих моделях. Единственная проблема этой модели - её понимание: L - означает яркость, а a и b - хроматические компоненты (a - от зелёного к красному, b - от синего к жёлтому)
Код

cs_name=”HSB”;
printallabout(cs_name);

Этой моделью пользуются, в основном художники. Она очень удобна в использовании. H - это сам цвет, цветовой тон. S - насыщенность, процент добавления к цвету белой краски. В - яркость - процент добавления к цвету чёрной краски.
Код

if (all_mind_correct()) return true;
else ColorSystems();
}

-----------------------------------------------------------------------------------------
Код

bool Texturing(__int64 users_count)
{
char* filter=”Unknown”;
if (users_count<65536)
 return;
filter=”pointed”;//Точечное текстурирование
printallabout(filter);

Точечное текстурирование является, пожалуй, основным видом текстурирования. При точечном текстурировании выбирается отдельный фрагмент текстуры и используется, как цветовое значения для пикселей. Такое изображение при существующих стандартах уже просто неприемлемо. Именно благодаря этому виду фильтрации мы можем созерцать огромный ПИКСЕЛИ - квадраты, на стенах в играх.
Код

filter=”bilinear”;//Билинейная фильтрация
printallabout(filter);

Билинейная фильтрация - один из методов текстурирования, а не способ сглаживания текстур!!! Принцип действия этого метода текстурирования очень похож на точечный метод, но в отличие от него для выбора цвета пикселей используется не полное изображение, а блок из 4 текселей. Таким образом, повышается аккуратность при выборе цвета пикселя и достигается лучшая прорисовка отдельных мелких деталей изображения.
Код

filter=”trillinear”;//Трилинейная фильтрация.
printallabout(filter);

Второе рождение билинейная фильтрация получила в виде трилинейной фильтрации, принцип действия которой точно такой же, но используется улучшенный алгоритм расчета, который увеличивает точность прорисовки. Трилиниейная фильтрация, как и билинейная, использует блоки из 4 текселей, также как и в билинейной фильтрации, нормализуется изображение, затем нормализуется изображение из граничного блока из 4 текселей. Последним этапом производится анализ границы обоих блоков, в результате которого исправляются возможные ошибки и несоответствия на границе этих 2 блоков. В билинейной фильтрации достаточно часто можно увидеть линии, возникающие на границах блоков, которые исчезают при использовании трилинейной фильтрации. Кроме того, при использовании трилинейной фильтрации лучше убираются искажения и неровности при движении и при изменении угла зрения. Следует обратить внимание, что некоторые дефекты на приличной дистанции возникают даже при использовании трилинейной фильтрации. Изображение получается очень качественно только при более прямых углах зрения, при реальной же прорисовке, геометрические формы объекта могут быть нарушены.
Код

filter=”anisotropic”;//Анизотропная фильтрация
printallabout(filter);

Форма текстурированных объектов как при билинейной, так и при трилинейной фильтрации может искажаться, т.к. обе эти фильтрации являются изотропными - изображение фильтруется в определенной форме - в форме квадрата. Большинство же формируемых объектов не подходят под эту определенную и неизменную форму: для их качественной обработки необходимо использовать другой тип фильтрации - анизотропный. Анизотропная фильтрация обычно оперирует не менее чем 8 текселями, во все стороны mip-map уровней, при этом используется модель неопределенной заранее формы. В результате убираются шумы и искажения объектов, а изображение в целом получается более качественным.
Код

if (all_mind_correct()) return true;
else Texturing(++users_count);
}

-----------------------------------------------------------------------------------------
Код

bool MipMapping()
{
if (!(ColorSystems() && Texturing()))
 return;
else
printallabout(“mipmapping”);

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

if (all_mind_correct()) return true;
else MipMapping();
}


Это сообщение отредактировал(а) gepard - 9.3.2004, 10:16


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 9.3.2004, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



gepard, а куски "кода" - это что такое smile.gif ?...
А так ничаво даже статья.
Можно было б в FAQ по технологиям кидануть, имхо.


--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 9.3.2004, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Цитата
gepard, а куски "кода" - это что такое

Ничего ты не понял. Осмысли названия функций и значения присваеваемые переменным.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 9.3.2004, 10:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 7
Всего: 232



Цитата
Ничего ты не понял. Осмысли названия функций и значения присваеваемые переменным.

да понял я, понял с первого раза smile.gif
просто не очень удобно читать...


--------------------
user posted image
PM MAIL WWW   Вверх
gepard
Дата 9.3.2004, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Цитата
просто не очень удобно читать...

Мы программисты, нам не превыкать. Зато неоднообразно и непресно.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Kesh
Дата 9.3.2004, 12:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



Хорошая статья... Все просто и понятно... Но вот код... Тогда уж на русском их называй...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
gepard
Дата 10.3.2004, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Цитата
Но вот код... Тогда уж на русском их называй...

Запомню на будущее.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Kesh
Дата 10.3.2004, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: нет
Всего: 54



gepard да я не со зла, просто действительно неудобно читать...

P.S. А статья и правда классная


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
gepard
Дата 11.3.2004, 11:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Я рад, что хоть кто-то ценит. Считаю жизнь прожил не зря smile.gif.


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
gepard
Дата 11.3.2004, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Цитата
gepard да я не со зла

Разве я это сказал? Век живи, век учись. Я всегда мотаю на ус то, что мне говорят, чего и вам желаю. Лишних знаний не бывает.

Это сообщение отредактировал(а) gepard - 11.3.2004, 12:21


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Костян
Дата 12.8.2004, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 6.8.2004

Репутация: нет
Всего: нет



Напишишь статейку. www.e-brain.nm.ru
PM MAIL   Вверх
Domestic Cat
Дата 13.8.2004, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 3
Всего: 172



Цитата
Точечное текстурирование является, пожалуй, основным видом текстурирования. При точечном текстурировании выбирается отдельный фрагмент текстуры и используется, как цветовое значения для пикселей. Такое изображение при существующих стандартах уже просто неприемлемо.


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

Кстати неплохо было бы дописать уравнения текстуры, получилось бы лучше.
Как и алгоритмы для билинейной и трилинейной фильтрации.

А вообще хорошо smile.gif


--------------------

PM   Вверх
gepard
Дата 14.8.2004, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Domestic Cat
Если тебе интересно - есть ещё одна статья: http://forum.vingrad.ru/index.php?showtopic=19847

Это сообщение отредактировал(а) gepard - 14.8.2004, 08:59


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Ignat
Дата 16.8.2004, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: нет
Всего: 73



К модераторам и лично к December'у:
жалко будет если тема затеряется... может переместите куда-нибудь? Так чтобы на виду была.


--------------------
Теперь при чем :P
PM   Вверх
PILOT
Дата 16.8.2004, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


производство
****


Профиль
Группа: Модератор
Сообщений: 2724
Регистрация: 4.4.2002
Где: москва

Репутация: нет
Всего: 54



А что такое ТЕКСЕЛЬ?
Цитата
блок из 4 текселей


СУВ.


--------------------
тут могла быть Ваша реклама...
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.1361 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.