Параболическое текстурирование


Содержание

Текстурирование в играх

Что такое текстуры, думаю, знают все. Мне остается только добавить, что Главный Компьютерный Смысл применения текстурирования — экономия процессорного времени. Все очень просто: когда мы хотим нарисовать деревянный ящик, ничто не мешает нам запустить 3D-моделер и слить пару тысяч разноцветных полигонов в красочном экстазе. При наличии определенного таланта у вас получится очень правдоподобный ящичек, состоящий из множества мельчайших полигонов. Представьте, сколько времени уйдет, чтобы повернуть такой «бокс» градусов на 90. Используя текстуры, мы рисуем всего 6×2=12 треугольников, а затем раскрашиваем каждую сторону согласно информации, хранящейся в заранее нарисованной картинке. После этого любой Voodoo Graphics с криком «кийя!» крутанет, переместит да еще и отмасштабирует ящик как угодно.
Получается увеличение производительности путем уменьшения реалистичности. Однако степень «отстойности» будет сильно зависеть от того, как приготовлены текстуры. Как добиться максимальной реалистичности картинки, мы с вами сейчас и поговорим.

Теория
Прежде чем приступать к планомерному изложению материала,

Редактор материалов в 3DStudio
MAX — вещь очень мощная,
полезная, отличается умом
и сообразительностью.

хотелось бы оговориться. Данная статья не преследует цели научить вас работать в тех или иных программах, в которых можно обрабатывать текстуры (они перечислены, но не более того). Данный материал — теоретический базис, который нужно усвоить каждому начинающему игроделу. Основные понятия, их определения, расшифровка некоторых терминов, которые, что называется, у всех на устах, но никто толком не знает, что «это» означает. Что же касается практики. В ближайших номерах «Мании» мы напрямую коснемся проблемы работы с текстурами — вы сможете прочитать статьи, представляющие собой «голую практику». Сначала в рамках рубрики «МатрицаПлюс» будет опубликована статья «Основы создания скинов для Counter-Strike и Half-Life» , в которой детальным образом (начиная с азов и заканчивая профессиональными тонкостями) разобрано создание текстур для трехмерных моделей (материал значительно более «глубокий», чем публиковавшиеся в прошлом году статьи по выделке шкур для Quake и Unreal). Как сделать текстуру, как придать ей реалистичность, как конвертировать картинку для помещения в игру. Затем, в рамках «Самопала», вы сможете ознакомиться со статьей по спецэффектам, где также изложены некоторые моменты, касающиеся создания текстур. Ну а пока — теория.

Размер текстуры
Когда вы загружаете уровень трехмерной игры, текстуры, покоящиеся в установочной папке, спешно перебираются в память вашей видеокарты, преобразуясь и распаковываясь из всевозможных форматов хранения в родной формат программного API. Там они выстраиваются в линию и ждут, когда надо будет на что-нибудь натянуться.
На этом моменте хотелось бы остановиться поподробнее. Как вы понимаете, память видеокарты не резиновая, и когда она кончается, в расход идет системная память (у AGP-видеокарт). Получается, что для одного конкретного уровня может быть ограниченный по размеру объем текстур. Но и это еще не все.
С размером доступной видеопамяти очень сильно связано такое понятие, как разрешение текстуры. Разрешение в самом общем понимании — это размеры кусочка картинки по ширине и высоте. Так уж сложилось, что кусочки эти не прямоугольные, и даже не треугольные, а идеально квадратные, причем с длиной стороны в какой-либо степени двойки. И никак иначе.
Блокнотик в клеточку: Теоретически размер текстуры может быть любой, но именно использование чисел 32, 64, 128 и других степеней двойки позволяет им располагаться очень плотно друг к другу, не оставляя зазоров и пустых мест в памяти, размер которой, как вы знаете, также считается как «два в степени икс». Заметьте, что практически все компьютерные величины считаются подобным образом.
Но главный смысл разрешения в том, что один полигон, будучи покрыт текстурой бОльших размеров, будет выглядеть гораздо реалистичнее. Поэтому, используя огромные текстуры, выполненные в 32-битном цвете, вы добьетесь потрясающего вида сцены, загубите видеопамять и увеличите размер своего дистрибутива в два. нет, в три, а с долей фантазии и четыре раза. Да здравствует прогресс!
Что же делать в ситуации, когда быть похожим на PSX не хочется, но и размер конечного дистрибутива не на последнем месте? Что особенно важно для любительских игр, которые можно распространять через Интернет? Знатоки WinZip’а и графических форматов уже кричат: «архивировать!» Не надо, не надо, я прекрасно все слышу. Использование форматов сжатия графики вроде JPEG здорово помогает при хранении текстур на диске. Но это решение только половины проблемы, потому что в видеопамяти текстуры все равно занимают свой полный размер. Его вы можете оценить по тому же графическому файлу в формате BMP.

Программа Corel TEXTURE: Не умеете создавать текстуры? Научим!

Умных инженеров из компании S3 Inc. этот факт категорически не устраивал, поэтому они взяли и разработали технологию сжатия текстур прямо в видеопамяти, которую назвали S3TC , что из иероглифов можно расшифровать как S3 Texture Compression . Поначалу эту радость использовали только «Варварские» карты, но затем ее лицензировали все основные производители видеочипов. Поэтому теперь сжатием текстур и пофигистским отношением к количеству видеопамяти могут баловаться обладатели GeForce ’ов, Voodoo 4-5 и ATI Radeon ’ов. Справедливости ради можно упомянуть об аналогичной технологии FXT1 от 3Dfx Interactive . Однако боюсь, что оная находится сейчас там же, где и ее родители.
Реализация сжатия происходит на аппаратном уровне, если установлены правильные драйверы. А также зашиты соответствующие опции в DirectX и OpenGL . Наконец-то можно испустить вздох облегчения по поводу объемов и перейти к следующей теме.

Фильтрация
С развитием железно-ускорительной техники окончательно оформилась технология фильтрации текстур . В свое время одно это обеспечило компании 3Dfx армию фанатов. Размытые текстуры — самый яркий отличительный признак «ускоренной» графики. Но и тут есть свои особенности.
«Неускоренная» текстура, которыми нас потчует софтверный режим, на экране получается совсем не таких размеров, как она была нарисована. Вдобавок она перекособочена и повернута, чтобы удовлетворять правилам перспективы. А если нам приспичит посмотреть на трехмерный объект вплотную, каждая точка текстуры должна будет растянуться в несколько десятков раз. При этом геймер будет щедро одарен безумством кубизма гипертрофированных пикселей.
Использование аппаратной фильтрации устраняет неприятные последствия этого эффекта, как аспирин — похмельную голову. При растяжении точек текстуры пространство между ними заполняется градиентом, то есть плавным переходом цвета от одной точки к другой. В результате перед нами предстает вполне миловидная картинка.
Для того чтобы вычислить цвет конкретно взятой точки, берутся координаты места текстуры, в которое попадает эта точка. Если они не являются целыми числами, цвет точки вычисляется путем линейной интерполяции цветов четырех пикселей в текстуре, которые окружают полученную точку, находясь в «целых» координатах. Немного поскрежетав

Photoshop. Adobe Photoshop.
Самый популярный сегодня
растровый графический
редактор.

извилинами и перечитав предыдущее предложение тройку-другую раз, вы поймете, что я хотел до вас донести. Итого, мы должны произвести две интерполяции — по горизонтали и по вертикали. Весь процесс называется билинейной фильтрацией .
Если мы используем 8- или 16-битный цвет, возможных значений цветов точки будет меньше, и их придется округлять, в результате чего получаются «ступеньки». В 24- и 32-битном цвете можно добиться максимальной плавности перехода. Именно поэтому картинка в современных акселераторах, правильно выполняющих фильтрацию, получается такой красивой и реалистичной.
Блокнотик в клеточку: Шумы и артефакты, выползающие на текстурах, часто появляются из-за ошибок в алгоритмах интерполяции и округленных вычислений. Так и складывается плохая репутация видеокарт, пока очередная версия драйверов не попробует это все исправить. Кстати, самая правильная фильтрация — программная. Не смейтесь! В Direct3D возможно использование режима, когда картинка, полученная программным способом, практически не будет отличаться от аппаратной. Вот это и есть настоящая эмуляция.
Кстати, использование акселератора не обязательно означает наличие гладких текстур. Обычно графические API позволяют делать выбор из нескольких способов текстурирования. Подробней об этом можно почитать в документации, а для наглядности давайте немного поиздеваемся над Quake’ом. Запустите Quake III , в консоли наберите r_textureMode «GL_NEAREST» , и после рестарта графики можете наслаждаться динамическим освещением и «софтовыми» текстурами.

