Данные вершины сетки
Элементы данных вершины называются вершинными атрибутами.
Каждая вершина может иметь следующие атрибуты:
- Позиция
- Нормально
- Тангенс
- Цвет
- До 8 координат текстуры
- Весы костей и индексы смеси (только отрубы с кожурой)
Внутренне все данные вершин хранятся в отдельных массивах одинакового размера. Если сетка содержит массив с 10 вершинными позициями, то в ней также есть массивы с 10 элементами для каждого используемого атрибута вершины.
В C#, Unity описывает доступные атрибуты вершины с VertexAttribute перечисление. Вы можете проверить, является ли экземпляр Mesh класс имеет заданный атрибут вершины с Mesh.HasVertexAttribute функции.
Позиция
Позиция вершины задаёт положение вершины в пространстве объекта.
Unity использует это значение для определения поверхности сетки.
Этот атрибут вершины требуется для всех мешей.
В течение Mesh класс, проще всего обратиться к этим данным через Mesh.GetVertices и Mesh.SetVerticesUnity также хранит эти данные в Mesh.vertices, но это более старое свойство является менее эффективным и удобным для пользователя.
Нормальная
Нормаль вершины задаёт направление, указывающее прямо «наружу» от поверхности в позиции вершины.
Unity использует это значение для расчета того, как свет отражается от поверхности сетки.
Этот атрибут вершины необязателен.
В течение Mesh класс, проще всего обратиться к этим данным через Mesh.GetNormals и Mesh.SetNormalsUnity также хранит эти данные в Mesh.normals, но это более старое свойство является менее эффективным и удобным для пользователя.
Тангенс
Касательная вершины к представляет направление, которое указывает вдоль оси «u» (горизонтальная текстура) поверхности в месте вершины.
Unity хранит касательную вершины с дополнительной частью данных в четырехкомпонентном векторы. Компоненты x,y,z вектора описывают касательную, а компонент w вектора описывает его ориентация. Unity использует значение w для расчета Бинормальный, которое является поперечным произведением касательной и нормальной.
Unity использует значения касания и бинормы в нормальном отображении.
Этот атрибут вершины необязателен.
В течение Mesh класс, проще всего обратиться к этим данным через Mesh.GetTangents и Mesh.SetTangentsUnity также хранит эти данные в Mesh.tangents, но это более старое свойство является менее эффективным и удобным для пользователя.
Координаты текстуры (UVs)
Сетка может содержать до восьми наборов координаты текстуры. Координаты текстуры обычно называют UVs, и множества называются каналы.
Unity использует координаты текстуры, когда она «обворачивает» текстуру вокруг сетки. UVs указывает, какая часть текстуры выравнивается с поверхностью сетки в положении вершины.
Каналы UV обычно называются “UV0” для первого канала, “UV1” для второго канала и так далее до “UV7”. Каналы соответственно отображаются на семантику шейдера TEXCOORD0, TEXCOORD1и так далее до TEXCOORD7.
По умолчанию, Unity использует первый канал (UV0) для хранения UVs для регулярных текстур, таких как диффузные карты и зеркальные карты. Unity может использовать второй канал (UV1) для хранения запеченного lightmap UVs, а третий канал (UV2) для хранения входных данных для lightmap реального времени UVs. Для получения дополнительной информации о lightmap UVs и о том, как Unity использует эти каналы, см. Лайтмап UVs.
Все восемь атрибутов координат текстуры необязательны.
В течение Mesh класс, проще всего обратиться к этим данным через Mesh.GetUVs и Mesh.SetUVs. Unity также хранит эти данные в следующих свойствах: Mesh.uv, Mesh.uv2, Mesh.uv3 и т.д., до Mesh.uv8. Обратите внимание, что эти старые свойства менее эффективны и удобны для пользователя.
Цвет
Цвет вершины Цвет вершины представляет базовый цвет вершины, если таковая существует.
Этот цвет существует независимо от любых текстур, которые может использовать сетка.
Этот атрибут вершины необязателен.
В течение Mesh класс, проще всего обратиться к этим данным через Mesh.GetColors и Mesh.SetColorsUnity также хранит эти данные в Mesh.colors, но это более старое свойство является менее эффективным и удобным для пользователя.
Индексы смешанности и вес костной массы
В развязанной сети, Индексы смешанных показателей указывать, на какие кости влияет вершина, и весы костей описать, какое влияние эти кости оказывают на вершину.
В Unity эти вершинные атрибуты хранятся вместе.
Unity использует индексы смешивания и веса костей для деформации сетки с кожухами на основе движения ее скелета. Дополнительные сведения см. в Рендерер сетки с кожухами.
Эти атрибуты вершины необходимы для мешей со скином.
В прошлом Unity позволял влиять на вершину только до 4-х костей. Он хранил эти данные в BoneWeight структура, в Mesh.boneWeights Теперь Unity позволяет до 256 костям влиять на вершину. Он хранит эти данные в массиве BoneWeight1 структура, и обратиться к ней можно через Mesh.GetAllBoneWeights и Mesh.SetBoneWeights. Для получения дополнительной информации, прочитайте документацию API.