SCNMaterialProperty объект представляет содержание — цвет, текстуру, или другие визуальные элементы — одного из визуальных свойств материала. Для свойств материала с содержанием текстуры, SCNMaterialProperty класс также управляет опциями текстурирования, такими как обертывание, фильтрация и трансформация координаты текстуры.
Материал имеет несколько визуальных свойств, вместе определяющих его появление при освещении и штриховке. SceneKit представляет каждый пиксель в сцене путем объединения информации от свойств материала с расположениями, интенсивностью и цветами световых сигналов.
Содержание материальной собственности может быть или цветом, обеспечивающим универсальный эффект через поверхность материала или текстуру, которая SceneKit отображает через поверхность существенного использования координаты текстуры, предоставленные геометрическим объектом, к которому присоединен материал. Текстура, в свою очередь, может прибыть из любого из нескольких источников:
Объект изображения, или путь или URL к файлу образа
Массив шести изображений, которые будут использоваться в качестве карты куба
Базовый Слой анимации или иерархия слоев, которая сама может содержать анимированный контент
Текстура Набора Sprite, обеспечивающая статическое изображение или всю сцену Набора Sprite, представляющую, анимировала 2D содержание.
SceneKit использует материальную собственность contents возразите по-разному для каждого визуального свойства материала. Например:
Когда Вы обеспечиваете цвет для diffuse свойство, это определяет основной цвет материала — конфигурации с помощью материала кажутся теневыми в градациях этого цвета, когда освещено белым светом. Если Вы вместо этого обеспечиваете изображение, SceneKit отображает изображение через поверхность геометрии вместо того, чтобы заштриховать с цветом однородной базы.
Когда Вы обеспечиваете цвет для specular свойство, это влияет на цвет света, отраженного непосредственно к средству просмотра от поверхности геометрии с помощью материала. Если Вы вместо этого обеспечиваете полутоновое изображение, оно определяет тенденцию материала отразить свет непосредственно к средству просмотра — более легкие пиксели в изображении заставляют те области материала казаться более блестящими, и более темные пиксели заставляют материал появиться больше матового стекла.
normal свойство указывает ориентацию поверхности в каждой точке. Материалы являются унифицированно гладкими по умолчанию, так указывая, что цвет для этого свойства не имеет никакого полезного действия. Вместо этого можно указать изображение для этого свойства, описывающего контуры поверхности. SceneKit использует это изображение (названный картой нормалей) в освещении, создавая иллюзию сложной, ухабистой поверхности, не увеличивая сложность геометрии.
Для получения дополнительной информации на каждом визуальном свойстве и путях их содержание влияет на появление материала, видит Ссылку класса SCNMaterial.
SceneKit также использует SCNMaterialProperty объекты в другом месте:
Обеспечить содержание, которое будет представлено позади сцены, в background свойство SCNScene объект,
Влиять на цвет и форму освещения от источника света, в gobo свойство SCNLight объект.
Связывать сэмплеры текстуры с пользовательскими отрывками исходного кода шейдера GLSL, в классах, соответствующих SCNShadable протокол.
Визуальное содержание материальной собственности — цвет, изображение или источник анимированного контента. Для получения дополнительной информации посмотрите обсуждение contents свойство.
Возвращаемое значение
Новый объект материальной собственности.
Обсуждение
Недавно создаваемый SCNMaterial объекты содержат SCNMaterialProperty экземпляры для всех их визуальных свойств. Для изменения визуальных свойств материала Вы изменяете те экземпляры вместо того, чтобы создать новые объекты материальной собственности.
Вы создаете новый SCNMaterialProperty экземпляры для обеспечения текстур для использования с пользовательскими программами построения теней GLSL — для подробных данных см. Ссылку на протокол SCNShadable.
Можно указать, что куб отображается только для содержания материала reflective свойство или background свойство сцены. Шесть изображений в массиве должны все иметь тот же размер и соответствовать поверхностям куба в следующем порядке: +X,-X, +Y,-Y, +Z,-Z (или Право, Левое, Вершина, Нижняя часть, Рядом, Далеко). Рисунок 1 иллюстрирует геометрическое расположение этого порядка. Для получения дополнительной информации на каждом визуальном свойстве и путях их содержание влияет на появление материала, видит Ссылку класса SCNMaterial.
Индексы рисунка 1Array изображений в карте куба
Можно указать любой Базовый Слой анимации как содержание материальной собственности, такое как уровень с анимированной иерархией подуровня, AVPlayerLayer объект, выводящий на экран видеоконтент, или AVCaptureVideoPreviewLayer объект, выводящий на экран живое видео от устройства захвата изображения.
Можно использовать платформу Набора Sprite для обеспечения статического или анимированного контента для материальной собственности. Набор Sprite предоставляет возможности для генерации и изменения изображений текстуры, такой как textureByGeneratingNormalMap метод. Можно также использовать всю анимированную сцену Набора Sprite в качестве содержания материальной собственности.
Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Анимация изменения в этом свойстве исчезает между старым и новым содержанием.
Интенсивность по умолчанию 1.0. Сокращение интенсивности постепенно исчезает содержание материальной собственности, вызывая различные эффекты в зависимости от который визуальное свойство SCNMaterial объект это представляет:
Для normal свойство, интенсивность варьируется очевидная шероховатость нормально отображенной поверхности. Сокращение интенсивности заставляет поверхность казаться более гладкой.
Для multiply свойство, сокращая интенсивность смешивает цвета материальной собственности с белым, эффективно сокращая силу цветного эффекта умножения.
Для всех других свойств, сокращая интенсивность потускнел содержание материальной собственности.
SceneKit применяет эту трансформацию к координатам текстуры, предоставленным геометрическим объектом, материал присоединен, затем использует получающиеся координаты для отображения материальной собственности contents через поверхность материала. (Эта трансформация не имеет никакого эффекта если материальная собственность contents объект является постоянным цветом.)
Например, можно использовать это свойство, чтобы уменьшить или повернуть текстуру относительно поверхности материала, как проиллюстрировано ниже:
Переносящиеся режимы определяют поведение отображения текстур для случаев, откуда координаты текстуры материала расширяются вне диапазона 0.0 к 1.0. Например, если Вы используете contentsTransform свойство для уменьшения текстуры относительно поверхности геометрии Вы используете свойства режима обертки, чтобы определить, повторяется ли текстура через поверхность.
Координата текстуры S измеряет горизонтальную ось изображения текстуры, увеличивающегося с 0.0 в левом краю изображения к 1.0 в правом краю.
Переносящиеся режимы определяют поведение отображения текстур для случаев, откуда координаты текстуры материала расширяются вне диапазона 0.0 к 1.0. Например, если Вы используете contentsTransform свойство для уменьшения текстуры относительно поверхности геометрии Вы используете свойства режима обертки, чтобы определить, повторяется ли текстура через поверхность.
Координата текстуры T измеряет вертикальную ось изображения текстуры, увеличивающегося с 0.0 у основания изображения к 1.0 наверху.
Когда части материальной поверхности кажутся больше или меньшими, чем исходное изображение текстуры, фильтрация текстуры определяет появление содержания материальной собственности. Например, координаты текстуры в точке, далекой от камеры, могут соответствовать области нескольких пикселей в изображении текстуры. SceneKit использует фильтр минификации для определения цвета выбранного элемента текстуры в той точке.
Когда части материальной поверхности кажутся больше или меньшими, чем исходное изображение текстуры, фильтрация текстуры определяет появление содержания материальной собственности. Например, координаты текстуры в точке около камеры могут соответствовать небольшой части пикселя в изображении текстуры. SceneKit использует фильтр увеличения для определения цвета выбранного элемента текстуры в той точке.
Фильтрация текстуры для использования множественно отображается для рендеринга содержимых изображения материальной собственности в размере, меньшем, чем то из исходного изображения.
Множественное отображение является методом, который может увеличить производительность рендеринга при рендеринге изображения текстуры в меньших размерах. SceneKit автоматически создает, несколько множественно отображают уровни для содержимых изображения материальной собственности, каждого в части размера исходного изображения. При рендеринге, SceneKit автоматически демонстрационные элементы текстуры от уровня множественного отображения, самого близкого к представляемому размеру.
Если значение этого свойства SCNFilterModeNone (значение по умолчанию), SceneKit не использует множественное отображение. Если значение этого свойства SCNFilterModeLinear, SceneKit определяет пиксельные цвета с помощью трехлинейной фильтрации. Сначала это линейно интерполирует цвет элемента текстуры от каждого из этих двух, множественно отображают уровни, самые близкие к целевому размеру, тогда это линейно интерполирует между двумя результатами определить итоговый цвет. Этот метод обеспечивает более высокое качество рендеринга по умеренной стоимости производительности.
Рисунок 2 показывает эффекты включения множественного отображения. В изображении слева, множественное отображение отключено, вызвав пикселизированные артефакты, поскольку настроечная таблица отступает в расстояние. Включение линейного множественного отображения приводит к более гладкому появлению.
Анизотропная фильтрация является процессом, увеличивающим качество рендеринга текстуры, когда текстурированная поверхность появляется под экстремальным углом относительно камеры. Этот процесс работы путем выборки от многократных уровней множественного отображения текстуры для каждого представленного пикселя — термин анизотропия относится к числу выборок на пиксель. Более высокая анизотропия повышает качество рендеринга, но по стоимости для рендеринга производительности. Например, изображение слева на рисунке 3 не использует анизотропной фильтрации, приводящей к рендерингу артефактов, поскольку настроечная таблица отступает в расстояние. Другие изображения используют выше maxAnisotropy значения, сокращая рендеринг артефактов. Анизотропная фильтрация требует, множественно отображается, таким образом, это свойство только вступает в силу если значение mipFilter свойство не SCNFilterModeNone.
Фильтрация рисунка 3Anisotropic
SceneKit автоматически увеличивает или уменьшает анизотропию для каждого представленного пикселя по мере необходимости для максимизации качества рендеринга до предела, указанного этим свойством. Когда рендеринг зависит от аппаратного обеспечения машинной графики в использовании, максимальный уровень анизотропии использовал. Установите значение этого свойства в MAXFLOAT постоянный (значение по умолчанию) для использования самого высокого уровня анизотропии, поддерживаемого GPU. A maxAnisotropy значение 1.0 или ниже отключает анизотропную фильтрацию.
Геометрия может иметь многократные независимые источники координат текстуры, каждая из которых определяет уникальный номер канала отображения. Можно использовать эти каналы для отображения различных визуальных свойств материала по-разному. Например, геометрия, представляющая кадр рисунка, могла бы использовать один набор координат текстуры для отображения материалов самого кадра и другого набора координат текстуры для размещения изображения в кадр.
Для получения информации о создании конфигураций с многократными каналами отображения текстур см. Ссылку класса SCNGeometry.
Цвет раньше заполнял области поверхности материала, не покрытой содержимыми изображения материальной собственности.
Объявление
Swift
var borderColor: AnyObject
Objective C
@property(nonatomic,retain)idborderColor
Обсуждение
Когда содержание материальной собственности является изображением текстуры, и его свойства обертывания текстуры установлены в SCNWrapModeClampToBorder, цвет рамки появляется в областях текстурированной геометрии, не покрытой изображением текстуры, как показано на рисунке 4.
Только допустимый для mipFilter свойство, указывая, что SceneKit не должен использовать отображение mip.
Доступный в iOS 8.0 и позже.
Nearest
SCNFilterModeNearest
Фильтрация текстуры возвращает цвет только из одного элемента текстуры, расположение которого является самым близким к выбираемым координатам.
Доступный в iOS 8.0 и позже.
Linear
SCNFilterModeLinear
Текстура, фильтрующая демонстрационные элементы текстуры от окружения выбираемых координат и линейно, интерполирует их цвета.
Доступный в iOS 8.0 и позже.
Обсуждение
Когда части материальной поверхности кажутся больше или меньшими, чем исходное изображение текстуры, фильтрация текстуры определяет появление содержания материальной собственности. Например, когда текстура применяется к плоскости, отступающей далеко от камеры в расстояние:
Координаты текстуры в точке около камеры могут соответствовать небольшой части пикселя в исходном изображении. SceneKit использует magnificationFilter свойство для определения цвета выбранного элемента текстуры в той точке.
Координаты текстуры в точке, далекой от камеры, могут соответствовать области нескольких пикселей в исходном изображении. SceneKit использует minificationFilter свойство для определения цвета выбранного элемента текстуры в той точке.
SceneKit также использует фильтр, указанный mipFilter свойство при генерации множественно отображает уровни для изображения текстуры.
Координаты текстуры фиксируются к диапазону от 0.0 к 1.0, включительно.
Выборка текстуры в областях, координаты текстуры которых вышли бы за пределы этого диапазона, производит цвета элемента текстуры из самого близкого края изображения текстуры.
Доступный в iOS 8.0 и позже.
Repeat
SCNWrapModeRepeat
Выборка текстуры использует только дробную часть координат текстуры, проходя через диапазон от 0.0 к (но не включая) 1.0.
Выборка текстуры в областях материала, координаты текстуры которого шли бы снаружи от 0.0 к 1.0 результаты в мозаичном размещении текстуры отображают через поверхность с помощью материала.
Доступный в iOS 8.0 и позже.
ClampToBorder
SCNWrapModeClampToBorder
Текстура, выбирающая использование, текстурирует цвета для координат в диапазоне от 0.0 к 1.0 (включительно) и материальная собственность borderColor значение иначе.
Выборка текстуры в областях, координаты текстуры которых вышли бы за пределы этого диапазона использование borderColor свойство вместо элемента текстуры окрашивает от изображения текстуры.
Доступный в iOS 8.0 через iOS 8.2.
Mirror
SCNWrapModeMirror
Выборка текстуры координат текстуры вне располагается от 0.0 к 1.0 должен вести себя, как будто диапазон инвертирует перед повторением.
Выборка текстуры в областях материала, координаты текстуры которого шли бы снаружи от 0.0 к 1.0 результаты в мозаичном размещении и изображение текстуры и его зеркальное отображение через поверхность с помощью материала.
Доступный в iOS 8.0 и позже.
Обсуждение
Переносящиеся режимы определяют поведение отображения текстур для случаев, откуда координаты текстуры материала расширяются вне диапазона 0.0 к 1.0. Например, если Вы используете contentsTransform свойство для уменьшения текстуры относительно поверхности геометрии Вы используете свойства режима обертки, чтобы определить, повторяется ли текстура через поверхность. Рисунок 4 показывает эффект каждого режима обертывания на иначе идентичном материале.