Мип-маппинг
Если текстурированный объект находится далеко от зрителя, он будет очень маленький и плохо различимый. Поэтому нам наплевать, какого разрешения на нем будет использоваться текстура. И было бы неплохо, пока никто не видит, взять и натянуть на этот объект текстурку поменьше, дабы сэкономить немного процессорного времени для более важных вещей.
Сказано — сделано! Теперь в духовно-информационном пространстве, иногда именуемом Миром, появляется такое понятие, как мип-маппинг , заключающееся в использовании текстур более маленького разрешения для более удаленных объектов.
Прелесть ситуации состоит в том, что мелкие текстуры автоматически генерируются из исходной во время загрузки сцены/уровня/игры. Алгоритмы этого процесса заложены в графическом API (DirectX Graphics, OpenGL). В соответствии с установками Mip-Map уровней, которые еще можно делать через меню драйверов видеокарты, создается определенное количество текстур, каждая из которых отправляется на хранение в видеопамять. Проходит секунда, и нужная текстурка выползает оттуда на свет божий, покуда ее не сменит более крупный или более мелкий собрат.
Уровни мип-маппинга хорошо видно на скрине из того же «Квейка».

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

Сырье
Основу для текстуры можно создать двумя способами: первый — сгенерировать на компьютере. Второй — взять готовую фотографию.
Первый способ подразумевает, что вы используете некую программу, которая по определенному алгоритму выдаст вам результат в виде психоделической картинки. Самый простой вид — случайные точки, разбросанные по гладкой поверхности. Посмотреть это можно с помощью фильтра Noise (Шум), который есть в каждом уважающем себя графическом редакторе. Берем два зеленых квадрата, рисуем на каждом разноцветный шум, объединяем со смешиванием и

Третий Квейк обзавелся
софтовыми текстурами. А вы
говорите, прогресс.

размываем. В результате получаем нечто подозрительно похожее на травку. Газонную.
Точно так же получаются волны, кирпичики, вода и огонь. Есть и более изощренные алгоритмы. Если вы заинтересовались, покопайтесь в литературе по программному созданию текстур — это излюбленное занятие создателей 64k демок. Или займитесь фракталами — порой результаты получаются самые неожиданные.
Фотографии в чистом виде почти непригодны для обволакивания поверхностей. Уж слишком уродливыми и нереальными получаются объекты реального мира, перенесенные в виртуальный. Пока вы думаете над философским аспектом данного вопроса, я продолжу.
Во-первых, с фотографии надо убрать шумы, черточки и прочую грязь. Переходы тени там тоже ни к чему. Равно как и света. У нас солнце свое есть — нечего тут конкуренцию разводить. Ненужные детали — вон. Детализацию лица или другой части тела — размыть. Вооружившись терпением и горкой плагинов, можно добиться от фотографии плоского и нереалистичного вида. Чего мы и хотели.
Блокнотик в клеточку: Фотореалистичные текстуры — ха! Попробуйте-ка натянуть снимочек соседа Пети на полигональную личину любимого бота в UT. Ну и что, чувствуете фотореалистичность? Ладно, ладно, можете выключить. Про фото-эту-самую нам мозги закапывали еще со времени рекламной кампании Voodoo 2. И что? Все красивые сцены в буклетиках, как ни крути, все равно используют текстуры, рисованные по проторенным алгоритмам, и лишь их разрешение со временем растет.
Область применения фототекстур — копии реальных объектов, задние и крупные планы да скины. Еще они могут быть черно-белой основой для поверхностей, генерируемых программным путем (Bump-Map).
Последнее, кстати, один из лучших способов создания текстур. Bump-Map — это такая черно-белая картинка, по-русски называемая картой глубины. Нехитрым путем полученная из фотографии, скажем, стены, она еще более нехитрым методом раскрашивается, и получается нереальная копия реальной поверхности. Само собой, именно то, что получилось и будет использоваться при текстурировании.

Инструментарий
Наверное, первое, чем можно посоветовать запастись, — это всенародный любимец, тов. Photoshop. Если у вас к нему по каким-то причинам врожденная неприязнь, то возьмите любой другой растровый графический редактор , обладающий

Пол является живой
иллюстрацией абзаца про
мип-маппинг.

похожим набором функций.
Основной задачей при изготовлении текстур является обработка готовых изображений с целью создания «тайлового» эффекта. То есть чтобы при составлении друг с другом кусочки изображений формировали одно непрерывное полотно.
«Фотошоп» хорош тем, что прямо в нем, без использования дополнительных плагинов, можно лепить тайлы, как на конвейере. Это довольно простой трюк, который, тем не менее, требует артистических способностей. Загружаете картинку, применяете к ней встроенный фильтр offset , сдвигая левый верхний угол прямо в центр, а затем затираете получившийся шов инструментом Clone Stamp . Чем однороднее будет исходная картинка, тем лучше получится результат. Таким образом можно делать ровные поверхности вроде каменных стен, асфальта, песка, травы.
В «Фотошопе» же с помощью Quick Mask можно создавать переходы одной поверхности в другую. Описание процесса можно найти во многих учебниках по фотомонтажу. Незаменимым он оказывается при обработке готовых фотографий, о смысле которой только что говорилось.
Следующий вид инструмента — трехмерный моделер. Он нужен вам по двум причинам: во-первых, вы можете быстро оценить, как созданная текстура смотрится на трехмерных объектах (так и хочется сказать «в жизни»). Во-вторых — например, в 3DStudio MAX есть много средств обработки и создания текстур. Там и фильтры, придающие больше реализма, и прозрачности, смешения, светотени.
Оригинальная программа также есть в комплекте установки Corel DRAW! и носит название Corel TEXTURE , недвусмысленным образом указывающее на ее назначение. Текстуры здесь создаются по принципу слоев. Помните пример с травой? Тут — то же самое. Сделали первый слой в виде кирпичиков, раскрасили, добавили второй слой — волны, опять раскрасили, наложили источники света да пару эффектов. Что получилось — черт разберет, но красиво, практично, а главное — быстро.

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

Текстурирование волос — что это такое?

Что такое текстурирование волос? По сути, это та же привычная всем завивка, только производится она щадящим способом. Об этом и пойдет речь в статье.

Что представляет собой текстурирование волос?

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

Преимущества первого способа

Этот вариант обладает следующими достоинствами:

  • дает возможность получить завитки различной формы;
  • помогает достичь небывалого объема на тонких волосах;
  • прядки становятся шелковистыми, эластичными и пружинистыми;
  • локоны получают длительную фиксацию.

Разновидности процедуры текстурирования волос

А теперь разберемся со вторым видом. Выделяют несколько типов:

  1. Химическая завивка, которая держится до полугода. При помощи специальных растворов изменяется структура волоса.
  2. Укладка, производимая с помощью спрея для текстурирования волос. Чтобы придать прическе другой вид, также можно воспользоваться пудрой для укладки. Эти средства без труда смываются.
  3. Выпрямление. Эффект достигается благодаря наносимому на влажные волосы на четверть часа текстурайзеру. После снятия средства локоны остаются послушными.
  4. Стрижка — самый лояльный способ текстурирования, потому что используются исключительно ножницы и бритва. Эффект получается от применения специальной техники выстригания отдельных прядок.

Теперь поговорим о плюсах этой процедуры. На расположенных ниже фото текстурирование волос представлено наглядно.

Достоинства

Положительные стороны — в следующем:

  • во-первых, волосы после процедуры становятся послушными, будет значительно меньше времени уходить на укладку;
  • во-вторых, существует много видов процедур, которые можно произвести собственными силами;
  • в-третьих, пользуясь специальными средствами для текстурирования волос, вы не причините вреда локонам.

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

Биозавивка

Подходит шевелюре, ранее подвергавшейся текстурированию, а также жестким, непослушным, тонким, пористым и окрашенным волосам. Сразу поговорим о противопоказаниях.

