SCNMaterial
SCNMaterial
объект управляет освещением и штриховкой атрибутов, связанных с поверхностью геометрии, которые определяют ее появление, когда представлено. При создании материала Вы определяете набор визуальных атрибутов и их опций, которые можно тогда снова использовать для многократных конфигураций в сцене.
Материал имеет восемь визуальных свойств, перечисленных в Конфигурировании Визуальных Свойств Материала, каждое из которых определяет другую часть освещения и штриховки SceneKit процесса. Каждое визуальное свойство является экземпляром SCNMaterialProperty
класс, обеспечивающий сплошной цвет, текстуру или другое 2D содержание для того аспекта рендеринга SceneKit. Материал lightingModelName
свойство тогда определяет формулу использование SceneKit для объединения визуальных свойств со световыми сигналами в сцене для создания итогового цвета для каждого пикселя в представленной сцене. Для получения дополнительной информации на процессе рендеринга, посмотрите Модели распространения света.
Вы присоединяете один или несколько материалов к экземпляру SCNGeometry
класс с помощью firstMaterial
или materials
свойство. Многократные конфигурации могут сослаться на тот же материал. В этом случае изменение атрибутов материала изменяет появление каждой геометрии, использующей его.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSCopying
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
SCNAnimatable
-
SCNShadable
-
NSCopying
-
NSObject
-
NSSecureCoding
-
SCNAnimatable
-
SCNShadable
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Создает новый материальный объект.
Объявление
Objective C
+ (instancetype)material
Возвращаемое значение
Новый материальный объект.
Обсуждение
Недавно создаваемый материал содержит
SCNMaterialProperty
объект для каждого из его восьми визуальных свойств. Вы изменяете появление материала путем установкиcontents
из каждого визуального свойства. Для получения информации о содержании каждого визуального свойства по умолчанию и как это влияет на появление материала, посмотрите Конфигурирование Визуальных Свойств Материала.Оператор импорта
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
рассеянный рассеянный
СвойствоОбъект, управляющий рассеянным ответом материала на освещение. (только для чтения)
Объявление
Swift
var diffuse: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *diffuse
Обсуждение
Рассеянная штриховка описывает сумму и цвет света, отраженного одинаково во всех направлениях от каждой точки на поверхности материала. Рассеянный цвет пикселя независим от точки зрения, таким образом, это может считаться «основным» цветом или текстурой материала.
По умолчанию, рассеянное свойство
contents
объект является белым цветом. Рисунок 1 показывает эффект установки содержания рассеянного свойства к изображению текстуры на материале, другие свойства которого имеют содержание по умолчанию.Материал
lightingModelName
свойство определяет формулу использование SceneKit для объединения его рассеянного цвета и других визуальных свойств со световыми сигналами и другого содержания в сцене для создания итогового цвета для каждого представленного пикселя в представленной сцене. Для получения дополнительной информации посмотрите Модели распространения света.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
окружающая среда окружающая среда
СвойствоОбъект, управляющий ответом материала на окружающее освещение. (только для чтения)
Объявление
Swift
var ambient: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *ambient
Обсуждение
Окружающая штриховка описывает сумму и цвет окружающего света, отраженного материалом. Окружающая штриховка универсальна во всех направлениях во всех точках на поверхности. Если сцена не содержит световые сигналы, тип которых
SCNLightTypeAmbient
, это свойство не имеет никакого эффекта на появление материала.По умолчанию, свойство окружения
contents
объект является темно-серым цветом. Изменение содержания свойства окружения позволяет Вам указать различный цвет или текстуру для областей поверхности, не непосредственно освещенной световыми сигналами в сцене. Чтобы заставить материал тождественно реагировать и на окружающую среду и на рассеянный свет, установитеlocksAmbientWithDiffuse
свойство кYES
true
.Рисунок 2 показывает материал (с текстурой для
diffuse
свойство) прежде и после установки содержания свойства окружения к сплошному цвету.Материал
lightingModelName
свойство определяет формулу использование SceneKit для объединения его цвета освещения и других визуальных свойств со световыми сигналами и другого содержания в сцене для создания итогового цвета для каждого представленного пикселя в представленной сцене. Для получения дополнительной информации посмотрите Модели распространения света.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
зеркальный зеркальный
СвойствоОбъект, управляющий зеркальным ответом материала на освещение. (только для чтения)
Объявление
Swift
var specular: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *specular
Обсуждение
Зеркальная штриховка описывает сумму и цвет света, отраженного материалом непосредственно к средству просмотра, формируя яркое выделение на поверхности и моделируя глянцевое или солнечное появление. Вы корректируете резкость зеркальных подсветок с помощью материала
shininess
свойство.По умолчанию, зеркальное свойство
contents
объект является черным цветом, заставляя материал казаться тусклым или матовым. Изменение содержания зеркального свойства к более яркому цвету заставляют зеркальные подсветки появляться в том цвете, создание поверхности казаться блестящими. При применении текстуры к зеркальному свойству изображение текстуры становится зеркальной картой — яркость каждого пикселя в изображении определяет тенденцию каждой точки на поверхности материала для создания зеркальных подсветок, когда освещенный.Рисунок 3 показывает материал (с текстурой для
diffuse
свойство) прежде и после обеспечения зеркального изображения карты. Заметьте, что яркие зеркальные подсветки появляются только на частях поверхности, где зеркальное изображение карты является белым.Материал
lightingModelName
свойство определяет формулу использование SceneKit для объединения его specularity и других визуальных свойств со световыми сигналами и другого содержания в сцене для создания итогового цвета для каждого представленного пикселя в представленной сцене. Для получения дополнительной информации посмотрите Модели распространения света.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
нормальный нормальный
СвойствоОбъект, определяющий номинальную ориентацию поверхности в каждой точке для использования в освещении. (только для чтения)
Объявление
Swift
var normal: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *normal
Обсуждение
Моделирование взаимодействия световых сигналов с материалом запрашивает информацию об ориентации поверхности в каждой точке. Как правило, векторы нормали, предоставленные геометрическим объектом, предоставляют эту информацию. Однако это ограничивает уровень детализации для поверхностных контуров, потому что геометрия может только обеспечить один уникальный поверхностный вектор нормали на вершину (и увеличивающееся количество вершины для моделирования очень подробной поверхности требует высокоэффективную стоимость).
Также можно использовать изображение текстуры в качестве карты нормалей, описывающей ориентацию поверхности для каждого пикселя в текстуре. Когда SceneKit использует изображение, он обрабатывает R, G, и компоненты B каждого как эти X, Y, и компоненты Z поверхностного вектора нормали. Поскольку текстура карты нормалей может хранить намного более подробную поверхностную информацию, чем геометрия, можно использовать нормальное свойство материала, чтобы моделировать грубые поверхности, такие как камень или добавить рельефные или выгравированные проекты к иначе гладкой поверхности.
По умолчанию, нормальное свойство
contents
объект является белым цветом. Установка содержания нормального свойства к любому сплошному цвету отключает нормальное отображение, заставляя SceneKit заштриховать материал с помощью только поверхностную нормальную информацию, предоставленную ее геометрией. Установка содержания нормального свойства к изображению или другого отображенного на текстуру содержания включает нормальное отображение, также автоматически устанавливающее материалlitPerPixel
свойство кYES
true
.Рисунок 4 показывает эффект установки содержания нормального свойства к изображению текстуры на материале, другие свойства которого имеют содержание по умолчанию.
Материал
lightingModelName
свойство определяет формулу использование SceneKit для объединения его поверхности normals и других визуальных свойств со световыми сигналами и другого содержания в сцене для создания итогового цвета для каждого представленного пикселя в представленной сцене. Для получения дополнительной информации посмотрите Модели распространения света.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
отражающий отражающий
СвойствоОбъект, определяющий отраженный цвет для каждой точки на поверхности. (только для чтения)
Объявление
Swift
var reflective: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *reflective
Обсуждение
Можно моделировать зеркальный или хромированный конец на поверхности, заставив его отразить ее среду. SceneKit не представляет отражения в реальном времени объектов в сцене, но он может использовать текстуру карты среды для моделирования отражения статического изображения или изображения с анимацией. При рендеринге каждого пикселя на поверхности SceneKit прослеживает свет от той точки до пикселя в карте среды, как будто поверхность отражала то изображение.
По умолчанию, отражающее свойство
contents
объект является белым цветом, заставляя свойство не иметь никакого видимого эффекта. Установка содержания отражающего свойства к любому сплошному цвету добавляет универсальную штриховку к материалу. Для создания отражающего эффекта установите содержание свойства в изображение или другое отображенное на текстуру содержание.Для создания эффекта зеркального конца с помощью карты среды изображение текстуры должно принять одну из двух форм:
Карта сферы, квадратное изображение, содержание которого изображает среду, как отражено зеркальной сферой.
Карта куба, массив шести квадратных изображений, вместе формирующих воображаемый куб, включающий сцену, внутренние поверхности которой отражаются материалом. Вы создаете карту куба путем установки отражающего свойства
contents
возразите противNSArray
экземпляр, содержащий шесть изображений, каждый соответствующий направлению в мировой координате сцены располагает с интервалами в следующем порядке: +X,-X, +Y,-Y, +Z,-Z (или Право, Левое, Вершина, Нижняя часть, Рядом, Далеко).
Рисунок 5 показывает материал (с текстурой для
normal
свойство), прежде и после обеспечения куба отображаются для отражающего свойства.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Объект, определяющий цвет, испускаемый каждой точкой на поверхности. (только для чтения)
Объявление
Swift
var emission: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *emission
Обсуждение
Можно использовать эмиссионную текстуру карты для моделирования частей поверхности, светящихся с их собственным светом. SceneKit не обрабатывает материал как источник света — скорее свойство эмиссии определяет цвета для материального независимого политика освещения. (Для создания объекта, который, кажется, светится можно хотеть объединить геометрию с эмиссионной картой и дополнительный
SCNLight
объекты добавили к сцене.)По умолчанию, эмиссионное свойство
contents
объект является черным цветом, заставляя свойство не иметь никакого видимого эффекта. Установка содержания эмиссионного свойства к любому сплошному цвету добавляет единый цвет к материальному независимому политику освещения. Для создания выборочного эффекта свечения установите содержание свойства в изображение или другое отображенное на текстуру содержание, светящиеся области которого используют яркие цвета и чьи другие области используют более темные цвета. В более темных частях эмиссионной карты (и частях с сокращенной непрозрачностью), другие визуальные свойства материала способствуют его появлению при освещении сцены.Рисунок 6 показывает материал (с текстурой для
diffuse
свойство) прежде и после обеспечения эмиссионного изображения карты.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
прозрачный прозрачный
СвойствоОбъект, определяющий непрозрачность каждой точки в материале. (только для чтения)
Объявление
Swift
var transparent: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *transparent
Обсуждение
Используйте это свойство, чтобы выборочно заставить части материала казаться прозрачными. Можно унифицированно скорректировать непрозрачность материала с помощью
transparency
свойство, или всего содержания, присоединенного к узлу с помощью узлаopacity
свойство.По умолчанию, прозрачное свойство
contents
объект является полностью непрозрачным черным цветом, заставляя свойство не иметь никакого видимого эффекта. Установка содержания прозрачного свойства к любому сплошному цвету унифицированно исчезает непрозрачность материала на основе значения непрозрачности того цвета. Чтобы заставить части материала казаться прозрачными, установите содержание свойства в изображение или другое отображенное на текстуру содержание, альфа-канал которого определяет области полной или частичной непрозрачности.Рисунок 7 показывает полупрозрачный материал прежде и после обеспечения изображения текстуры для его прозрачного свойства. (Для создания эффекта прозрачности более видимым синяя сфера показана позади прозрачного материала.)
transparencyMode
свойство управляет, как SceneKit интерпретирует информацию о цвете от содержания прозрачного свойства.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
умножиться умножиться
СвойствоОбъект, обеспечивающий значения цвета, умножающиеся с пикселями в материале после всей другой штриховки, завершен. (только для чтения)
Объявление
Swift
var multiply: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *multiply
Обсуждение
После объединения других визуальных свойств материала с освещением и другой информацией о сцене, набор Сцены умножает цвет каждого представленного пикселя цветом, который обеспечивает это свойство. Можно использовать это свойство, чтобы затемнить или окрасить поверхностного независимого политика эффектов освещения и других свойств, или добавить предварительно вычисленное освещение к сцене через схему затенения.
По умолчанию, умножить свойство
contents
объект является белым цветом, заставляя свойство не иметь никакого видимого эффекта.Рисунок 8 показывает материал (с текстурами для
diffuse
иemission
свойства) прежде и после установки содержания умножить свойства к сплошному цвету. Заметьте, что умножить цвет модулирует даже засветку, добавленную эмиссионной картой.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Имя связалось с материалом.
Обсуждение
Можно обеспечить описательное имя для материала для создания управления графиком сцены проще. Материалы, загруженные из файла сцены, могут иметь имена, присвоенные художником, использующим 3D инструмент разработки. Используйте
SCNSceneSource
класс для исследования материалов в файле сцены, не загружая его график сцены.Названия материалов сохраняются при экспорте сцены в файл с помощью
writeToURL:options:delegate:progressHandler:
метод, и появляется в редакторе сцены XCode.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Резкость зеркальных подсветок. Animatable.
Обсуждение
Блеск материала взаимодействует с
specular
свойство и освещение в сцене для создания ярких выделений на поверхности. Более высокое значение производит более резко определенные выделения, заставляя поверхность казаться более гладким и глянцевым.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
fresnelExponent fresnelExponent
СвойствоФактор, влияющий на отражающую способность материала. Animatable.
Объявление
Swift
var fresnelExponent: CGFloat
Objective C
@property(nonatomic) CGFloat fresnelExponent
Обсуждение
Экспонента Френели материала взаимодействует с
reflective
свойство для определения интенсивности отражений на поверхности на основе ее угла относительно средства просмотра. Когда материал просматривается от мелкого угла, более высокая экспонента Френеля увеличивает видимость отражений.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
прозрачность прозрачность
СвойствоУниверсальная прозрачность материала. Animatable.
Обсуждение
SceneKit определяет общую непрозрачность каждого представленного пикселя на поверхности путем умножения цвета от материала
transparent
свойство значением этого свойства. Затем материалtransparencyMode
свойство определяет, как пиксели от материала смешиваются в сцену.Можно также унифицированно скорректировать непрозрачность всего содержания, присоединенного к узлу с помощью
opacity
свойство.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
transparencyMode transparencyMode
СвойствоИспользование режима SceneKit для вычисления прозрачности для материала.
Объявление
Swift
var transparencyMode: SCNTransparencyMode
Objective C
@property(nonatomic) SCNTransparencyMode transparencyMode
Обсуждение
Режим прозрачности по умолчанию
SCNTransparencyModeAOne
. ПосмотритеSCNTransparencyMode
для доступных значений и их эффектов.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
lightingModelName lightingModelName
СвойствоФормула освещения, что использование SceneKit для рендеринга материала.
Объявление
Swift
var lightingModelName: String
Objective C
@property(nonatomic, copy) NSString *lightingModelName
Обсуждение
SceneKit обеспечивает несколько различных моделей распространения света, каждая из которых комбинирует информацию от визуальных свойств материала со световыми сигналами и другим содержанием сцены. Для получения дополнительной информации о том, как каждая модель распространения света влияет на рендеринг, посмотрите Модели распространения света. Для получения дополнительной информации на вкладе от каждого визуального свойства, посмотрите Конфигурирование Визуальных Свойств Материала.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
litPerPixel litPerPixel
СвойствоБулево значение, определяющее, выполняет ли SceneKit вычисления освещения на вершину или на пиксель. Animatable.
Объявление
Swift
var litPerPixel: Bool
Objective C
@property(nonatomic, getter=isLitPerPixel) BOOL litPerPixel
Обсуждение
Когда значение этого свойства
YES
true
(значение по умолчанию), SceneKit выполняет вычисления освещения независимо для каждого представленного пикселя. Этот подход обеспечивает лучшее качество рендеринга, но может неблагоприятно повлиять на производительность рендеринга.Если Вы изменяете значение этого свойства на
NO
false
, SceneKit выполняет вычисления освещения для каждой вершины в геометрии и позволяет GPU интерполировать результаты освещения через пиксели промежуточные вершины. В зависимости от формы и количества вершины поверхности геометрии и представляемых свойств материала, этот подход может улучшить производительность рендеринга без большого значимого влияния на визуальное качество.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Анимация этого свойства исчезает между результатами рендеринга с каждым состоянием.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
двусторонний двусторонний
СвойствоБулево значение, определяющее, должен ли SceneKit представить и передние и задние стороны поверхности. Animatable.
Объявление
Swift
var doubleSided: Bool
Objective C
@property(nonatomic, getter=isDoubleSided) BOOL doubleSided
Обсуждение
Когда значение этого свойства
NO
false
(значение по умолчанию), SceneKit представляет поверхность с помощью материала с одной стороны. Векторы данных вершины и векторы нормали в геометрии определяют, какую сторону каждого многоугольника нужно считать его передней стороной, и ориентация геометрии относительно камеры определяет, какие передние поверхности в настоящее время видимы.При изменении значения этого свойства на ДА, SceneKit представляет обоих поверхности передней и задней части каждого многоугольника. SceneKit предполагает, что поверхность normals задняя сторона отрицание вектора нормали передней стороны.
Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Анимация этого свойства исчезает между результатами рендеринга с каждым состоянием
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Режим, определяющий, который поверхности поверхностного SceneKit рендеринг. Animatable.
Обсуждение
Векторы данных вершины и векторы нормали в геометрии определяют, какую сторону каждого многоугольника нужно считать его передней стороной, и ориентация геометрии относительно камеры определяет, какие передние поверхности в настоящее время видимы. Как правило, обращенные к задней стороне поверхности найдены только на внутренней части замкнутой геометрии, затененной обращенными к передней стороне поверхностями, так рендерингу этих поверхностей стоили производительности, но никакого видимого эффекта.
Значение по умолчанию этого свойства
SCNCullBack
, указание, что SceneKit должен отобрать, или не рендеринг, обращенные к задней стороне поверхности. Можно изменить значение этого свойства, чтобы заставить SceneKit представлять только задние поверхности материала вместо этого. ПосмотритеSCNCullMode
для доступных значений.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Анимация этого свойства исчезает между результатами рендеринга с каждым состоянием
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Булево значение, определяющее, реагирует ли материал тождественно и на окружающую среду и на рассеянное освещение. Animatable.
Объявление
Swift
var locksAmbientWithDiffuse: Bool
Objective C
@property(nonatomic) BOOL locksAmbientWithDiffuse
Обсуждение
При моделировании реального освещения поверхность, как обычно полагают, имеет единственный «основной» цвет или текстуру, которая видима и под окружающей средой и под рассеянным светом. Когда значение этого свойства
NO
false
(значение по умолчанию), SceneKit не имеет этого ограничения: можно использовать материалdiffuse
свойство для обеспечения цвета или текстуры, которая видима под прямым освещением иambient
свойство для обеспечения различного цвета или текстуры для областей, не непосредственно освещенных.Когда значение этого свойства
YES
true
, SceneKit используетdiffuse
свойство для окружающего освещения, игнорируяambient
свойство и гарантируя, что материал тождественно реагирует и на окружающую среду и на рассеянный свет.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Анимация этого свойства исчезает между результатами рендеринга с каждым состоянием
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
writesToDepthBuffer writesToDepthBuffer
СвойствоБулево значение, определяющее, производит ли SceneKit информацию о глубине при рендеринге материала.
Объявление
Swift
var writesToDepthBuffer: Bool
Objective C
@property(nonatomic) BOOL writesToDepthBuffer
Обсуждение
Процесс рендеринга SceneKit использует буфер глубины для определения упорядочивания представленных поверхностей относительно средства просмотра. Значение по умолчанию этого свойства
YES
true
, указание, что SceneKit сохраняет информацию глубины для каждого представленного пикселя для использования более поздними передачами рендеринга.Как правило, Вы отключаете запись в буфер глубины при рендеринге полупрозрачных объектов, потому что более поздние этапы процесса рендеринга могут запросить информацию глубины о непрозрачных объектах позади них.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
readsFromDepthBuffer readsFromDepthBuffer
СвойствоБулево значение, определяющее, использует ли SceneKit информацию о глубине при рендеринге материала.
Объявление
Swift
var readsFromDepthBuffer: Bool
Objective C
@property(nonatomic) BOOL readsFromDepthBuffer
Обсуждение
Процесс рендеринга SceneKit использует буфер глубины для определения упорядочивания представленных поверхностей относительно средства просмотра. Значение по умолчанию этого свойства
YES
true
, указание, что SceneKit сравнивает глубину каждого представленного пикселя к соответствующему значению в его буфере глубины при рендеринге материала. Если пиксель на большей глубине, чем соответствующая точка в буфере глубины, SceneKit не представляет пиксель.Как правило, Вы отключаете чтение от буфера глубины при рендеринге объектов, которые должны всегда быть видимы независимо от уже представленного содержания в сцене — например, настороженный дисплей в игре. В таких случаях необходимо также придать большое значение для
renderingOrder
свойство узла, содержащего любое содержание, должно быть всегда видимо.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Модели для того, как SceneKit комбинирует цвета от визуальных свойств материала со световыми сигналами в сцене для создания цвета каждого представленного пикселя, используемого
lightingModelName
свойство.Объявление
Swift
let SCNLightingModelPhong: NSString! let SCNLightingModelBlinn: NSString! let SCNLightingModelLambert: NSString! let SCNLightingModelConstant: NSString!
Objective C
NSString *const SCNLightingModelPhong NSString *const SCNLightingModelBlinn NSString *const SCNLightingModelLambert NSString *const SCNLightingModelConstant
Константы
-
SCNLightingModelPhong
SCNLightingModelPhong
Штриховка, включающая окружающую среду, рассеянные, и зеркальные свойства, где зеркальные подсветки вычисляются с помощью формулы Фонга.
Приближение Фонга реального коэффициента отражения вычисляет цвет точки на поверхности с помощью следующей формулы:
color =
ambient
* al +
diffuse
* max(0, dot(N, L)) +
specular
* pow(max(0, dot(R, E)),
shininess
)
Некоторые термины относятся к свойствам материала:
ambient
,diffuse
,specular
, иshininess
. Другие условия следующие:al
Сумма всех окружающих светов в сцене (цвет).
N
Поверхностный вектор нормали в заштриховываемой точке, как предоставлено данными вершины геометрии, интерполированными между вершинами, и возможно измененными материалом
normal
свойство.L
(Нормализованный) вектор от точки, заштриховываемой к источнику света.
E
(Нормализованный) вектор от точки, заштриховываемой к средству просмотра.
R
Отражение светового вектора
L
через вектор нормалиN
.Доступный в OS X v10.8 и позже.
-
SCNLightingModelBlinn
SCNLightingModelBlinn
Штриховка, включающая окружающую среду, рассеянные, и зеркальные свойства, где зеркальные подсветки вычисляются с помощью формулы Блинн-Фонга.
Приближение Блинн-Фонга реального коэффициента отражения вычисляет цвет точки на поверхности с помощью следующей формулы:
color =
ambient
* al +
diffuse
* max(0, dot(N, L)) +
specular
* pow(max(0, dot(H, N)),
shininess
)
Некоторые термины относятся к свойствам материала:
ambient
,diffuse
,specular
, иshininess
. Другие условия следующие:al
Сумма всех окружающих светов в сцене (цвет).
N
Поверхностный вектор нормали в заштриховываемой точке, как предоставлено данными вершины геометрии, интерполированными между вершинами, и возможно измененными материалом
normal
свойство.L
(Нормализованный) вектор от точки, заштриховываемой к источнику света.
H
Вектор на полпути между световым вектором
L
и (нормализованный) глазной векторE
(вектор от точки, заштриховываемой к средству просмотра), расчетное использование формулыH = normalize(L + E)
.Доступный в OS X v10.8 и позже.
-
SCNLightingModelLambert
SCNLightingModelLambert
Штриховка, включающая окружающую среду и рассеянные свойства только.
Эта модель штриховки основывается на Законе Ламберта рассеянного коэффициента отражения, вычисляя цвет точки на поверхности со следующей формулой:
color =
ambient
* al +
diffuse
* max(0, dot(N, L))
ambient
иdiffuse
термины относятся к свойствам материала. Другие условия следующие:al
Сумма всех окружающих светов в сцене (цвет).
N
Поверхностный вектор нормали в заштриховываемой точке, как предоставлено данными вершины геометрии, интерполированными между вершинами, и возможно измененными материалом
normal
свойство.L
(Нормализованный) вектор от точки, заштриховываемой к источнику света.
Доступный в OS X v10.8 и позже.
-
SCNLightingModelConstant
SCNLightingModelConstant
Универсальная форма, заштриховывающая, который включает окружающую среду, освещающую только.
Эта модель штриховки вычисляет цвет точки на поверхности со следующей формулой:
color =
ambient
* al +
diffuse
ambient
иdiffuse
термины относятся к свойствам материала.al
срок является суммой всех окружающих светов в сцене (цвет).Доступный в OS X v10.8 и позже.
Обсуждение
Каждая модель распространения света определяет различный способ объединить материал
ambient
,diffuse
,specular
, иnormal
визуальные свойства с информацией о световых сигналах в сцене и точке зрения. После вычислений цвета с помощью модели распространения света (с одной из упомянутых выше формул), SceneKit определяет итоговый цвет каждого пикселя с помощью следующей формулы:finalColor = (
emission
+ color +
reflective
) *
multiply
emission
,reflective
, иmultiply
термины в формуле относятся к визуальным свойствам материала.Последний шаг SceneKit в рендеринге каждого пикселя должен объединить итоговый цвет с информацией о прозрачности, определенной
transparent
,transparency
, иtransparencyMode
свойства.Рисунок 9 показывает эффекты каждой модели распространения света на иначе идентичной сцене.
-
-
Использование режимов SceneKit для определения, который многоугольники представить на поверхности, используемой
cullMode
свойство.Объявление
Swift
enum SCNCullMode : Int { case Back case Front }
Objective C
typedef enum : NSInteger { SCNCullBack = 0, SCNCullFront = 1, } SCNCullMode;
Константы
-
Back
SCNCullBack
Режим для отбора обращенных к задней стороне многоугольников (и рендеринг только обращенные к передней стороне многоугольники).
Доступный в OS X v10.8 и позже.
-
Front
SCNCullFront
Режим для отбора обращенных к передней стороне многоугольников (и рендеринг только обращенные к задней стороне многоугольники).
Доступный в OS X v10.8 и позже.
Обсуждение
Векторы данных вершины и векторы нормали в геометрии определяют, какую сторону каждого многоугольника нужно считать его передней стороной, и ориентация геометрии относительно камеры определяет, какие передние поверхности в настоящее время видимы. Как правило, обращенные к задней стороне поверхности найдены только на внутренней части замкнутой геометрии, затененной обращенными к передней стороне поверхностями, так рендерингу этих поверхностей стоили производительности, но никакого видимого эффекта.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
-
Использование режимов SceneKit для вычисления непрозрачности пикселей, представленных с материалом, используемым
transparencyMode
свойство.Объявление
Swift
enum SCNTransparencyMode : Int { case AOne case RGBZero }
Objective C
typedef enum : NSInteger { SCNTransparencyModeAOne = 0, SCNTransparencyModeRGBZero = 1, } SCNTransparencyMode;
Константы
-
AOne
SCNTransparencyModeAOne
SceneKit получает информацию о прозрачности из альфа-канала цветов. Значение
1.0
непрозрачно.Доступный в OS X v10.8 и позже.
-
RGBZero
SCNTransparencyModeRGBZero
SceneKit получает информацию о прозрачности из яркости цветов. Значение
0.0
непрозрачно.При использовании этого режима SceneKit игнорирует альфа-значение, раскрашивает материал
transparent
свойство. SceneKit вычисляет яркость цвета от его красных, зеленых, и синих каналов и использует получающееся значение для определения непрозрачности материала.Доступный в OS X v10.8 и позже.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-