Текстурирование автомобиля
Владимир Верстак
Текстурирование не менее сложная и увлекательная задача в 3D графике, нежели само моделирование. По этому вопросу написано много статей и уроков. Я же попробую высказать свою точку зрения на текстурирование модели и в частности такой сложной модели как, авто. Чтобы было проще, я решил разделить урок на несколько частей. В первой части я собираюсь описать основы текстурирования, во второй более подробно остановиться на деталях. Так как текстурирование неразрывно связано с рендером, то и говорить мы будем и о том и о другом. Почему именно в связи с рендером? Да очень просто, Вы когда-нибудь обращали внимание на то, как на современных компьютерах даже сложная геометрия без текстур рендерится достаточно быстро. Но стоит нам ввести в сцену материалы с рейтрейс отражениями (а без них в нашей работе никак), GI или мягкие тени, как тут же время рендера увеличивается в разы или даже десятки раз. Как обычно, прежде чем что-то делать, нужно определиться для каких целей нам нужна отекстуренная модель. Если это для игр или Интернета, то нужна низкополигональная модель с хорошими текстурами. Если же нам не принципиален размер модели (я имею в виду кол-во полигонов) и время рендера, то стоит больше внимания уделить качественной модели, материалам и, конечно же, текстурам (которые в такой модели могут занимать весьма незначительную часть). Дело в том, что я придерживаюсь той точки зрения, что все, что можно сгенерировать при помощи процедурных карт и окрасить при помощи материалов именно так и нужно делать (просто такие материалы дадут максимальное качество, возможность на ходу менять параметры и не занимают дисковое пространство). Естественно все в разумных пределах. Например, я не стал бы делать номерной знак на машине при помощи моделирования с последующим наложением материалов, если только он не будет основной деталью изображения :-). Опять же не следует уделять слишком пристальное внимание материалам, находящимся в салоне, который кроме как через лобовое стекло и виден-то не будет. Очень часто, пытаясь сделать реалистичные материалы, мы так нагружаем процессор, что тестовый рендер длится часами. Хочу предостеречь Вас на этот счет. Если хорошенько подумать, то всегда найдется то, при помощи чего можно оптимизировать сцену. К примеру, выключить из рендера колеса, которые не видны за кузовом авто, но у которых протектор на покрышке сделан геометрией, а материал диска использует рейтрейс отражения и т.д. Прежде чем приступить к непосредственному выполнению самой задачи, давайте обратимся к теории. Что делает модель автомобиля реалистичной (я не имею в виду геометрию, коль скоро мы начали говорить о текстурировании)? В первую очередь это отражения, затем свет и тени, которые помогают ощутить объем и, конечно же, окружение. На рис. 1 и 2 две фотографии различных автомобилей. рис.1 рис.2
На первой фотографии отражения очень жесткие, что с одной стороны привносит в фото некоторый хаос, но позволяет лучше ощутить пространство. На фрагменте фотографии (рис. 3) хорошо видно как отражаются в капоте деревья, небо, а на крыле трава. Такие отражения могут появиться, только если краска покрыта толстым слоем лака и отполирована. Пытаясь построить такие отражения на Вашей модели нужно иметь в виду, что с точки зрения моделирования вся геометрия должна быть построена безукоризненно, иначе в отражениях Вы увидите все неровности кузова. Блики не имеют жестких границ - они более размыты, чем в авто на рис.2. У желтого автомобиля более мягкие очертания, видна глубина цвета и отражения не такие жесткие (рис. 4), но вместе с тем он выглядит ни чуть не хуже. рис.3 рис.4
Естественно, что в зависимости от той обстановки в которой Вы моделируете; будь то выставочный павильон с искусственным освещением, улица солнечного дня или наоборот пасмурного, по разному нужно подходить и к материалам. Рассмотрим общий случай. В качестве исходной модели я возьму сделанную специально по этому случаю модель BMW 5 серии. Итак, вот исходное изображение пятерки без текстур (рис. 5). рис.5
Для начала установим в сцену 3 светильника (хотя можно и больше), один из которых будет ключевым и он же будет тенеобразующим источником света. О том, как это сделать вы можете прочитать в моем предыдущем уроке по освещению. Настроим свет так, чтобы он в большей степени нас устраивал и не требовал коренных изменений. Дальнейшие изменения освещения должны быть незначительными, т.к. освещение влияет на восприятие материалов и текстур и может потребовать настройку этих компонентов повторно. рис. 6
Сразу же хочу Вас предупредить о том, что навряд ли вид отрендеренного вами авто будет в точности соответствовать моему. Я сам никогда не копирую старых настроек материалов, т.к. в другой сцене они обычно выглядят иначе и тому ряд причин, не только освещение. А посему попробуем разобраться с настройками этого материала. рис. 7
Конечно же, можно было и не усложнять материал картой Fallof, но с ее помощью можно получить некоторый контроль интенсивности отражений на поверхности. Настройки этой карты представлены на рис. 8. рис. 8
Ну а в рейтрейс карте нет почти никаких изменений по отношению к установкам по-умолчанию, кроме цвета окружающей среды, который я сделал светло-голубым (рис. 9) рис. 9
Применив сейчас этот материал к кузову нашего авто, можно сделать тестовый рендер (рис. 10) рис. 10
Что ж, по-моему, неплохо. Вполне возможно, что Вы обратили внимание на то, что на изображении отсутствуют блики; пусть это Вас не смущает, просто я отключил их генерацию у источников света. Я предпочитаю ставить их отдельно, когда можно управлять их местоположением и интенсивностью вне зависимости от основных источников света. рис. 11
Я все еще не настраивал бликов, специально не готовил панорамное изображение для сферы, но то, что получилось на рис. 12 вне сомнения лучше предыдущего. рис. 12
Здесь уже можно заметить новые отражения не только на капоте, но и на крыше, крыльях и дверях. рис. 13
В настройках маппинга ничего менять не нужно, просто жмем OK и получаем нечто похожее на рис. 14. рис. 14
Это развертка нашего лобового стекла. Ее нужно скопировать в любую программу, работающую с растровыми изображениями, где Вы сможете сделать карту маски (например в Фотошоп). Если Вы не пользуетесь программами захвата изображения с экрана, то копирование можно провести через буфер обмена; клавиша Print Screen (справа вверху на клавиатуре), с последующей вставкой в файл при помощи Ctrl + v (стандартная операция). Сделав отступы внутрь я, используя в качестве бэкграунда скопированное изображение, получил вот такую маску для моего стекла (рис. 15). рис. 15
Итак, сам материал. Для этих целей я использую материал Blend (рис. 16), где GlassFront.jpg и есть наша маска. рис. 16
А сейчас познакомимся поближе с материалом стекла. Материал 1 - это наша окантовка. Здесь используется стандартный материал с прозрачностью, равной 80 и цветом, соответствующим тому цвету, который мы хотим видеть на краях стекла (рис. 17). рис. 17
В качестве карты отражения я использовал карту Fallof, настройки которой идентичны настройкам такой же карты, использованной при создании материала кузова (рис. 7), с той лишь разницей, что величина отражения у меня составила 45 вместо 60. рис. 18
Кроме того, я использую 2-х сторонний материал и шейдер Phong, хотя большой разницы нет, но Phong дает более мягкое сглаживание. Если Вы обратили внимание, то, наверное, заметили отсутствие карты преломления в слоте Refraction. Хотя стекло и является материалом с преломлениями, но при незначительной его толщине и, учитывая расстояние, с которого это все рендерится, считаю нецелесообразным использовать в данном случае преломления. Эффект от этого получается почти незаметный, а процессор получает дополнительную нагрузку. Но при желании Вы можете поэкспериментировать, используя карту Raytrase или Reflect/Refract. Ну а сейчас пришло время продолжить разговор об организации сцены, т.е. займемся нашими отражениями. Для этого поместим в сцену 5 примитивов Plane, один из которых будет сверху (имитировать небо), а остальные 4 по сторонам автомобиля. На рис. 19 плоскости пронумерованы. Пятая плоскость находится вслед за четвертой по правую сторону от камеры. Все плоскости расположены на небольшом расстоянии от автомобиля. рис.19
Не забудьте проследить, чтобы нормали этих плоскостей были обращены к автомобилю. После этого на плоскостях 2-5 накладываем текстуры с изображениями, которые будут отражаться в нашем авто. Для всех своих плоскостей я воспользовался одной фотографией, хотя можно использовать разные - дело вкуса. Плоскость под № 1 не имеет текстуры, она просто белая с уровнем самосвечения (Self-Illumination) равным 100. У всех пяти плоскостей в настройках (кликнем правой кнопкой по плоскости и в выпадающем меню выбираем Properties) выставляем параметры как на рис. 20. рис. 20
После того, как все сделаете можно провести тестовый рендер. Возможно, понадобится подкорректировать положение текстур, поменять значение уровня самосвечения (если использованы темные фотографии). Иногда приходится менять положение плоскости имитирующей небо для того, чтобы найти оптимальные отражение. рис. 21
Итак, подведем итоги первой части нашего урока.
Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=6130 |