Кому стоит воздержаться от процедуры:

  • Беременным и кормящим грудью женщинам.
  • Лицам с температурой и после перенесенной тяжелой болезни.
  • Людям с повышенным или пониженным давлением, а также соблюдающим строгую диету.
  • Принимающим гормональные средства, а также находящимся в состоянии сильного стресса.
  • После продолжительного периода окраски локонов хной или басмой.

О рекомендациях нужно знать и строго придерживаться, ведь здоровье ценнее всего.

Преимущества этого способа:

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

Это то, что касается перманентного структурирования.

Что характерно для долговременной укладки

Благодаря этой процедуре можно получить локоны слегка завивающиеся, прямые или очень кудрявые.

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

О спреях для текстурирования прядей

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

Илон Маск рекомендует:  Segread читать сегментные регистры

Рассмотрим некоторые торговые марки:

  • «Лореаль». Wild Stylers by Tecni ART Crepage De Chignon – спрей дарит прядям мгновенный объем. Его подсушивающий эффект не оказывает негативного влияния на волосы, так как в состав средства входят минералы, оберегающие локоны. Обработке подвергаются как влажные, так и сухие прядки. Бюджетный вариант с высоким качеством.
  • Wella. Эта линия представляет продукт, который не только формирует прекрасную небрежную прическу с лёгкими волнами, но и защищает волосы от ультрафиолетовых лучей. Недостаток в том, что выделяется из флакона точечно, поэтому на волосы наносится ладонями.
  • Schwarzkopf. Это также недорогой продукт. Лучший эффект виден на тонких волосах. Но если имеются секущиеся кончики, стоит отказаться от него, иначе причёска рискует приобрести неэстетичный вид.
  • Спрей Sea Solt – находка для волос, которые сильно пушатся. Распыляется на влажные локоны, затем прядь накручивается и фиксируется при помощи фена.
  • Спрей Rolland OWAY Sea Salt придает волосам «пляжный эффект». Прядки не склеиваются.

Это то, что касается средств от известных производителей. Также спрей для текстурирования волос можно сделать самостоятельно.

Народное средство

Для самостоятельного изготовления средства вам понадобится:

  • 20 г морской соли;
  • 10 г кокосового масла;
  • стакан воды (200 г).

Все компоненты нужно смешать и залить в бутылку с распылителем. Спрей наносится на волосы и моделируется желаемая прическа.

Судя по отзывам, текстурирование волос, в принципе, не имеет нареканий. Некоторые говорят о том, что после использования солевого спрея волосы становятся сухими, но бальзамы и масла решают эту проблему.

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

И напоследок разберемся с противопоказаниями

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

От них нужно отказаться, если:

  • у вас ломкие и сухие волосы;
  • есть аллергия на химические препараты;
  • обнаружены повреждения кожного покрова головы;
  • вы беременны или кормите грудью малыша.

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

Какие бывают нормали, и зачем нужны. Часть первая (Normal map, группы сглаживания, введение в Vertex Normals)

Пикабушник @SuperMopsek в соседнем сообществе (Вот тут) поднял интересную тему — карты нормалей в 3D графике. И даже пошагово показал процесс запекания карты нормалей средствами Blender. Но как показывает практика, такая манера подачи ясна не всем :)

Попробую рассказать подробнее, а так же рассказать о некоторых хитростях в использовании нормалей. Используемое ПО — 3DS Max, но принципы общие, и могут использоваться при работе в любом 3D пакете.

-Для чего?
В большинстве случаев, проще использовать некую текстуру, вместо миллионов полигонов (допустим, складочки на футболке ГГ).

— Звучит круто! А как оно работает вообще?

Простыми словами, нормаль — это перпендикуляр к поверхности. По нему движок определяет, под каким углом отражать свет. В случае карт нормалей (normal map), эта информация ложная, текстура хранит информацию о рельефе, которого нет. И плоская поверхность отражает свет так, словно на ней есть неровности. Зачастую подобного «обмана» человеку хватает, чтобы принять низкополигональную модель за что-то более детализированное:

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

Для создания панелей, заклепок и т.д. (как в примере выше) достаточно простого графического редактора и пары плагинов, но для сложных форм необходим детализированный объект-источник, как в примере у @SuperMopsek со скульптурой.

Источником может служить 3D скан, цифровая скульптура, выполненная, например, в Zbrush и т.п.

— О, круто, печем нормали со всяких крутых штук на полтора полигона и получаем графон, да?

Не совсем. Контуры исходной модели и лоуполи-приемника не полностью совпадают, и на финальной модели возникают искажения. А насколько они будут значительны зависит от нескольких факторов:

1. Чем дальше конкретная точка хайполи находится от лоуполи, тем сильнее искажение. Потому чем плотнее сетка приемника, тем точнее она прилегает к источнику, и тем меньше будет искажений. Но и нагружать компьютер она будет сильнее. Чтобы найти идеальный вариант, проверяйте силуэт лоуполи — включите отображение без освещения (flat color в случае 3DS Max) и покрутите лоуполи и хайполи поочередно, осматривая со всех сторон. Детали, не влияющие на силуэт, полигонами моделировать не нужно, нормалями их можно перенести с минимальными потерями.

2. Не вся информация в нормалях одинаково полезна. Со скруглением на «цилиндрах» справляется разделение на группы сглаживания, и если хотите получить красивые фаски — добавьте на «хайполи» только их. В противном случае получим искажения из-за того, что местами цилиндр-источник отдален от приемника сильнее. С определенного угла выглядит неплохо, но с большинства точек обзора возникают косяки.

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

— Минуууточку, опять упоминаешь группы сглаживания, а это что вообще такое?

А группы сглаживания — тоже результат работы нормалей. Только не текстур, а тех, что хранит сама модель. Дело в том, что каждая вершина хранит в себе информацию о том, куда отражать (vertex normals). А на участках между ними вычисляется среднее значение. Сравните:

На иллюстрации два одинаковых объекта. Но боковая поверхность первого обманывает глаз, т.к. свет отражается под усредненным углом, и в целом картина соответствует цилиндру. Правый же отражает свет вполне честно, и уже явно видно, что в основании лежит многоугольник, а не цилиндр. Такая разница тоже по причине нормалей, только теперь к вершине. Обратите внимание на то, что на левом «цилиндре» их как бы меньше. Просто значения накладывающихся вершин усредняются, если они в одной группе сглаживания, и результат сглаживается. Для работы вручную с группами сглаживания в 3DS Max в EditPoly/EditMesh выделите полигоны , которые должны быть сглажены, и назначьте им незанятую группу во вкладке Polygon Smoothing Group.

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

— А вручную эти нормали к вершинам как-нибудь крутить можно, без этого вашего «smooth»?

Можно, и даже нужно! Таким образом можно добиться поразительных результатов. Но об этом следующим постом, а то этот и так затянулся. А пока превью:

Следующий урок научит вас делать такие вот фаски без запекания, кучи полигонов и искажений от групп сглаживания. И не только этому, разумеется)

Особенности моделирования света: Рельефное текстурирование (Bump mapping)

Рельефное текстурирование основывается на технике выполнения затенения по Фонгу, поэтому, если вы не прочитали предыдущие разделы, предлагаю сделать это прямо сейчас.

Рельефное текстурирование очень напоминает обычный процесс наложения («натягивания») текстуры на полигон. Только при обычном наложении текстуры мы работаем со цветом и изменяем его цветовое восприятие, а вот при рельефном текстурировании мы добавляем ощущение рельефа, объемности плоскому полигону. Эта техника может добавить детализацию сцене без создания дополнительных полигонов. Заметьте, что полигон по-прежнему остается плоским, но создается ощущение его выпуклости (рельефности).

Рассмотрите куб на рисунке, создается впечатление, что он состоит из множества мелких полигонов, обрисовывающих чеканку и клепки. Но в действительности этот куб состоит из 6 плоских четырехугольных полигонов. Вы можете задать вопрос, а чем же это отличается от обычного текстурирования. Ответ — рельефное текстурирование отражает реальное положение источника света в сцене и даже изменение его местоположения. (Интересующимся можно посоветовать прочитать статью, посвященную реализации рельефного текстурирования в DirectX6)

А как оно действует?

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

Очень похоже на выдавливание (чеканку). Но, по сути, единственное, что было сделано для придания объемности плоскому изображению, — это правильное наложение ярких и темных участков. Остальное делает наш мозг.

