Vertex color что это
Материалы: советы и трюки. Часть 1
Перевод: © Black Sphinx, Москва, 2008
Это учебное пособие в трех частях показывает как добавить больше детальности материалу без лишнего труда и с экономией времени, особенно посредством добавления других слоев 2D и 3D-карт, которые доступны в программе.
Прежде чем мы начнем: если вы не знаете как создать хорошую детальность на вашем материале, используйте тот же самый битмап для Diffuse, Specular map, Specular color map и т.д.
1. Добавление деталей на диффузе
1.1 Карта Vertex color
Карты vertex color помогают добавить слой цвета, перекрывающий основную карту. Для Vertex color нам не нужен модификатор UVWmap, так как перекрывающий цвет будет изменяться посредством добавления цвета к вертексу.
В качестве диффузной карты материала дерева используется простой битмап. Из-за некоторых особенностей освещения объект при визуализации выглядит слишком плоским. На этом изображении шкаф выглядит плоским.
Перейдите на уровень редактирования вертексов, выделите вертексы и поменяйте цвет вертексов с белого (по умолчанию) на темно-коричневый.
Теперь при визуализации шкаф выглядит более объемным.
1.2 Изменение цвета дерева посредством использования карты Mix
1.3 Карта Falloff на диффузе
Цитата из файла помощи 3ds Max: «Карта Falloff генерирует значение от белого до черного, основываясь на угловом затухании нормалей поверхности геометрии. Направление, используемое для определения затухания нормалей, может быть различно и зависит от выбранного вами метода. Однако, по умолчанию, карта генерирует белый цвет на фейсах, нормали которых направлены наружу, относительно текущего вида, и черный цвет для фейсов, нормали которых направлены параллельно текущему виду.»
Эта техника подходит для искривленных или волнообразных объектов.
Затененная область белой искривленной стены, которая подсвечивается только рассеянным светом выглядит плоской.
Решим эту проблему использованием карты Falloff в качестве диффузной карты.
Теперь визуализированное изображение выглядит более объемным.
Наложение карты Brick (Tiles) на простой мрамор
Некоторые сканированные изображения, используемые в качестве диффузной карты, выглядят как черепица (видны швы на стыках текстуры) или плоскими.
Поместите то же изображение в кату Brick (Tiles) для изменения тона плиток мрамора.
Перевод © Black Sphinx, 2008. All rights reserved.
Рендеринг vertex color с aiUserColor
Узлы пользовательских данных позволяют нам подключить различные формы информации к сети узлов в Арнольде. В этом уроке мы будем использовать узел AI User Data color для карты цветов вершин (vertex colors) в канале diffuse для этого ландшафта. У меня есть материал, назначенный для ландшафта, но в данный момент к его каналу diffused ничего не подключено. Если я выберу этот ландшафт, я смогу в режиме меню modeling перейти в Mesh Display и открыть Color Set Editor.
Как видите, для сетки объекта уже установлен цвет вершин. По умолчанию он называется ColorSet1. Закрою это окно. Для удобства мы можем отображать цвета вершин в окне проекции независимо от того, будет или нет Арнольд рендерить цвета вершин. У меня выделена сетка объекта и открыт attribute editor. Если же у вас attribute editor закрыт, вы можете открыть его с помощью сочетания кнопок Ctrl и А. Перейдем на узел mesh shape и развернем рахдел Mesh Component Display. Внизу радела у нас имеется опция Display Colors. Мы можем её активировать, и теперь у нас есть отображение vertex colors (цветов вершин) в окне проекции.
Непосредственно под выключателем Display Colors расположен атрибут Display Color Channel с выпадающим списком. Нам нужно, чтобы в нем было установлено значение None. Другие варианты из этого списка позволяют вам конвертировать существующие процедурные или растровые текстуры в vertex colors. Если мы выберем прямо сейчас значение Diffuse, то это вернет нас к равномерному серому цвету, потому что у меня нет никаких диффузных компонентов. Непременным условием рендера vertex colors в Арнольд является экспорт цветов вершин.
Давайте перейдем в свиток Arnold. Я закрою mesh component display, перейду к свитку Arnold в узле mesh shape, и мне нужно активировать Export Vertex Colors. Поставим на нем галочку. И, наконец, мы должны назначить соответствующее изображение. И мы можем закрыть attribute editor. Откроем HyperShade. В разделе materials выберем terrainLoFi и перейдем в окно редактирования узлов.
Нажмем Input and Output Connections. Мы можем приблизиться с помощью колесика мышки и передвинуть узлы, используя Alt и среднюю кнопку мышки. Создадим узел Arnold User Data Color. Для этого найдем в свитке Arnold раздела create опцию Shader. Нажмем на него aiUserDataColor. Соединим выход Out Color с входом Color узла terrainLoFi. В property editor нам нужно присвоить имя для нашего цвета вертексов.
Здесь есть пустое поле, которое называется Color Attribute Name. Кликнем на этом поле и напечатаем colorSet1 с заглавной S, нажмем Enter. Теперь мы можем увидеть, что эти вершины рендерятся в Арнольде. Перейдем в меню Arnold и выберем Arnold RenderView. Вот как можно применять vertex color в сети узлов в Арнольде, используя узел user data color.
3ds Max
Could not retrieve table of contents
Vertex Color Map
Vertex Color map makes any vertex coloring applied to an object available for rendering. You can assign vertex colors using the VertexPaint Modifier, the Assign Vertex Colors utility, or the vertex controls for an editable mesh, editable patch, or editable poly.
Using vertex colors as a map
While vertex color assignment is primarily used for special applications, such as game engines or radiosity renderers, you can also use it to create colorful, gradient surface effects. You can also use it in design visualization: Use the VertexPaint Modifier to paint your landscape different colors to represent grass, shrubbery, parking areas, etc., and then use Vertex Color map to use the vertex coloring in your rendered images. Incidentally, when you use the Terrain object’s Color By Elevation function, 3ds Max assigns a material that uses a Vertex Color map as the diffuse component.
Procedures
To use the Vertex Color map:
Interface
These parameters let you define which map channel or sub-channel is to be rendered. One application is to support usage of the Vertex Color map in conjunction with the Channel Info Utility.
The settings are interlinked; changing one parameter will change the other two, as appropriate.
Lets you specify which map channel to use. Range=0 to 99. Default=0.
Notes regarding this setting:
Lets you can specify that the map will use either the Red, Green, or Blue sub-channel of the specified map channel, or all sub-channels.
After assigning the material with the Vertex Color map to an object with named map or vertex-color channels (see Channel Info Utility), you can click Update, and then, from this drop-down list, choose a named map channel from the object.
Refreshes the contents of the Channel Name drop-down list. Use Update after applying the material to an object, or after adding channels to the object.
What is a vertex color?
My question is what is written in title. This term «vertex color» appear a lot. I am having hard time to understand this.
Isn’t a vertex simple point on 3D space? If so, how can a point have a color? Or does this «color» mean something else?
There is a «Vertex Color» node in unreal engine’s material editor.
Can someone shed light on my question? I couldn’t find anything usefull when I googled «what is a vertex color» but the documentations that are too technical for me.
4 Answers 4
Vertex colors aren’t that relevant when you have a fully textured 3d mesh. But it gets interesting when you have an untextured but colored mesh. In that case you assign a color to every vertex. The shader would then color each pixel of a polygon by interpolating between the colors of the three vertices.
Vertex colors can also sometimes be interesting in combination with textures. When you want to use a shading algorithm like Gouraud Shading, you just calculate the light intensity on each vertex, assign the light color to the vertex as a vertex color, and when you render the texture you multiply the color value of each texture pixel with the interpolated colors. This allows you to calculate light sources in the vertex shader instead of the pixel shader. This is usually far faster, because the vertex shader is usually executed far less frequently.
In theory, Vertex Color allows to color a model without having to bother with textures. This is quite common in CAD.
In practice, it’s just one more slot you can use to push data into the vertex, which you then use in the vertex shader to do crazy stuff.
«Isn’t a vertex simple point on 3D space?»
That’s what I used to think, when I first started with 3D. I learned quickly that I was wrong.
Other standars examples of what’s in that blob are normals, and tangents. What’s important is that all of them are optional, including the position. Vertex Color is just one of these optional inputs that you can use or abuse to create a pretty picture on the screen.
Vertices can have colors, it’s a property just like the normal of it.
In 3d enviroments a triangle gets colored based on their vertices’ color information. The closest fragments to vertex A get the color of it, the closesr to vertex B get the colornof B, and the color interpolates between the 2.
It works the same way as per-vertex lighting
It’s an easy way to add colors to a model without using a texture.
Varying object colours (or other attributes) within a single batch / draw call.
You’ll see this used in rendering particle systems, text, and batched (usually atlassed) sprites.
Imagine you have a particle emitter that spawns particles with a random start colour, or that fade to 0 alpha over the particles’ lifetime. If we were to use shader uniforms to send this colour data, we’d need to draw each differently-coloured particle in its own draw call, making the particle system much more expensive. Instead, we can bake these colours into the vertex data for the particles, and render the whole batch together in a single call.
Unity appears to use this technique for particle colour variation, as well as for colouring individual characters in a TextMesh or Sprites rendered together in a batch.
I believe you can do something similar with geometry instancing, but I don’t know how the two compare in performance. It’s possible that today doing this type of instanced tweaking through vertex colours is more of a hold-over to support pre- OpenGL 3.1 / DX9 hardware like some mobile devices, rather than a best practice for modern PCs. I’d welcome comments from folks who’ve done more performance tuning with batches & instancing to help clear up whether these techniques have superseded vertex colours for this purpose. 🙂
Глава 25. Цвета вершин
Как уже когда-то вскользь упоминалось, объекты Editable Mesh и Editable Poly имеют такие параметры, как цвета вершин. Кроме того, вершины других объектов тоже могут быть раскрашены при помощи специального модификатора Vertex Paint, который появился в 3ds MAX 3.
Цвета вершин как базовое свойство
Итак, как посмотреть, какого цвета у нас вершины? По умолчанию вершинам цвета не присвоены. Если при выделении тех или иных вершин у нас показывается белый квадратик с цветом, это ещё не значит, что вершины у нас белые. Если мы их не раскрашивали (то есть, не меняли цвета в квадратике при выделенной хотя бы одной вершине), то у нас просто ни одной из вершин цвета не присвоены.
На самом деле канал 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
И естественно, трёхмерная текстура цвета вершин повторяется в этом пространстве периодически, поэтому если вершина и вылезет за границу основного куба, ей всё равно будет присвоен какой-то цвет. Вот только через диалог инструментов объектов Editable Poly или Editable Mesh мы не сможем присвоить вершенам координаты, значением больше единицы. Зато через модификаторы UVW Map или Unwrap UVW вполне можно это сделать.
Встаёт такой вопрос: а есть ли действительно такая процедурная карта, которую можно залить в куб 1x1x1, чтобы она там раскрашивала вершины в некоторые цвета, согласно их координатам? Да, такая процедурная карта есть, и она называется Vertex Color. Она как раз по умолчанию настроена таким образом, чтобы задействовать цвета вершин, которые можно присвоить при помощи инстурументов 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 во вкладке Display есть небольшая кнопочка Shaded. Если её нажать, объект будет оттенённым, то есть не будет ярко светиться, как когда эта кнопка выключена. В общем, нужны и тот и другой режим. Когда Shaded выключено, мы видем непосредственно цвета вершин без искажения, какие они есть на самом деле, а если Shaded включен, то объект смотрится более естественно, и мы можем оценить, как он будет смотреться с тенями.
Если выбрать Map Channel Color, и в окошке снизу указать номер, то мы увидим цвета вершин для указанного мап-канала. Вот как будет выглядеть наш динозавр с созданной в первом мап-канале развёрткой (о чём писалось ранее, в главах о приготовлении развёртки) если включить для него этот режим для мап-канала 1.
Рис. 25.1. Отображение в режиме Vertex Color (Shaded) с параметрами Map Channel Color = 1 |
И на последок скажем, что модификаторы Edit Mesh и Edit Poly, в отличие от инструментов редактирования базовых объектов этого типа, не дают возможности управлять цветами вершин.
Карта Vertex Color
Коль уж зашла речь об этой карте, давайте её досконально рассмотрим. Тем более, параметров у неё совсем-совсем немного.
Перво-наперво, хочется сказать, что хотя по сути своей это получается трёхмерная процедурная карта, тем не менее, в навигаторе карт и материалов в пункте 3d Maps (если его выбрать) этой карты не будет. Она будет находится в пункте Color Maps.
Итак, параметры. Их очень мало.
Модификатор Vertex Paint
Модификатор имеет стандартную панель во вкладке Modyfy и переносную панель с инструментами, которая показана на рисунке 25.2
Рис. 25.3. Вот так будет выглядеть объек, если раскрасить его вершины на базовом уровне (или схлопнуть Vertex Paint, применённый над базовым уровнем, на сам базовый уровень). Для объекта включён режим отображения Veertex Color, а в стеке выше есть модификаторы Symmetry и Turbo Smooth |
Рис. 25.4. Комбинирование карт. |
Таким образом, комбинирование различных карт помогает решить проблему со швами. Цвета вершин создают бесшовную фоновую окраску, а пятна и другие рисунки на коже уже удобно делать небольшими группами или каждый по одному, и настраивать для таких рисунков развёртки индивидуально.
Далее мы познакомимся с другими картами, освоим ещё некоторые приёмы их комбинирования. Ведь именно комбинирование карт позволяет достичь очень хороших результатов, и 3ds MAX имеет много инструментов для этих целей.
Примечание: При использовании в сочетании модификаторов Symmetry и Turbo Smooth может возникнуть проблема с обработкой развёрток. При рендеринге может появиться сообщение:
«Texture has invalid vertex indices. Can not render.»
Это возникает когда при склейке симметричных половинок случатся какие-то глюки в развёртках.
Тогда используйте вместо TurboSmooth модификатор MeshSmooth.
- Амазон мьюзик что это
- В чем заключается система тейлора кратко