Поделиться через


Цветовые материалы

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

Цветовые материалы более эффективны для отрисовки, чем материалы PBR, из-за простой модели заливки. Они также поддерживают различные режимы прозрачности.

Свойства цветовых материалов

Следующие свойства материала предоставляются в API среды выполнения, например в классе Color Material C# или классе Color Material C++ соответственно.

  • ColorFlags: флаги других функций можно объединить в этой битовой маске, чтобы включить следующие функции:

    • UseVertexColor: если сетка содержит vertex цвета и этот параметр включен, цвет сетки vertex умножается на AlbedoColor и AlbedoMap. По умолчанию UseVertexColor отключен.
    • DoubleSided: Если двусторонность имеет значение true, треугольники с этим материалом отрисовываются, даже если камера смотрит на их задние лица. Этот параметр по умолчанию отключен. См. также Single-sided rendering.
    • AlphaClipped: включает жесткие вырезания на пиксель на основе альфа-значения ниже значения AlphaClipThreshold (см. ниже). Это работает для непрозрачных материалов, а также.
    • TransparencyWritesDepth: если TransparencyWritesDepth флаг установлен на материале и материал прозрачный, объекты, использующие этот материал, также будут способствовать окончательному буферу глубины. См. свойство ColorTransparencyMode цвета материала в следующем разделе. Включение этой функции рекомендуется, если для вашего сценария требуется более правдоподобное перепроецирование на поздних этапах полностью прозрачных сцен. Для смешанных прозрачных и непрозрачных сцен этот параметр может привести к нереалистичному поведению перепроецирования или неправдоподобным артефактам перепроецирования. По этой причине значение по умолчанию и рекомендуемый вариант для универсальных сценариев — отключить этот флаг. Записанные значения глубины взяты из попиксельного уровня глубины объекта, расположенного ближе всего к камере.
    • FresnelEffect: Этот флаг материала обеспечивает эффект аддитивного френеля на соответствующий материал. Внешний вид эффекта регулируется другими параметрами FresnelEffectColor fresnel и FresnelEffectExponent описано ниже.
  • AlbedoColor: этот цвет умножается на другие цвета, например AlbedoMap цвета или vertex цвета. Если в материале включена прозрачность, альфа-канал используется для настройки непрозрачности, где 1 — полностью непрозрачный, а 0 — полностью прозрачный. Цвет albedo по умолчанию непрозрачный белый.

    Примечание.

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

  • AlbedoMap: 2D-текстура для значений альбэдо на пиксель.

  • AlphaClipThreshold: если AlphaClipped флаг задан в свойстве ColorFlags , все пиксели, где альфа-значение albedo меньше, чем значение AlphaClipThreshold не будет вырисовано. Альфа-обрезание можно использовать даже без включения прозрачности, и его гораздо быстрее отрисовать. Тем не менее материалы с альфа-обрезкой по-прежнему медленнее отрисовываются, чем полностью непрозрачные материалы. По умолчанию альфа-обрезка отключена.

  • TexCoordMode: определяет режим, используемый для создания координат текстуры для текстуры albedo. Этот режим игнорируется, если этот материал не использует текстуру. По умолчанию координаты текстуры извлекаются из входных потоков вершин сетки (режим TextureCoordinateGenerationMode.SourceUv0 или TextureCoordinateGenerationMode.SourceUv1) и затем преобразуются через TexCoordScale и TexCoordOffset. При настройке материала с помощью кода этот режим также можно задать TextureCoordinateGenerationMode.PlanarObjectSpace или TextureCoordinateGenerationMode.PlanarWorldSpace создать координаты в качестве расстояния вершин до двух настраиваемых трехмерных плоскостей TexCoordPlaneU и TexCoordPlaneV. Это называется планомерным сопоставлением текстур.

  • TexCoordScale и TexCoordOffset: для координат текстуры из исходной сетки можно применить дополнительное линейное преобразование. Масштаб умножается на координаты текстуры UV, смещение добавляется к нему. Можно использовать для растяжения и сдвига текстур. Масштаб по умолчанию — (1, 1), а смещение — (0, 0).

  • TexCoordPlaneU и TexCoordPlaneV: для режимов планарного сопоставления эти плоскости определяют плоскости текстур для координат u-координат и v-координат соответственно. Плоскости определяются в стандартной обычной форме (A, B,C,D), поэтому координата вычисляется как t = Ax + B+ C*z + D, где (x,y,z) — это позиция вершины в мире или в пространстве объектов.

  • FresnelEffectColor: цвет френеля, используемый для этого материала. Важно только при установке флага эффекта френеля на этом материале (см. выше). Это свойство управляет базовым цветом сияния Френеля (подробные сведения см. в разделе Эффект Френеля). В настоящее время важны только значения RGB-канала, и альфа-значение будет игнорироваться.

  • FresnelEffectExponent: экспонент fresnel, используемый для этого материала. Важно только при установке флага эффекта френеля на этом материале (см. выше). Это свойство управляет распространением сияния Френеля. Минимальное значение 0,01 приводит к распространению по всему объекту. Максимальное значение 10,0 сжимает блеск только наиболее пасущихся краев, видимых.

  • VertexMix: это значение между 0 и 1 указывает, насколько сильно vertex цвет в сетке способствует окончательному цвету. При значении по умолчанию, равном 1, цвет vertex полностью умножается на цвет альбедо. Если значение равно 0, цвета vertex полностью игнорируются.

  • ColorTransparencyMode: В отличие от материалов PBR, цветные материалы различаются между различными режимами прозрачности:

    • Opaque: режим по умолчанию отключает прозрачность. Тем не менее альфа-обрезку по-прежнему можно использовать и это рекомендуемый вариант, если ее будет достаточно.
    • AlphaBlended: этот режим аналогичен режиму прозрачности для материалов PBR. Его следует использовать для прозрачных материалов, например для стекла.
    • Additive: этот режим является самым простым и наиболее эффективным режимом прозрачности. Материал добавляется к отрисованному изображению. Этот режим можно использовать для имитации свечения (прозрачных материалов), таких как выделительные маркеры.

Примечание.

Хотя AlbedoColor и имеют тот же допустимый диапазон значений, что и FresnelEffectColor для материалов PBR, их каналы будут эффективно зажаты в [0; 1] для цветных материалов.

Переопределение цветового материала во время преобразования

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

Имя свойства материала Имя свойства в переопределении файла
ColorFlags.AlphaClipped alphaClipEnabled
ColorFlags.UseVertexColor useVertexColor
ColorFlags.DoubleSided isDoubleSided
ColorFlags.TransparencyWritesDepth transparencyWritesDepth
AlbedoColor albedoColor
TexCoordScale textureCoordinateScale
TexCoordOffset textureCoordinateOffset
ColorTransparencyMode transparent
AlphaClipThreshold alphaClipThreshold

Документация по API

Следующие шаги