Но как определить, какие биты изображения делать яркими, и наоборот. Очень просто. Большинство людей в течение своей жизни продолжительно находятся в условиях, когда свет исходит сверху. Таким образом, человек привык, что большинство поверхностей сверху ярко освещены, а снизу, наоборот, находятся в тени и будут темнее. Таким образом, если глаз воспринимает светлые и темные области на объекте, то человек воспринимает их как рельеф.

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

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

Что такое рельефная карта (текстура)?

Рельефная карта (текстура) — это обычная текстура, только в отличие от первой, несущей информацию о цвете определенных участков, рельефная карта несет информацию о неровностях. Самый распространенный способ представить неровности — это применить карту высот. Карта высот — это текстура в оттенках серого, где яркость каждого пикселя представляет, насколько он выдается из базовой поверхности. (См. рисунок справа). Очень простой и удобный метод. Его легко реализовать.

Даже в псевдотрехмерных играх и приложениях, ввиду своей простоты, этот метод используется очень широко. Например, игра SimSity3000. Рельеф местности там задается bitmap текстурой с градацией яркости от 0 до 255. Где 50 соответствует нулевому уровню земли.0 — самым глубоким частям рек и озер, а 255 — будут означать вершины самых высоких гор. Bump maps очень широко используются разработчиками во многих пакетах работы с графикой и трех-мерными объектами.

Но это просто отступление, показывающее диапазон применения bump maps.

Используя карту высот, вы сможете имитировать неровности практически любой поверхности: дерево, камень, шелушащуюся краску и т.д. Конечно, у всего есть свои пределы. Используя bump mapping, вы не сможете имитировать крупные впадины и возвышенности, но вот для имитации неровностей и шероховатостей на поверхности этот метод подходит идеально.

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

По сути, это логическое продолжение техники просчета Phong shading. При использовании Phong shading мы интерполировали нормаль к поверхности по всему полигону, и этот вектор использовался для дальнейшего определения яркости соответствующего пикселя (См. главу, посвященную затенению по Фонгу). Реализуя bump mapping, мы немного меняем направление вектора нормали, основываясь на информации, содержащейся в карте высот. Изменяя положение вектора нормали в конкретной точке полигона, мы, соответственно, меняем яркость текущего пикселя (помните, закон косинуса из теории света :)) Все очень просто!

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

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

Сначала нам нужно преобразовать высоты с карты (bump map) в маленькие векторы, по одному на каждый пиксель. Посмотрите на увеличенный рисунок слева. Более светлые квадраты соответствуют более выпуклым участкам. Понятно. Теперь, для каждого пикселя (на нашем рисунке квадрат соответствует пикселю) мы должны рассчитать вектор, указывающий нам направление уклона поверхности. Рисунок справа демонстрирует нам это. Маленькие красные векторы указывают на уменьшение высоты. Для определения этих векторов, мы определим величину градиента для каждого пикселя:

    x_gradient = pixel(x-1, y) — pixel(x+1, y) y_gradient = pixel(x, y-1) — pixel(x, y+1),

где х и y — координаты соответствующего пикселя

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

Слева — полигон с изначальным вектором нормали, обозначенным n. Также показаны два вектора, которые будут использованы для изменения положения (направления) нормали к пикселю под ним. Оба вектора должны располагаться параллельно осям
координат применяемой карты высот.

Справа показаны карта высот и полигон. На обоих рисунках показаны направления U и V осей координат карты (текстуры) высот.

Пересчитать новый вектор нормали легко:

New_Normal = Normal + (U * x_gradient) + (V * y_gradient)

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

Выполнение быстрого рельефного текстурирования
(Fast Bump mapping)

Выше вы узнали, что при рельефном текстурировании производится изменение вектора нормали к поверхности на площади всего полигона в соответствии с картой высот. Вы так же помните, что для ускорения просчета затенения по Фонгу мы применили способ с заранее просчитанной Phong map, которая представляет собой набор яркостей для всех возможных нормалей на полигоне. Таким образом, не надо быть гением, чтобы предположить, что быстро выполняемым вариантом рельефного текстурирования будет просчет смещений к карте затенения по Фонгу. Результирующей яркостью пикселя будет сумма значений, полученных с карты затенения и рельефной карты. Используя этот подход, мы одновременно будем производить затенение по Фонгу с учетом рельефности рисунка.

Параметрическое текстурирование глаза

Денис Ахматов специально для блога 3dpapa рассказал о процессе работы над своим проектом по созданию параметрических ассетов для персонажей.


Введение

Привет! Меня зовут Денис Ахматов, и нет, я не родственник великой поэтессы)).

Я познакомился с CG-индустрией совершенно случайно, когда на первом курсе художественной академии мне предложили поучаствовать в разработке небольшого игрового проекта.

Тогда я совершенно не знал, что такое 3d моделирование, UV-развёртка, текстурирование и т.п. Первым моим 3d редактором стал Zbrush, одного скульптинга было недостаточно и пришлось изучать полигональные 3d редакторы.

Первым из них стал 3D Max, но долго я в нём не проработал, так как его вытеснила Cinema 4d с более приветливым и русскоязычным интерфейсом. Изучая различные аспекты моделирования и работы с 3d моделями, я проработал в синьке более двух лет, но за это время у меня получилось только несколько приличных работ.

Далее я подумал, что нужно как-то выходить на более профессиональный уровень и начать решил со смены редактора. Примерно за полгода я изучил почти все самые популярные 3d редакторы: Modo, Blender, повторно попытался работать в 3D Max, пытался изучить Houdini, но он оказался сильнее меня, и наконец остановился на Maya.

Maya полностью устраивала меня в плане функционала и предоставленных инструментов. И именно с Майи начался мой путь работы в технике гейм-продакшена. Именно тогда я проявил интерес к продуктам компании Allegorithmic, игровым движкам и PBR в целом.

На данный момент я учусь на последнем курсе магистратуры, на факультете промышленного дизайна, занимаюсь гейм-артом, изучаю персонажку и левел-дизайн, в свободное время моделирую материалы в Substance Designer.

Довелось поучаствовать в съемках документального фильма о промышленном дизайне в СССР «Техническая Эстетика: дизайн на Урале»

Модель

Поводом для этой работы стала подготовка к реализации себя как художника по персонажам, то есть мне хотелось сделать несколько параметрических ассетов для персонажей, таких как глаза, зубы, кисти рук и т.п., чтобы сделать их один раз, а потом только настраивать их под того или иного персонажа. Я начал с глаз, так как этот объект показался мне самым сложным.

Модель глаза состоит из двух объектов Body и Gloss, при этом каждый из них обладает своим материалом/шейдером. Body несёт на себе цвет глаза, то есть текстуры Albedo, Normal и Roughness. Gloss имеет только карту Normal и прозрачность с каналом рефракции 1,01 (в ходе экспериментов ior 1,01 показывает себя лучше, чем 1,3, который должен быть правильным с физической точки зрения). Для рендера использовался Marmoset 3.02.

Полигонаж данной модели 1000 треугольников, это слишком много для игрового продакшена и мало для кино-продакшена, но вполне достаточно для наглядного осмысления работы.

Развёртка объекта

Опять же для наглядности, будет один UV-сет на шейдер. В дальнейшем всё можно будет отмасштабировать под персонажа.

Развёртка объекта Gloss:

Развёртка объекта Body:

Боковые шеллы объектов пересекаются, а центральные разнесены:

Текстурирование

Радужка

Далее я продолжал работу в Substance Designer (SD).

Многие спросят, а зачем для этого использовать SD, если можно всё сделать в Substance Painter, Mari или Photoshop? Суть работы в SD заключается в процедурах, проводимых над исходным объектом, то есть если я, допустим, изменю исходный объект, то конечный результат тоже изменится.

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

В SD я использовал в качестве модели во вьювере только объект Body, так как я не использовал альфа-маску для Gloss. Изначально разрешение текстуры стоит взять побольше, так как потом сжать её до необходимого размера будет проще, чем расширить.

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

Далее я подготовил шум, который будет основой для текстуры радужки. Для этого я взял Anisotropic Noise, применил к нему Slope Blur, а потом Warp, что дало волнистые складки на текстуре. Обе эти ноды питаются от шума Fractal Sum Base, с разными параметрами Min и Max Level. Затем был применён Cartesian To Polar, который превратил полученные складки в радиальную структуру.

