Кто не хочет читать ONLINE, можете скачать доступные части книги:
Скачать часть1 (1.1 Мб) - Ознакомление с программой 3ds MAX
Скачать часть2 (1.4 Мб) - Объекты произвольной формы
Скачать часть3 (2.2 Мб) (не завершена) - Текстурирование
Как уже когда-то вскользь упоминалось, объекты Editable Mesh и Editable Poly имеют такие параметры, как цвета вершин. Кроме того, вершины других объектов тоже могут быть раскрашены при помощи специального модификатора Vertex Paint, который появился в 3ds MAX 3.
В инструментах редактирования Editable Poly и Editable Mesh в режиме работы с вершинами есть группа параметров Vertex Properties, а в ней группка - Edit Vertex Color.
Здесь такие свойства как Color (цвет, который можно редактировать при помощи специального меню, оно открывается по клику на прямоугольник с цветом), Illumination (свечение, редактируется так же) и Alpha - в процентах. Все эти свойства можно менять инструментами на базовом уровне.
Так же есть группа параметров Select By и на выбор - Color или Illumination, и три поля R (red - красный) G (green - зелёный) и b (blue - синий) - здесь указывается величина допустимого разброса цветов, то есть на сколько градаций по каждой из трёх составляющих может отличаться цвет, чтобы вершины всё равно были выбраны по нажатии Select By.
Итак, как же можно задействовать вот эти вот цвета? Честно говоря, для меня остаётся очень большой и серьёзной загадкой, как задействовать Alpha и Illumination. Свойства эти существуют, а вот инструментов, их задействующих, чего-то найти не могу. Возможно, эти каналы нужны для игрового применения, и задействуются уже самими программистами, которые дальше вставляют приготовленные на 3ds MAX объекты в свои программы. Но не суть. Мы будем рассматривать только Vertex Color, кому понадобится вдруг Alpha и Illumination - думаю, без труда потом разберутся, они аналогичны Vertex Color.
Итак, как посмотреть, какого цвета у нас вершины? По умолчанию вершинам цвета не присвоены. Если при выделении тех или иных вершин у нас показывается белый квадратик с цветом, это ещё не значит, что вершины у нас белые. Если мы их не раскрашивали (то есть, не меняли цвета в квадратике при выделенной хотя бы одной вершине), то у нас просто ни одной из вершин цвета не присвоены.
В общем, если выделить вершину и начать крутить цвет в квадратике Vertex Color, то сразу всем вершинам присваиваются цвета. Выделенным - тот цвет, который мы выберем для них, а всем остаьлным - чёрный. Почему так? дело в том, что Vertex Color на самом деле это нулевой Map Channel. Исторически сложилось, что изначально вершины не раскрашивали, а потом, когда в одной из версий ПО вдруг придумали эту опцию, чтобы не нарушать совместимость старых проектов с новыми программами, нумерацию Map Channel менять было просто нельзя.
Например, если мы на старой версии программы приготовили развёртку в первом мап-канале, а потом купили более новую версию, с поддержкой Vertex Color, то мы хотим, чтобы при открытии старого проекта новой программой у нас развёртка всё равно была именно в первом канале. Поэтому для Vertex Color отвели нулевой канал, а под Illumination и Alpha - и того минус первый и минус второй. Вот такие дела.
На самом деле канал Vertex Color полностью аналогичен всем остальным каналам карт, и в него даже можно применить модификатор UVW Map или залезть при помощи редактора модификатора Unwrap UVW. В этих модифиакторах нельзя в поле Map Channel поставить цифру 0, но можно выбрать пунктик Vertex Color Channel, что и будет означать наше залезание в нулевой канал.
Возникает вопрос: а если всё так, если Vertex Color действительно канал карт, то при чём же здесь цвета? А цвета при том, что каждому цвету можно сопоставить координаты в пространстве UVW. Для Vertex Color можно даже сказать, что это пространство RGB. Интенсивность каждого цвета расчитывается исходя из значения координаты по каждой из осей. И цвета соответствуют кубу размером 1х1х1, и вычисляются так:
R = 256·x, G = 256·y, B = 256·z
(256 - число градаций цвета в стандартном RGB 24-битном формате).
В данном случае - x, y, z - это координаты в пространстве RGB, внутри куба 1x1x1. В случае, если координаты выходят за этот самый куб (может же быть и такое!) то они пересчитываются - от значения координат отнимается вся целая часть (если координаты отрицательны - то напротив, добавляется такое целое число, чтобы координата попала в интервал между нулём и единицей), и далее пересчитывается в цвет по вышеуказанным формалам.
Или, можно трактовать это иначе. Можно представить себе, что в куб размером 1х1х1 в пространстве RGB залита трёхмерная текстура. Угол куба с координатами (0,0,0) чёрный, с координатами (1,0,0) - красный, (0,1,0) - зелёный, (0,0,1) - синий, (1,1,0) - жёлтый, (1,0,1) - сиреневый-пурпурный, (0,1,1) - бирюзовый-голубой, (1,1,1) - белый. А между этими углами цвета плавно переходят один в другой. Таким образом, координаты вершин в такой вот трёхмерной текстуре непосредственно определяют их цвет! И для удобства нам даны инструменты, позволяющие управлять не координатами через цифры, не пересчитывать ничего, а непосредственно задавать сам цвет вершины.
И естественно, трёхмерная текстура цвета вершин повторяется в этом пространстве периодически, поэтому если вершина и вылезет за границу основного куба, ей всё равно будет присвоен какой-то цвет. Вот только через диалог инструментов объектов Editable Poly или Editable Mesh мы не сможем присвоить вершенам координаты, значением больше единицы. Зато через модификаторы UVW Map или Unwrap UVW вполне можно это сделать.
Встаёт такой вопрос: а есть ли действительно такая процедурная карта, которую можно залить в куб 1x1x1, чтобы она там раскрашивала вершины в некоторые цвета, согласно их координатам? Да, такая процедурная карта есть, и она называется Vertex Color. Она как раз по умолчанию настроена таким образом, чтобы задействовать цвета вершин, которые можно присвоить при помощи инстурументов Editable Mesh и Editable Poly.
Но пока мы оставим катру Vertex Color напотом, поговорим ещё о таких вот вещах. Стало быть, присваивая цвета вершинам в инструментах редактирования базовых объектов Editable Mesh и Editable Poly, мы меняем их координаты в UVW (или, можно сказать, RGB) пространстве нулевого канала? А можно ли подобным образом менять координаты в другом мап-канале? Нет, подобным образом предусмотрено только для нулевого канала. Для всех остальных - только через модификаторы Unwrap UVW и UVW Map. Но карту Vertex Color применить можно не только для нулевого канала! Хотя нулевой стоит в ней по умолчанию, но его можно изменить на абсолютно любой номер! Кроме, правда, отрицательных номеров. Если бы можно было Map Channel для карты Vertex Color менять на отрицательное значение, то тогда было бы понятно, как задействовать такие свойства вершин, как Illumination и Alpha, расположенные в мап-каналах с отрицательными номерами.
Итак, получается, что карты можно применить и в нулевой мап-канал тоже. А карту Vertex Color - не только в нулевой. Но если мы хотим поместить раскраску не в нулевой канал? Допустим, нулевой канал у нас уже занят, под ту же самую раскраску, или под развёртку, а мы хотим создать ещё одну раскраску для других целей? Как мы видели, у материала много свойств, не только Diffuse. Есть ещё такое свойство, как Illumination - самосветимость, оно тоже может быть цветным (к слову сказать сразу - свойство вершин Illumination, которому соотверствует мап-канал с отрицательным номером никакого отношение к одноимённому свойству материала не имеет!). Или, цвета вершин можно использовать так же и в вспомогательных целях, но для разных вспомогательных целей нужна своя раскраска. Так что же? Вводить цвета вершин через пересчитывание координат? Нет! Есть специальный модификатор - Vertex Paint, который позволяет расскрасить объект в любом мап-канале, на выбор. Не обязательно в нулевом. При том, его инструменты для расскрашивания гораздо более разнообразны, чем нам предлагается в инструментах редактирования объектов Editable Mesh и Editable Poly.
Прежде, чем перейти и к карте Vertex Color, и к модификатору Vertex Paint, закончим сначала с основными вопросами.
А с основными вопросами у нас ещё вот что: оказывается, в режиме работы с полигонами (многоугольниками) (Editable Poly) или с гранями в Editable Mesh в группах параметров Polygon Properties / Surface Properties тоже есть такой параметр как Vertex Color, однако на сей раз он выглядит более скромно. Инструменты Select By... отсутствуют. Почему, хотя речь идёт о гранях, всё равно написано Vertex Color? Кстати, если выбрать грань или многоугольник и поменять его цвет, то изменится цвет грани, а вокруг будут резкие границы. В то время, как в режиме работы с вершинами, если выделить одну вершину и поменять её цвет, он будет плавно перетекать в цвета соседних вершин, никаких резких границ не будет. В чём же дело в данном конкретном случае? А дело в том, что присваивая Vertex Color грани, мы в пространсве UVW (RGB) отделяем эту грань от остальной развёртки как будто её выделили и применили команду Break в редакторе модификатора Unwrap UVW. На деле же, координаты наложения текстур хранятся именно в вершинах, грань лишь помнит, на какие из этих вершин она натянута. В разных пространствах одна и та же грань может быть натянута на совершенно разные вершины.
И второе из основного - это как можно посмотреть цвета вершин в окнах проекций? Дело в том, что если кто-нибудь зайдёт в навигатор материалов и применит какому-нибудь материалу карту Vertex Color, то у неё не будет кнопочки Show Map In Vievport .
Для таких целей существует специальная опция во вкладке меню Display (это та, что справа, значок , если кто забыл). Во вкладке Display в самом-самом низу предпоследняя группа параметров Display Properties. И там самый последний пункт - Vertex Color. Если его нажать, объект может стать либо ослепительно белым, либо чуть поярче, чем был изначально, либо цветным.
Белым он станет если все вершины белые, либо все не раскрашенные. Цветным - если вершины раскрашены в разные цвета. А чуть ярче - если на объекте находится материал с картой, для которой нажата кнопочка Show Map In Vievport . Чтобы увидеть сами цвета вершин, надо найти в редакторе материалов тот материал, который применён к данному объекту и все такие кнопочки для всех его карт повыключать. Будьте внимательны, такие кнопочки есть не только у карт, но и у самих материалов (позволяют отображать в окнах проекций сразу несколько текстур, применённых к материалу), их тоже надо выключить. Тогда мы увидем цвета вершин объекта.
Напротив флажка Vertex Color во вкладке Display есть небольшая кнопочка Shaded. Если её нажать, объект будет оттенённым, то есть не будет ярко светиться, как когда эта кнопка выключена. В общем, нужны и тот и другой режим. Когда Shaded выключено, мы видем непосредственно цвета вершин без искажения, какие они есть на самом деле, а если Shaded включен, то объект смотрится более естественно, и мы можем оценить, как он будет смотреться с тенями.
Если кликнуть на объект правой кнопкой мыши, и в появившемся меню выбрать пункт Properties, мы попадём в окно со свойствами объекта, где тоже есть подруппа параметров Display. И в конце этого списка есть пункт Vertex Channel Display. В общем, он дублирует то, что мы только что рассматривали во вкладке Display. Поставишь флажок - будут отображаться цвета вершин, уберёшь - не будут. И кнопка Shaded тут тоже есть. Но есть и кое что ещё. Разворачивающееся меню, в котором по умолчанию стоит Vertex Color, но можно выбрать и Alpha, и Illumination, и Map Channel Color, и Soft Selection Color. Таким образом, Alpha и Illumination можно посмотреть в цвете, но опять же - как использовать при конечной визуализации - не понятно. Визуализировать (срендерить) цвета вершин можно только через карту Vertex Color, а она не достаёт до Alpha и Illumination. Возможно, в каких-нибудь новых версиях 3ds MAX это сделают...
Если выбрать Map Channel Color, и в окошке снизу указать номер, то мы увидим цвета вершин для указанного мап-канала. Вот как будет выглядеть наш динозавр с созданной в первом мап-канале развёрткой (о чём писалось ранее, в главах о приготовлении развёртки) если включить для него этот режим для мап-канала 1.
Рис. 25.1. Отображение в режиме Vertex Color (Shaded) с параметрами Map Channel Color = 1 |
Швы видны потому, что мы в этих местах делали разрезы. И последний пункт в менюшке - Soft Selection Color работает если обект редактировался со включенной опцией Soft Selection, и цветами показывается мягкое выделение, тем же цветом, каким отображаются сами вершины в этом режиме при редактировании объекта.
И на последок скажем, что модификаторы Edit Mesh и Edit Poly, в отличие от инструментов редактирования базовых объектов этого типа, не дают возможности управлять цветами вершин.
Коль уж зашла речь об этой карте, давайте её досконально рассмотрим. Тем более, параметров у неё совсем-совсем немного.
Перво-наперво, хочется сказать, что хотя по сути своей это получается трёхмерная процедурная карта, тем не менее, в навигаторе карт и материалов в пункте 3d Maps (если его выбрать) этой карты не будет. Она будет находится в пункте Color Maps.
Второе - параметры. У этой карты нет такой группы параметров, как Coordinates, которые есть у остальных карт. Кстати, у трёхмерных процедурных текстур есть группа параметров Coordinates. Может быть, Vertex Color не входит в семейство 3d карт потому, что не имеет многих характерных для них групп параметров, и по набору этих самых параметров действительно более схожа с картами из семейства Colors.
Итак, параметры. Их очень мало.
Map Channel - тут уже всё обсудили.
Sub Channel - подканал. Здесь можно выбрать одну из трёх компонентов цвета. По умолчанию стоят все All. Зачем нужно разделять на компоненты - потом узнаем. В общем, можно и прямо сейчас сказать. Для нецветных свойств. Вместо того, чтобы под каждое нецветное свойство, если мы хотим обозначить их при помощи Vertex Color, отводить по своему мап-каналу, можно интенсивностью каждой из трёх компонент цвета для каждого из трёх свойств задать значения. Ещё эти компоненты можно использовать как карты-маски, которые обозначают участки, на которые следует наложить другие карты. Об этом речь пойдёт потом.
Channel Name - согласуется уже со свойствами самого объекта, к которому применён материал с картой Vertex Color. Чтобы этот пункт меню стал доступным, чтобы там стало что-нибудь написано, надо применить материал с этой картой к объекту, с которым работали на утилите Channel Info. Мы пока эту утилиту не рассматривали, и не будем рассматривать пока свойство Channel Name.
Таким образом, вершины можно раскрасить либо на базовом уровне объектов Editable Mesh или Editable Poly (только нулевой мап-канал), либо при помощи модификатора Vertex Paint - любой канал для любого геометрического объекта, который может быть преобразован или сведён к Editable Mesh.
Модификатор имеет стандартную панель во вкладке Modyfy и переносную панель с инструментами, которая показана на рисунке 25.2
Рис. 25.2. Переносная панель инструментов Vertex Paint Display Vertex Color Unshaded - по нажатию этой кнопки для объекта. включается режим отображения цвета вершин в неоттенённном режиме. Display Vertex Color Shaded - то же самое, только в оттенённом режиме. Disable Vertex Color Display - отключает отображение цветов вершин. Toggle Texture Display On/Off - переключатель - отображать ли на объекте текстуру, если она есть. Display Channel - под этой надписью можно выбрать режим, какой канал цветов вершин отображать. Чтобы опции стали доступны, надо отключить замок. Переключатель Display Channel в активном режиме станет цветным, и вот что в нём можно найти: Display Channel Vertex Color - отображает нулевой канал, отрезервированный под цвета вершин. Display Channel Illumination - отображает свойство вершин Illumination Display Channel Alpha - отображает свойство вершин Alpha Display Channel # - отображает мап-канал, номер которого указан в графе напротив этого значка. Далее идут инструменты рисования. Paint All - эта кнопка присваивает цвет всем выделенным подобъектам. Для этого надо работать в режиме подобъектов, который можно активизировать или в стеке модификатора, или при помощи кнопочек с изображением вершин, граней или элементов. Эти кнопочки можно видеть как в переносной панели инструментов, так и в панели справа, во вкладке Modify. Paint - эта кисточка позволяет раскрашивать объект, словно мы водим по нему кистью. Erase All - аналогично Paint All, только это стирательная резинка. Она очищает все выделенные подобъекты, возвращая им первоначальные цвета, которые были до применения модификатора Vertex Paint. Только надо иметь в в иду, что если хотя бы одной вершине присвоен цвет, всем остальным тоже присваиваются цвета. В Vertex Paint остальным присваивается белый цвет, поэтому и стирание протирает до белого цвета. Или, если используется многослойный режим рисования - резинка протирает до цвета нижележащего слоя. Если объект уже был раскрашен в этом мап-канале (до применения Vertex Paint), возвращается исходный цвет вершин. Erase - резинка, которой надо водить по объекту. Pick Color - высосать цвет с объекта или ещё откуда-нибудь при помощи пипетки. Напротив пипетки есть большой прямоугольник, если по нему кликнуть, то цвет можно выбрать из меню выбора цветов, удобно и цивильно. Этот цвет и вливается или красится кисточкой в режимах Paint All или Paint. Opacyty - заполнение. Здесь в процентах надо указать, насколько непрозрачной будет кисть. Если эта величина меньше ста процентов, под наносимыми нами мазками будут просвечивать старые цвета. Size - размер кисточки или стирательной резинки. Brush Options - настройки параметров кисти Palette - палитра Blur All - размыть всё выделенное - размывающая кисточка Layer - под этим словом можно настроить режим, как будет осуществляться закрашивание. Mode - в строке напротив как раз можно выбрать режим применения слоя, Пользователям фотошоп эти режимы должны быть знакомы. К примеру normal - есть режим нормальный, когда кисточка как бы накладывает краску поверх всего, что ниже. Multiple - умножение. Цвета нормируются, так что максимальная яркость принимается за единицу, а все промежуточные градации - между нулём и единицей, и эти значения умножаются на аналогичные для ниже лежащего слоя. Если слой Multuply применён поверх белого фона, или сам белый но поверх пёстрого фона - мы ничего особенного не увидим. Opacity - степень заполнения слоя. Не перекрашивая слоя, мы можем менять его прозрачность. Add Layer - добавить слой. Фактически, добавляет в стек ещё один модификатор Vertex Paint. Следует быть внимательным, следить, в какое место стека этот модификатор добавится, если не туда, куда надо - перетащить в нужное место. Delete Layer - удалить слой Condense All Layers - объединить слои в один. |
Итоги:
1) Сразу хочется предостеречь тех, кто сильно обрадовался, что текстуру можно рисовать прямо на объекте. На самом деле - не забывайте, Vertex Paint не рисует текстуры на гранях! Он изменяет цвета вершин. В общем, чем гуще сетка объекта, тем тоньше и чётче на нём можно рисовать линии, но не советую этим увлекаться. Во-первых, многие объекты с густой сеткой - это либо объекты с применённым MeshSmooth или TurboSmooth, либо патчи, а значит, придётся хранить Vertex Paint в стеке. Во-вторых, что немаловажно - модификатор с густой сеткой работает крайне медленно, а то и вовсе при применении различного вида кистей, которыми надо водить, программа зависает.
2) Чего в Vertex Paint ценно - так это разные режимы наложения раскрашенных за сеанс вершин. Вот например, в режимах слоя есть такой режим Add - добавить. Когда мы хотим с красным, зелёным и синим каналами работать независимо, без этого режима не обойтись. Если мы будем красить вершины на базовом уровне самого объекта, меняя один из цветов, надо постоянно помнить про все остальные. В режиме же работы с Vertex Paint можно красить только один компонент цвета в режиме Add, про остальные пока забыть. И тогда наш цвет присуммируется к уже имеющейся раскрасске. Так же ценна полупрозрачная работа кисти или слоя. Если мы хотим сохранить общий фон (допустим, он пёстрый) но немного добавить того или иного цвета, то это очень полезный режим. Например, если надо нанести румянца на щеках, это значит, их надо сделать немного более красными (или бардовыми) но при этом не заглушить намертво прошлой фактуры. Тут идеально подойдёт кисть с небольшим значением Opacyty, или возможность менять Opacity для слоя - сначала накрасить, а потом подкручивая движок, достичь нужного результата.
3) Таким образом, в больщинстве случаев модификатор Vertex Paint лучше использовать для того же низкополигонального объекта, чтобы только задействовать дополнительные возможности управления вершинами.
Используя цвета вершин, можно создать плавную фоновую окраску, чего мы и сделаем. И не важно, как мы это будем делать - можно на базовом уровне красить вершины, можно при помощи Vertex Paint, который потом схлопнуть. Только сейчас мы будем красить низкополигональный объект, то есть ниже модификатора MeshSmooth. И ниже Symmetry, чтобы потом схлопнуть. Не будем описывать по шагам процесс расскраски, лучше всего красить выделяя вершины и вливая в них краску. Или на базовом уровне - просто меняя цвета. Имейте в виду, что на базовом уровне если выделить несколько вершин, цвета которых не совпадут - в окошке Vertex Color будет показан чёрный цвет.
Совет: если вам надо применить при редактировании на базовом уровне один и тот же цвет на несколько подобъектов, которые трудно выделить все сразу, выделите сначала хотя бы некоторые из них (хотя бы один), настройте для него цвет в квадратике Color, а потом кликните на квадратик правой кнопкой мыши, и в появившемся меню выберете Copy (копировать). Цвет скопируется в буфер обмена. Далее, выделяя нужные подобъекты, просто кликайте правой кнопкой в тот же квадратик Color и нажимайте Paste (вставить). Тогда цвет из буфера обмена будет попадать в этот квадратик, а из него - и на выделенные подобъекты.
Внимание: Если цвета выделенных подобъектов не совпадают, в квадратике Color отображается чёрный цвет, но это не значит, что подобъекты будут чёрными после такого выделения. Однако, если вы покрутите этот чёрный при помощи меню выбора цветов и измените хотя бы чуть-чуть, или просто покрутите и вернёте в прежнее состояние, подобъекты действительно почернеют. Или примут тот цвет, который вы накрутите в меню. Чтобы этого не произошло, в меню надо нажать кнопку Reset (обнулить).
Рис. 25.3. Вот так будет выглядеть объек, если раскрасить его вершины на базовом уровне (или схлопнуть Vertex Paint, применённый над базовым уровнем, на сам базовый уровень). Для объекта включён режим отображения Veertex Color, а в стеке выше есть модификаторы Symmetry и Turbo Smooth |
Таким образом, если работать в режиме вершин, можно получить плавную окраску, а если в режиме граней - резкие переходы. Всё тело динозавра раскрашивалось в режиме работы с вершинами, а когти - в режиме работы с гранями, поэтому переходы между когтями и телом получились резкими.
А что, если надо добавить более мелкий рисунок? Мы уже как-то раз познакомились с картой Composite. Вот и вспомним её опять. Применим для окраски динозавра (Diffuse) карту Composite. В первый канал карты поместим карту Vertex Color, а во второй - Bitmap с картинкой, которую рисовали в прошлой главе. Не забудьте убедиться, что для вашей карты Vertex Color стоит тот самый Map Channel, в котором вы раскрашивали вершины. Помните, нельзя раксрашивать вершины в том канале, где находятся нужные нам развёртки!
Рис. 25.4. Комбинирование карт. |
Таким образом, комбинирование различных карт помогает решить проблему со швами. Цвета вершин создают бесшовную фоновую окраску, а пятна и другие рисунки на коже уже удобно делать небольшими группами или каждый по одному, и настраивать для таких рисунков развёртки индивидуально.
Далее мы познакомимся с другими картами, освоим ещё некоторые приёмы их комбинирования. Ведь именно комбинирование карт позволяет достичь очень хороших результатов, и 3ds MAX имеет много инструментов для этих целей.
Примечание: При использовании в сочетании модификаторов Symmetry и Turbo Smooth может возникнуть проблема с обработкой развёрток. При рендеринге может появиться сообщение:
"Texture has invalid vertex indices. Can not render."
Это возникает когда при склейке симметричных половинок случатся какие-то глюки в развёртках.
Тогда используйте вместо TurboSmooth модификатор MeshSmooth.
<< Назад | Оглавление | Вперёд >> | |
homepage: http://teapot3d.narod.ru |