Чтобы придать текстуре неоднородность, я воспользовался нодой Tile Generator, пропустил её через Slope Blur и использовал результат в качестве канала Slope в ещё одной ноде Slope Blur, к которой в канал Grayscale был подключен радиальный шум.

Из полученного результата я вычел текстуру, которая питала Slope, получив тем самым тёмные пятнышки. Далее путём вычитания маленькой окружности из большой, применением Blur HQ и регулировкой по уровням была получена маска радужки. Затем я умножил её на радиальный шум.

Затем я применил к текстуре, из которой были получены пятнышки, Slope Blur и Cartesian To Polar и добавил её к текстуре радужки.

Далее путём сложения и вычитания предыдущих элементов, была получена следующая часть текстуры:

Илон Маск рекомендует:  invert() в CSS

Далее пропуская окружность через Slope Blur были получены следующие вариации масок для цвета.

Этап окраски радужки. Для этого я использовал четыре цвета, голубой, фиолетовый, коричневый и тёмно-синий. Не стоит использовать открытые цвета, всегда используйте сложный цвет, неоднозначный, переходящий из одного в другой. Основой послужил голубой цвет, наложенный на фиолетовый через маску, полученную из шума Clouds_2.

Далее через ранее полученные маски накладывался цвет:

Затем те же маски послужили в качестве информации для получения карты нормалей:

Сосуды

В начале я умножил Gradient Linear 1 на Gradient Linear 2, получив тем самым градацию от чёрного к белому по трём направлениям. Затем сжал его при помощи ноды Transform и размножил в Tile Generator.

Далее при помощи Warp и Directional Warp получил волнистые лини и ограничил их с правой стороны градиентом.

Затем необходимо было сделать крупные сосуды. Я использовал Tile Generator и приём для получения структуры Вороной, к которой был применён Warp. Из полученного результата был вычтен результат следующей последовательности Tile Generator, Levels, Distance, Levels.

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

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

Когда все планы текстуры готовы, можно их собирать в единое целое и масштабировать под UV-развёртку.

Полученную текстуру я использовал как маску для цвета и информацию для получения карты нормалей. Затем отмасштабировал и добавил текстуры радужки, предварительно ограничив их маской. Последнее самое простое, карта Roughness, сделанная из двух сложенных окружностей с разницей в Opacity 35%.

Визуализация

Всё предельно просто, все текстуры по своим каналам, у материала объекта Gloss канал Transparency поменять на Refraction с показателем ior 1.01

Распределение текстур

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

Для иллюстрации сказанного привожу такой пример: создается текстура для паркетного пола. Площадь пола — 25 квадратных метров. При создании текстуры используется изображение, содержащее лишь один сегмент узора паркета. Площадь подобного сегмента обычно не превышает половины квадратного метра. Если просто наложить такую текстуру на пол, она растянется по всей модели. Чтобы настроить внешний вид и размеры уже наложенной текстуры — понадобится воспользоваться методами распределения текстуры.

Существует два основных метода распределения текстуры по поверхности объекта:

? при помощи параметров текстуры;

? с использованием модификатора UVW Map (Координаты изображения).

Каждый из этих методов бывает удобен в определенных ситуациях. Рассмотрим оба метода подробно.

Распределение с использованием параметров текстуры

Рассмотрим порядок распределения текстуры по объекту с использованием отдельных ее параметров на конкретном примере создания материала кафельной плитки.

1. В окне проекций Perspective (Перспектива) создайте стандартный примитив Box (Куб). Значения его параметров задайте следующие: Length (Длина) — 35, Width (Ширина) — 270, Height (Высота) — 270. Получилась модель квадратной стены.

2. Раскройте окно редактора материалов. Выберите любой пустой слот, раскройте свиток Maps (Карты) и в качестве карты диффузного цвета выберите изображение из файла Plitka.jpg в папке Primeri_ScenGlava_3Plitka (рис. 3.59).

3. Наложите данную текстуру на примитив в сцене и включите режим отображения текстур в окнах проекций опцией Show Standard Map in Viewport (Отображать стандартную карту в окне проекций) (см. рис. 3.24). В результате — изображение одной плитки покрыло каждую грань примитива (рис. 3.60).

4. Раньше, в случае использования какой-либо карты в отношении любого канала, мы сразу нажимали кнопку Go to Parent (Вернуться вверх), для возврата на уровень редактирования всей текстуры целиком. Сейчас не будем нажимать ее, т. к. нам нужны как раз параметры конкретной карты (если вы уже вернулись на уровень редактирования вверх, щелкните по названию примененной карты, появившемуся вместо надписи «None» справа от названия канала в свитке Maps (Карты)).

5. Прежде всего, нам здесь понадобятся параметры свитка Coordinates (Координаты) (рис. 3.61). И более всего — следующие параметры:

Offset (Сдвиг);

Tiling (Мозаичность);

Angle (Угол).

6. При помощи группы параметров Tiling (Мозаичность), можно настроить количество повторов отображения карты текстуры на поверхности объекта по вертикали и по горизонтали. Первый параметр отвечает за горизонтальное дублирование карты, второй — за вертикальное. Чтобы рассчитать точные значения данных параметров, необходимо знать предполагаемые размеры кафельной плитки. Предположим, размеры плитки — 25?30 см. Размеры стены, на которую мы ее накладываем — 270?270. Следовательно, по горизонтали плитка должна повторяться 270: 25 = 10,8 раз, а по вертикали — 270: 30 = 9 раз. Вводим соответствующие значения в верхний и нижний параметр Tiling (Мозаичность). В результате, плитка уменьшилась и распределилась по поверхности стены (рис. 3.62).

7. Наложенную текстуру также можно перемещать по поверхности объекта. Для этого воспользуемся группой параметров Offset (Сдвиг). Уменьшая или увеличивая значения двух параметров Offset (Сдвиг), вы перемещаете текстуру по вертикали и по горизонтали.

8. Параметры Angle (Угол) позволяют вращать текстуру во всех направлениях. В нашем случае следует воспользоваться W-координатой для наклона текстуры. Разумеется, нет смысла наклонять текстуру кафельной настенной плитки. Но, например, если бы мы создавали текстуру напольной плитки или паркета, то их можно было бы расположить под углом в 45 градусов.

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

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

? При изменении перечисленных параметров, мы воздействуем на саму текстуру, а не на текстурируемый объект. Это означает, что количество раз отображения (Tiling), сдвиг (Offset) и наклон (Angle) текстуры остаются неизменными при наложении на объект, отличающийся по габаритным размерам. Это приведет к искажению размеров текстуры. В результате — под каждый очередной объект вы вынуждены будете создавать новую текстуру.

Распределение модификатором UVW Map (Координаты изображения)

Второй способ распределения текстуры по объекту гораздо более удобен и универсален. В дальнейшем, на практике, мы будем использовать преимущественно его.

Суть данного метода заключается в использовании специального модификатора, позволяющего влиять не на саму текстуру, а лишь на объект или совокупность объектов, в отношении которых она применяется. В результате — можно использовать одну и ту же текстуру на разных по форме и габаритным размерам объектах.

В главе 2 мы рассматривали некоторые модификаторы (Extrude, Face Extrude…). Я отмечал, что модификаторы бывают разные в зависимости от сферы и цели применения. Здесь мы рассмотрим модификатор распределения текстуры — UVW Map (Координаты изображения) на примере распределения текстуры декоративного камня.

1. Создайте в окне проекций Perspective (Перспектива) примитив Box (Куб). Значения его длины, ширины и высоты задайте одинаковыми — примерно 200 см. Это — подопытный куб, по которому мы будем распределять текстуру.

2. Откройте окно редактора материалов, выделите любой пустой слот и при помощи опций свитка Maps (Карты) задайте изображение из файла Kamen.jpg в папке Primeri_ScenGlava_3Kamen в качестве карты диффузного цвета.

3. Наложите данную текстуру на куб в сцене. Включите режим отображения материала в окнах проекций при помощи инструмента Show Standard Map in Viewport (Отображать стандартную карту в окне проекций). В результате — получился куб, как на рис. 3.63.

4. Закройте окно редактирования материалов, оно больше не понадобится. Выделите куб в сцене, перейдите во второй раздел командной панели, раскройте список модификаторов (Modifier List) (см. рис. 2.21) и выберите здесь пункт UVW Map (Координаты изображения).

5. Внешний вид материала на объекте немного изменился, а под стеком модификаторов появился свиток Parameters (Параметры), который содержит три основные группы параметров, позволяющих распределять материал по объекту: параметры способа наложения текстуры, параметры габаритных размеров контейнера текстуры, параметры повторения текстуры (рис. 3.64). Рассмотрим порядок работы с данными группами параметров.

• Варианты способа наложения текстуры на объект позволяют указать, как именно следует покрыть объект материалом. Выбор конкретного варианта здесь зависит от формы текстурируемого объекта. Например, если объект — это обычная плоскость, то подойдет вариант Planar (Плоский), если объект сферический — подойдет Spherical (Сферический), если объект кубический — подойдет Box (Кубический) и т. д. В нашем случае — объект кубический, поэтому выберите здесь вариант Box (Кубический). Если форма текстурируемого объекта не может быть описана какой-либо примитивной фигурой (например, при текстурировании мягкого кресла), то следует также выбирать тип Box (Кубический).

• Вторая группа параметров — параметры габаритных размеров контейнера текстуры позволяет задать размеры изображения материала. Как только вы применили модификатор UVW Map (Координаты изображения), в сцене появился оранжевый габаритный контейнер. Теперь текстура на самом деле накладывается именно на этот контейнер, а с него уже проецируется на текстурируемый объект. При помощи данной группы параметров, можно менять размеры габаритного контейнера, а вместе с ним и размеры текстуры на поверхности объекта. Задайте значения всех трех параметров габаритных размеров контейнера равными 78 см. Теперь изображение на поверхности объекта стало мельче и повторяться чаще.

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

6. Итак, при помощи параметров модификатора UVW Map (Координаты изображения), вы настроили размеры изображения материала (рис. 3.65). Далее рассмотрим порядок перемещения текстуры по поверхности объекта.

7. В стеке модификаторов нажмите кнопку с изображением маленького плюса — слева от названия примененного модификатора UVW Map (Координаты изображения). Раскроется структура данного модификатора, в которой присутствует лишь один пункт — Gizmo (Габаритный контейнер) (рис. 3.66). Выделите данный пункт.

8. Теперь вы находитесь в режиме редактирования позиции габаритного контейнера текстуры. Его можно двигать, вращать и масштабировать при помощи соответствующих манипуляторов (с которыми мы работали в главе 1). В шаге 5 вы уменьшили размеры габаритного контейнера до 48 см во всех направлениях, поэтому он стал меньше текстурируемого объекта и расположился в центре него. Например, если вы хотите, чтобы распределение текстуры началось от левого нижнего угла определенной грани, поместите в эту точку габаритный контейнер при помощи манипулятора движения (Select and Move). Обратите внимание, что во время движения габаритного контейнера, аналогичным образом двигается и текстура по объекту. Если текстуру необходимо, например, повернуть на 45 градусов, это можно сделать при помощи манипулятора вращения и окна точного ввода значений вращения. Закончив редактирование позиции контейнера, выйдите из режима его редактирования повторным нажатием по строчке «Gizmo» в стеке модификаторов.

Итак, при помощи модификатора UVW Map (Координаты изображения), мы изменили размер и позицию наложенного материала на конкретном объекте. При этом мы никак не затрагивали параметры самой текстуры, что позволяет в дальнейшем накладывать ее на другие объекты и также распределять. Поэтому данный метод является гораздо более удобным, чем предыдущий.

Подсказка.

Модификатор UVW Map (Координаты изображения) можно применять в отношении не только какого-то объекта, но и в отношении совокупности объектов одновременно. Создайте несколько объектов в сцене и выполните все вышеперечисленные действия в отношении них сразу (т. е. сначала выделите их вместе при помощи рамки, затем примените модификатор UVW Map (Координаты изображения) и так далее по шагам). В результате — материал будет одновременно распределяться по всем объектам сразу. Это очень удобно при текстурировании составных объектов. Например, вы создали модель мягкого дивана. Эта модель состоит из нескольких более простых по форме объектов. При текстурировании имеет смысл выделить их вместе, применить единый модификатор UVW Map (Координаты изображения) и затем применять конкретную текстуру матерчатой обивки дивана. Таким образом, на каждом элементе дивана материал будет расположен одинаково.

Текстурирование волос

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

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

Рассмотрим эту процедуру более подробно в следующих аспектах:

Преимущества и недостатки процедуры

К плюсам процедуры можно отнести:

  • отсутствие необходимости в ежедневной укладке волос. Теперь для создания прически достаточно одной расчески;
  • текстурирование можно проводить дома.

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

Виды текстурирования волос

В зависимости от того, по какой технологии проводится процедура, выделяют следующее виды текстурирования:

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

Текстурирование волос фото

Техники исполнения

Для всех названных видов текстурирования, кроме стрижки, используются различные средства. В зависимости от используемых вспомогательных средств, может быть два типа процедуры – безвредная завивка (биозавивка) и текстурирование с помощью химических средств. Биозавивка позволяет получить кудри различной величины и формы, создает волосам объема, делает пряди мягким и упругими.

Техник текстурирования волос довольно много. При этом различаются не только используемые химические средства, но и инструменты.

Наиболее популярными техниками являются:

  • перманентное текстурирование (или биозавивка). Подходит для всех типов волос. В составе раствора отсутствуют агрессивные вещества, разрушающие волос, так что процедура не портит здоровье волос;
  • гофре. Данная техника позволяет получить ровные волны различной величины и интенсивности с помощью специального утюжка. Аналогичного эффекта можно добиться, если лечь спать с множеством мелких косичек;
  • стайлеры. Хорошо подходят для укладки в домашних условиях. К этой группе инструментов относятся щетки для увеличения объема волос, щипцы для создания кудрей и утюжки для выпрямления локонов;
  • спреи. Удобны для домашнего использования. Среди наиболее известных марок можно назвать AvedaBeCurly для создания и закрепления кудрей, LushSea для легких локонов, SeaSolt для завивки пушистых волос, Awapuhi дополнительно обеспечивает защиту от внешних факторов, Ролланд позволяет создать эффект мокрых волос.

Также спрей можно сделать и своими руками. Для этого необходимо взять морской соли, кокосового масла и воды в пропорциях 2:1:20, смешать и залить в бутылку с пульверизатором. Получившимся спреем обработать волосы и сделать укладку.

Спрей для текстурирования волос

Процесс текстурирования в салоне

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

Химическое текстурирование обычно не рекомендуется:

  • для ломких и слабых волос;
  • людям с поврежденной кожей головы;
  • беременным и кормящим матерям;
  • людям с аллергиями.

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

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

Уход за волосами после процедур

Из всех видов текстурирования химическая завивка имеет наиболее негативное влияние на волосы. Поэтому после нее волосы особенно нуждаются в дополнительном уходе и особом обращении:

  • рекомендуется делать увлажняющие маски, там как химия сильно сушит волосы;
  • после мытья лучше позволять волосам высыхать самостоятельно, без фена;
  • при расчесывании следует использовать расческу с редкими зубцами;
  • для восстановления и питания волос можно использовать муссы и пенки.

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

Текстурирование больших объектов

Подскажите, как мне сделать текстуры для больших объектов. Модели игровые. Например, здания больше 20 метров в высоту.
Делать одной большой текстурой, конечно, можно. А если движок не потянет или здание там 50*50*50?

Чем здание 20-и метров высотой принципиально отличается от коридора 20-и метров длиной?


> Подскажите, как мне сделать текстуры для больших объектов. Модели игровые. Например, здания больше 20 метров в высоту.
>Делать одной большой текстурой, конечно, можно. А если движок не потянет или здание там 50*50*50?

Если здание высокое и большое дели на ярусы его, примерно так-http://smages.com/ee/c9/eec96c31881e06fbccbf98d6e9810f3f.jpg.htm
если будеш использовать одну текстуру на всё здание будет сильно кидатся в глаза тайлинг, и на высоте больше чем 15м уже нет разницы 2048 там, или 512.

Я имел ввиду «одной текстурой.» Не тайловой, а целой, на всё здание. Натайлить можно в фотошопе, и создать на этой основе текстуру с помазками, выбоинами и т.д. Если текстура неоднородная, а изменяется в пределах стены?

А вот второй способ интересный. Но ведь здесь тоже тайлы. Например, от края картинки до трубы. А я хотел узнать, как мне сделать одну большую текстуру для стен (для мелочей и обвеса отдельная текстура) или это нереально и придётся делить стены, для затайливания хотябы на три-четыре раза?

Илон Маск рекомендует:  Что такое код asp serverip

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

TRON
для «помазков и выбоин» используют декали, причем оооочень давно

>А вот второй способ интересный. Но ведь здесь тоже тайлы. Например, от края картинки до трубы.

У меня там площадь стен большая, без тайлинга ни как, да и там у меня плюс ко всему швы видны, потому что я сперва делаю, а потом думаю))
Тайлинг при таком раскладе будет сильно видно только если отойти на приличное расстояние, а этого сделать будет нельзя, да и обзор всё равно будет частично перекрыватся деревьями и другими объектами, + мип мапы размыливают, вобщем всё ништяк)

>А я хотел узнать, как мне сделать одну большую текстуру для стен (для мелочей и обвеса отдельная текстура) или это нереально и придётся >делить стены, для затайливания хотябы
>на три-четыре раза?
смотря какой размер здания, какое окружение и какие требования по текстурам.
дому на фотке как минимум 2-3 раза придется потайлить текстурку по ширине.

мегатекстура
или декали
или вертекс-освещение
или мультитекстуринг

а лучше все вместе

но 3d-редакторы этого ничего толком не умеют, а жаль.

the Wizzard
>но 3d-редакторы этого ничего толком не умеют, а жаль.
это некоторые 3d-моделлеры этого ничего толком не умеют, а жаль.

Это тоже. Хотя мне, как программеру, хочется больше процедурной генерации, чтобы можно было обойтись без 3д-моделлеров)

Декали не то, я имел ввиду статичные погрешности стены. Как сделать текстуру такого типа (только разнообразия ещё больше)? Можно ли обойтись без тайлинга, сделать мегатекстуру, поделить её на части, и развёртку тоже?

>Можно ли обойтись без тайлинга, сделать мегатекстуру, поделить её на части, и развёртку тоже?

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

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

the Wizzard
>но 3d-редакторы этого ничего толком не умеют, а жаль.
это если руки из жопы

>как программеру, хочется больше процедурной генерации, чтобы можно было обойтись без 3д-моделлеров
Синтетика нынче не в моде

TRON
Вертекс колор для неравномерности тона, декали (можно с нормалом или паралаксом), детейл маппинг если игрок захочит сопли по стенке размазывать. На крайняк несколько тайлов для разнообразия. А вообще огород городишь какой-то. Давно-бы уже сделал.

Сделал бы, если б умел. Я новичок в текстурах. Моделирование тоже поскольку-постольку. А тайлинг не нравится. Говорите, дом делить? Ну, стены ровные. Вроде:-)

TRON
еп, а че ты тогда в такие дебри лезишь ?
сделай хотябы как нибудь. а то блин вобще никак неумеешь а хочешь лучьше всех сделать. так это не бывает.

Фактура, текстура, конфигурации в композиции прически

Фактура – свойство, характеризующее строение поверхности. Различают гладкую, шероховатую, блестящую, матовую и другие фактуры. Фактура зависит от плотности и величины микроискажений поверхности. Элементы фактуры могут быть различными по величине: одни столь малы, что зрительно не различаются, другие воспринимаются как самостоятельные элементы формы и количество их достаточно мало, так что все они ясно различаются. Во втором случае элементы фактуры поверхности становятся уже элементами рельефа поверхности.

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

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

Принято классифицировать волосы по следующим параметрам:

1. по форме (текстуре) – прямые, волнистые, курчавые;

2. по типам (фактуре): по длине (длинные, средние, короткие); по толщине (толстые, тонкие, средние); по жирности (жирные, нормальные, сухие); по эластичности (эластичные, пористые), по степени здоровья (здоровые, истощенные);

3. по цвету (темные, светлые, рыжие);

4. по расе (европейский, азиатский, африканский типы волос);

5. по степени подверженности химическому воздействию (неокрашенные, окрашенные, волосы с химической завивкой).

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

Фактура влияет на восприятие пропорциональных отношений формы. Восприятие фактуры зависит и от характера освещения поверхности. Цвет значительно смягчается на поверхности пористых волос и усиливается на блестящих.

Текстура волоса играет значительную роль при создании причесок. Большинство стилистов приходят к мнению, что прямые волосы более здоровы, а кудрявые – наиболее уязвимы (матовые, тусклые, сухие). Современные тенденции в парикмахерском искусстве призывают подчеркивать природную текстуру волоса – прямые еще больше распрямляются, а кудри фиксируются.

Понятие «конфигурация» также важно при конструировании образа. Конфигурация – придание формы, расположение, внешний вид, очертание, образ; взаимное расположение предметов; соотношение составных частей сложных предметов. В парикмахерском искусстве под конфигурацией понимается – внешний вид прически, взаимное расположение элементов прически и соотношение составных частей (прядей, локонов и т.п.). Конфигурация напрямую зависит от фактуры и текстуры волоса.

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

1. Согласны ли Вы, что цвет является важнейшим средством композиции. Дайте развернутое определение понятия «цвет». Назовите три основные характеристики цвета. Дайте определения.

2. Известно, что существуют основные и дополнительные цвета. Объясните, как они используются в парикмахерском искусстве.

3. Перечислите семь типов основных контрастов. Раскройте их сущность.

4. Объясните, в чем состоит основное отличие в смешении красителей для волос и обычных акварельных красок.

5. Каким образом освещение влияет на цвет волос. Объясните с точки зрения теории цвета.

6. Раскройте сущность цветовой композиции. Объясните, как цветовая композиция применяется в процессе создания прически.

7. Дайте определения понятиям «фактура», «текстура», «конфигурация». В чем заключается особенность данных понятий в парикмахерском искусстве.

т х т х т
х т/х т/х т/х х
т т/х т/х т/х т
х т/х т/х т/х х
т х т х т

Составьте два квадрата, состоящих из разноцветных квадратиков любого размера, подбирая цвета в соответствии с теорией цвета и цветовой композицией:

1) Середина квадратов 3х3; в первом квадрате – теплые цвета, во втором – холодные.

2) Рамка – для обоих квадратов чередование теплых и холодных цветов. В первом квадрате угловые квадратики теплые, во втором – холодные.

Упражнение 3. ВЫПОЛНЕНИЕ ФРОТТАЖА

ФРОТТАЖ (растушевка), выполненный углем (или карандашом), проявляет фактуру поверхности, по которой растирается уголь. Например, если вы попробуете применить технику фроттажа на деревянной поверхности, то добьетесь эффекта фактуры дерева. Используйте тонкую бумагу (типа газетной) и попрактикуйтесь в растушевке на разнообразных фактурных поверхностях (мягких и твердых). Данное упражнение поможет вам в разработке собственных идей в использовании сочетания различных фактур в одном образе.

Изобразите графически фактуру волос (кудрявые, прямые и др.)

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

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

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

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

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

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

СЛОВАРЬ ПРОФЕССИОНАЛЬНЫХ ТЕРМИНОВ

Асимметрия – принцип композиции, применяющийся для подчеркивания динамичности формы. Две неравные части, уравновешенные между собой в прическе.

Ахроматичность цвета – серые тона, не имеющие насыщенности и различающиеся только по светлоте; все градации серого от белого до черного.

Волос – ороговевшее нитевидное образование, имеет конусообразное строение; могут быть разных видов, типов, различаются по цвету.

Гармония (цветовая) – цветовые сочетания, производящие впечатление колористической цельности, цветовой уравновешенности, цветового единства. Уравновесить цвета можно равными количествами главных цветов, равной светлотой, равной насыщенностью.

Дисперсность (от лат. dispersus — рассеянный, рассыпанный) — характеристика размеров частиц в дисперсных системах.

Интенсивность – уровень концентрации цвета (преобладание того или другого тона).

Колбочки – рецепторы, чувствительные к свету, обеспечивают цветовую восприимчивость. Различают три вида чувствительных к цветовым областям колбочек (чувствительные к красному, зеленому, синему).

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

Колорит – система цветовых сочетаний и взаимоотношений, образующая эстетическое единство.

Колориметрия – цветовые измерения спектральных цветов, вызываемые цветовыми ощущениями.

Комплементарные цвета— цвета расположенные напротив друг друга на цветовом круге (например, красный и зеленый).

Композиция – составление, объединение всех элементов формы в органически единое целое; композиция в цвете – взаимное расположение и соотношение цветовых пятен.

Контраст цветовой – характеристика разницы между двумя цветностями.

Конфигурация– взаимное расположение элементов прически и соотношение частей прически, внешний вид прядей.

Масштабность – соразмерность формы и элементов по отношению к человеку, другим формам и окружающему пространству.

Меланин – биологический пигмент, который в зависимости от его количества и степени дисперсности придает волосам различные цветовые оттенки — от темных до светлых тонов. Чем больше пигмента в волосах, тем темнее их цвет. Содержание меланина определяет, какого цвета волосы: черные, каштановые, рыжие или светлые. Если в волосах совсем отсутствует меланин, они имеют абсолютно белый цвет.

Насыщенность цвета — % присутствия в цвете темно-серого и черного тонов.

Палочки– рецепторы, работающие при низких освещенностях, обеспечивают так называемое сумеречное зрение. Воспринимают только ахроматические цвета.

Светлота– степень разбеленности (% присутствия в цвете белого или светло-серого тонов).

Симметрия – от греч. «соразмерность», две зеркально равные части, расположенные друг относительно друга так, как предмет в его зеркальном отражении. Выделяют зеркальную и радиально-лучевую симметрию.

Текстура— это качество объекта, которое мы ощущаем, прикасаясь к нему. Это поверхность предмета, которую мы можем ощутить, а также — увидеть и представить себе ощущение прикосновения к ней. Натуральная текстура волос – прямые гладкие, волнистые, курчавые.

Текстурирование – проработка бритвой всей длины волос в различных направлениях.

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

Фактура – характер поверхности; в парикмахерском искусстве фактура – особенности волоса (различается по толщине, по степени эластичности и т.д.).

Феомеланин – красно-желтый пигмент, имеет форму клубочков или частиц с мельчайшими пластинами, пигментные зернышки меньше по размеру, содержат элемент железа, отвечает за тон блондина.

Форма – очертания, внешний вид; форма готовой работы может быть мягкая, пластичная, кареобразная, геометрическая т.п.

Хроматичность цвета – интенсивная, цветовая насыщенность. Восприятие цвета в зависимости от окружающего фона. Спектральные цвета и пурпурные, которых нет в спектре.

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

Цветность (тон цветовой) – обозначение, название цвета.

Эомеланин – коричнево-черный пигмент, отвечает за глубину цвета (насколько волос светлый или темный). Представляет собой настоящие пигментные зернышки.

«Текстурирование»

Текстура — это некоторое изображение, которое надо определенным образом нанести на объект, например, для придания иллюзии рельефности поверхности.

Наложение текстуры на поверхность объектов сцены повышает ее реалистичность, однако при этом надо учитывать, что этот процесс требует вычислительных затрат, особенно если OpenGL не поддерживается аппаратно.

Для работы с текстурой следует выполнить следующую последовательность действий:

выбрать изображение и преобразовать его к нужному формату;

передать изображение в OpenGL;

определить, как текстура будет наноситься на объект и как она будет с ним взаимодействовать;

связать текстуру с объектом.

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

Считывание графических данных из файла и их преобразование можно проводить вручную. Например, произвести чтение файла BMP с параметрами: 256x256x24бит позволит следующий код:

fread(bmp_header, 54, 1, f);

fread(tex_buf, 3, 256*256, f);

Здесь из файла filename вначале считывается заголовок (54 байта), а затем изображение, которое помещается в буфер текстуры tex_buf. Так как каждый пиксел здесь кодируется тремя байтами, общий объем прочитанных данных будет равен 256*256*3 байт. Важно учитывать, что каждый пиксел в BMP-файле хранится в формате BGR, поэтому необходимо в буфере текстуры обменять байты B и R для каждого пиксела.

Можно также воспользоваться функцией auxDIBImageLoad, входящей в состав библиотеки GLAUX (для ее использования надо дополнительно подключить glaux.lib), которая сама проводит необходимые операции.

При создании образа текстуры в памяти следует учитывать следующие требования:

размеры текстуры, как по горизонтали, так и по вертикали должны представлять собой степени двойки. Это требование накладывается для компактного размещения текстуры в текстурной памяти и способствует ее эффективному использованию.

надо предусмотреть случай, когда объект после растеризации оказывается по размерам значительно меньше наносимой на него текстуры. Чем меньше объект, тем меньше должна быть наносимая на него текстура и поэтому вводится понятие уровней детализации текстуры (mipmap). Каждый уровень детализации задает некоторое изображение, которое является, как правило, уменьшенной в два раза копией оригинала. Такой подход позволяет улучшить качество нанесения текстуры на объект.

При использовании в сцене нескольких текстур, в OpenGL применяется подход, напоминающий создание списков изображений (так называемые текстурные объекты).

Сначала с помощью команды

void glGenTextures (GLsizei n, GLuint* textures)

надо создать n идентификаторов текстур, которые будут записаны в массив textures. Перед началом определения свойств очередной текстуры следует сделать ее текущей («привязать» текстуру), вызвав команду

void glBindTexture (GLenum target, GLuint texture)

где target может принимает GL_TEXTURE_2D, а параметр texture должен быть равен идентификатору той текстуры, к которой будут относиться последующие команды.

Для того, чтобы в процессе рисования сделать текущей текстуру с некоторым идентификатором, достаточно опять вызвать команду glBindTexture() c соответствующим значением target и texture. Таким образом, команда glBindTexture() включает режим создания текстуры с идентификатором texture, если такая текстура еще не создана, либо режим ее использования, то есть делает эту текстуру текущей.

Так как не всякая аппаратура может оперировать текстурами большого размера, целесообразно ограничить размеры текстуры до 256×256 или 512×512 пикселей. Отметим, что использование небольших текстур повышает эффективность программы.

Наложение текстуры на объекты

При наложении текстуры, как уже упоминалось, надо учитывать случай, когда размеры текстуры отличаются от оконных размеров объекта, на который она накладывается. При этом возможно как растяжение, так и сжатие изображения, и то, как будут проводиться эти преобразования, может серьезно повлиять на качество построенного изображения. Для определения положения точки на текстуре используется параметрическая система координат (s,t), причем значения s и t находятся в отрезке [0,1].

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

Для изменения различных параметров текстуры применяются команды:

void glTexParameter[i f] (GLenum target, GLenum pname, GLenum param)

void glTexParameter[i f]v (GLenum target, GLenum pname, Glenum* params)

При этом target принимает значение GL_TEXTURE_2D, pname определяет, какое свойство будем менять, а с помощью param или params устанавливается новое значение.

Возможные значения pname:

GL_TEXTURE_MIN_FILTER

параметр param определяет функцию, которая будет использоваться для сжатия текстуры. При значении GL_NEARESTбудет использоваться один (ближайший), а при значенииGL_LINEARчетыре ближайших элемента текстуры. Значение по умолчанию:GL_LINEAR

GL_TEXTURE_MAG_FILTER

параметр paramопределяет функцию, которая будет использоваться для увеличения (растяжения) текстуры. При значенииGL_NEARESTбудет использоваться один (ближайший), а при значенииGL_LINEARчетыре ближайших элемента текстуры. Значение по умолчанию:GL_LINEAR

GL_TEXTURE_WRAP_S

параметр paramустанавливает значение координаты s, если оно не входит в отрезок [0,1]. При значенииGL_ REPEATцелая часть s отбрасывается, и в результате изображение размножается по поверхности. При значенииGL_CLAMPиспользуются краевые значения: 0 или 1, что удобно использовать, если на объект накладывается один образ. Значение по умолчанию:GL_REPEAT

GL_TEXTURE_WRAP_T

аналогично предыдущему значению, только для координаты t

Использование режима GL_NEAREST повышает скорость наложения текстуры, однако при этом снижается качество, так как в отличие от GL_LINEAR интерполяция не производится.

Следующая программа демонстрирует общий подход к созданию текстур:

Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL