SCNNode
Соответствует
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в iOS 8.0 и позже.
SCNNode
объект представляет часть графика сцены. Узел отдельно не имеет никакого видимого содержания, когда сцена, содержащая его, представляется — он представляет только позицию в пространстве (и трансформация координатных пространств) относительно ее родительского узла. Для построения сцены Вы используете иерархию узлов, чтобы создать ее структуру, затем добавить световые сигналы, камеры и геометрию к узлам для создания видимого содержания.
Узлы определяют структуру сцены
Иерархия узлов или график сцены, в сцене определяет и организацию своего содержания и Вашу возможность представить и управлять тем содержанием использование SceneKit. Можно создать иерархию узла программно с помощью SceneKit, загрузиться один от файла, создаваемого с помощью 3D инструментов разработки, или объединить два подхода. SceneKit обеспечивает много утилит для организации и поиска графика сцены — для подробных данных, посмотрите методы в Управлении Иерархией Узла и Поиске Иерархии Узла.
rootNode
объект в сцене определяет систему координат мира, представленного SceneKit. Каждый дочерний узел, который Вы добавляете к этому корневому узлу, создает свою собственную систему координат, поочередно наследованную его собственными дочерними элементами. Вы определяете трансформацию между системами координат с помощью узла position
, rotation
, и scale
свойства свойств (или непосредственно использование transform
свойство).
Вы используете иерархию узлов и трансформаций для моделирования содержания сцены в пути, удовлетворяющем потребностям приложения. Например, если Ваше приложение представляет анимированное представление солнечной системы, можно создать иерархию узла что небесные тела моделей относительно друг друга: Каждая планета может быть узлом с его орбитой и его текущей позицией в той орбите, определенной в системе координат солнца. Узел планеты определяет свое собственное координатное пространство, полезное и для указания вращения планеты и для орбит его лун (каждый из которых является дочерним узлом своей планеты). С этой иерархией сцены можно легко добавить, реалистическая анимация к сцене — анимирующий и оборот луны вокруг ее планеты и планету вокруг солнца объединит анимации так, чтобы луна следовала за планетой.
Присоединения узла определяют визуальное содержание и поведение
Иерархия узла определяет пространственную и логическую структуру сцены, но не ее видимое содержание. Вы добавляете 2D и 3D объекты к сцене путем присоединения SCNGeometry
объекты к узлам. (Конфигурации, в свою очередь, присоединили SCNMaterial
объекты, определяющие их появление.) Для штриховки конфигураций в сцене со световыми эффектами и эффектами тени добавьте узлы с присоединенным SCNLight
объекты. Для управления точкой зрения, с которой сцена появляется, когда представлено добавьте узлы с присоединенным SCNCamera
объекты.
Для добавления основанных на физике способов поведения и специальных эффектов к содержанию SceneKit используйте другие типы присоединений узла. Например, SCNPhysicsBody
объект определяет характеристики узла для моделирования физики, и SCNPhysicsField
объект применяет силы к организациям физики в области вокруг узла. SCNParticleSystem
объект, присоединенный к узлу, представляет эффекты частицы, такие как огонь, дождь или падающие листы в пространстве, определенном узлом.
Для улучшения производительности SceneKit может совместно использовать присоединения между многократными узлами. Например, в мчащейся игре, включающей много идентичных автомобилей, график сцены содержал бы много узлов — один, чтобы расположить и анимировать каждый автомобиль — но все автомобильные узлы сошлются на тот же геометрический объект.
-
Создает и возвращает объект узла.
Объявление
Objective C
+ (instancetype)node
Возвращаемое значение
Новый объект узла, или
nil
если инициализация не успешна.Оператор импорта
Objective C
@import SceneKit;
Доступность
Доступный в iOS 8.0 и позже.
-
Создает и возвращает объект узла с указанной присоединенной геометрией.
Объявление
Swift
init(geometry
geometry
: SCNGeometry) -> SCNNodeObjective C
+ (SCNNode *)nodeWithGeometry:(SCNGeometry *)
geometry
Параметры
geometry
Геометрия, которая будет присоединена.
Возвращаемое значение
Новый объект узла с геометрией, присоединенной, или
nil
если инициализация не успешна.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
name
СвойствоИмя связалось с узлом.
Обсуждение
Можно обеспечить описательное имя для узла для создания управления графиком сцены проще. Узлы, загруженные из файла сцены, могут иметь имена, присвоенные художником, использующим 3D инструмент разработки. Используйте
childNodeWithName:recursively:
илиchildNodesPassingTest:
метод для получения узла от графика сцены его именем, илиSCNSceneSource
класс для исследования узлов в файле сцены, не загружая его график сцены.Имена узлов и их присоединенных объектов сохраняются при экспорте сцены в файл с помощью
writeToURL:options:delegate:progressHandler:
метод, и появляется в редакторе сцены XCode. Представление статистики SceneKit (см.showsStatistics
) также показывает имена узлов с прикрепленными камерами.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
light
СвойствоСвет, присоединенный к узлу.
Обсуждение
Узел может иметь только один свет, присоединенный к нему. Объединить световые сигналы, таким образом, ими можно управлять или анимировать вместе, создать узел без света и добавлять другие узлы к нему.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
camera
СвойствоКамера, присоединенная к узлу.
Обсуждение
Для использования камеры для отображения сцены установите
pointOfView
свойство представления (или уровень или средство рендеринга) отображение сцены к узлу, содержащему камеру. Камера выглядит в направлении отрицательной оси z узла, таким образом, Вы нацеливаете камеру, меняя положение и ориентацию узла, содержащего его. Вы управляете геометрическими и оптическими параметрами камеры — проекцией, полем зрения, и глубиной резкости — использование присоединенногоSCNCamera
объект.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
geometry
СвойствоГеометрия, присоединенная к узлу.
Объявление
Swift
var geometry: SCNGeometry?
Objective C
@property(nonatomic, retain) SCNGeometry *geometry
Обсуждение
Узел может иметь только одну геометрию, присоединенную к нему. Объединить конфигурации, таким образом, ими можно управлять или анимировать вместе, создать узел без геометрии и добавлять другие узлы к нему.
Анимация геометрических свойств узла может переместить, повернуть, расширить и масштабировать свою геометрию. Для более усовершенствованных анимаций геометрии узла используйте
morpher
иskinner
объекты.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
morpher
СвойствоОбъект morpher, ответственный за смешивание геометрии узла.
Объявление
Swift
var morpher: SCNMorpher?
Objective C
@property(nonatomic, retain) SCNMorpher *morpher
Обсуждение
Вы используете объект morpher интерполировать между многократными конфигурациями. Для получения дополнительной информации см. Ссылку класса SCNMorpher.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
skinner
СвойствоОбъект кожевника, ответственный за скелетные анимации содержания узла.
Объявление
Swift
var skinner: SCNSkinner?
Objective C
@property(nonatomic, retain) SCNSkinner *skinner
Обсуждение
Объект кожевника поддерживает иерархию узлов управления, которые могут деформировать геометрию узла с помощью скелетных анимаций, создаваемых во внешнем 3D инструменте разработки. Для получения дополнительной информации см. Ссылку класса SCNSkinner.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
categoryBitMask
СвойствоМаска, определяющая, которому принадлежат категории узел.
Объявление
Swift
var categoryBitMask: Int
Objective C
@property(nonatomic) NSUInteger categoryBitMask
Обсуждение
Можно присвоить каждый узел в сцене к одной или более категориям, где каждая категория соответствует немного в битовой маске. Вы определяете значения маски, используемые в Вашем приложении. Когда SceneKit представляет сцену, он сравнивает каждый узел
categoryBitMask
свойство с битовыми масками категории любого объекта, участвующего в процессе рендеринга — световых сигналах, камерах, и методах — использование поразрядной операции И. Если результатом является ненулевое значение, SceneKit включает узел при рендеринге.Используйте битовую маску категории узла вместе с:
SCNLight
объектcategoryBitMask
свойство для исключения узла из освещения того светаSCNCamera
объектcategoryBitMask
свойство для создания узла невидимым для той камерыБитовые маски категории в
SCNTechnique
словарь определения объекта, чтобы включать или исключить узел из фаз многопроходного метода рендеринга
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает объект узла, представляющий состояние узла, поскольку это в настоящее время появляется на экране.
Возвращаемое значение
Копия объекта узла текущей презентации.
Обсуждение
При использовании неявной анимации (см. Ссылку класса SCNTransaction) для изменения свойств узла те свойства узла сразу установлены в их целевые значения, даже при том, что анимированное содержание узла, кажется, переходит от старых значений свойств до нового. Во время анимации SceneKit поддерживает копию узла, названного узлом представления, свойства которого отражают переходные значения, определенные любыми анимациями в полете, в настоящее время влияющими на узел. Свойства узла представления обеспечивают близкое приближение для версии в настоящее время выводящегося на экран узла.
Не изменяйте свойства узла представления. (Пытающийся сделать так результаты в неопределенном поведении.) Вместо этого Вы используете узел представления, чтобы считать значения текущей анимации — например, создать новую анимацию, запускающуюся в тех значениях. Узел представления не имеет никаких родительских или дочерних узлов. К анимированным свойствам доступа связанных узлов используйте собственный узел
parentNode
иchildNodes
свойства иpresentationNode
метод каждого связанного узла.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
paused
СвойствоБулево значение, определяющее, выполнить ли действия и анимации, присоединенные к узлу и его дочерним узлам.
Объявление
Swift
var paused: Bool
Objective C
@property(nonatomic, getter=isPaused) BOOL paused
Обсуждение
Значение по умолчанию этого свойства
NO
false
, указание, что SceneKit должен постоянно обновлять содержание узла. Приостановка узла паузы любые рабочие анимации или действия. Это свойство применяется к действиям и анимациям, присоединенным к самому узлу и присоединенным к любому из его дочерних или порожденных узлов.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
transform
СвойствоТрансформация применилась к узлу относительно своего родителя. Animatable.
Обсуждение
Трансформация является комбинацией узла
rotation
,position
, иscale
свойства. Трансформация по умолчаниюSCNMatrix4Identity
.Когда Вы устанавливаете значение этого свойства, узел
rotation
,orientation
,eulerAngles
,position
, иscale
свойства автоматически изменяются для соответствия нового преобразования, и наоборот. SceneKit может выполнить это преобразование, только если преобразование, которое Вы обеспечиваете, является комбинацией вращения, перевода и операций масштабирования. При установке значения этого свойства к скошенной трансформации или к неаффинной трансформации значения этих свойств становятся неопределенными. Установка нового значения для любого из этих свойств заставляют SceneKit вычислять новую трансформацию, отбрасывание любых скошенных или неаффинных операций в исходной трансформации.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
position
СвойствоПеревод применился к узлу. Animatable.
Обсуждение
Позиция узла определяет местоположение его в системе координат ее родителя, как изменено узлом
pivot
свойство. Позиция по умолчанию является нулевым вектором, указывая, что узел помещается в источник системы координат родительского узла.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
rotation
СвойствоОриентация узла, выраженная как угол вращения приблизительно ось. Animatable.
Обсуждение
Четырехкомпонентный вектор вращения указывает направление оси вращения в первых трех компонентах и углу вращения (в радианах) в четвертом. Вращение по умолчанию является нулевым вектором, не указывая вращения. Вращение применяется относительно узла
pivot
свойство.rotation
,eulerAngles
, иorientation
свойства все влияние вращательный аспект узлаtransform
свойство. Любое изменение в одном из этих свойств отражается в других.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
eulerAngles
СвойствоОриентация узла, выраженная как подача, отклонение от курса, и углы вращения, каждый в радианах. Animatable.
Объявление
Swift
var eulerAngles: SCNVector3
Objective C
@property(nonatomic) SCNVector3 eulerAngles
Обсуждение
Порядок компонентов в этом векторе соответствует оси вращения:
Подача (
x
компонент), вращение вокруг оси X узла.Отклонение от курса (
y
компонент), вращение вокруг оси y узла.Рулон (
z
компонент), вращение вокруг оси z узла.
SceneKit применяет эти вращения относительно узла
pivot
свойство в обратном порядке компонентов: первый рулон, затем отклоняйтесь от курса, затем сделайте подачу.rotation
,eulerAngles
, иorientation
свойства все влияние вращательный аспект узлаtransform
свойство. Любое изменение в одном из этих свойств отражается в других.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
orientation
СвойствоОриентация узла, выраженная как кватернион. Animatable.
Объявление
Swift
var orientation: SCNQuaternion
Objective C
@property(nonatomic) SCNQuaternion orientation
Обсуждение
rotation
,eulerAngles
, иorientation
свойства все влияние вращательный аспект узлаtransform
свойство. Любое изменение в одном из этих свойств отражается в других.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
scale
СвойствоМасштабный коэффициент применился к узлу. Animatable.
Обсуждение
Каждый компонент вектора масштаба умножает соответствующую размерность геометрии узла. Масштаб по умолчанию
1.0
во всех трех измерениях. Например, применение масштаба (2.0, 0.5, 2.0) к узлу, содержащему геометрию куба, сокращает свою высоту и увеличивает ее ширину и глубину. Масштабирование применяется относительно узлаpivot
свойство.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
pivot
СвойствоТочка опоры для позиции узла, вращения и масштаба. Animatable.
Обсуждение
Центр узла является трансформацией между своим координатным пространством и используемым ее
position
,rotation
, иscale
свойства. Центр по умолчаниюSCNMatrix4Identity
, указывая, что позиция узла определяет местоположение источника своей системы координат, ее вращение об оси через ее центр, и ее масштаб также относительно той центральной точки.Изменение центра преобразовывает, изменяет эти способы поведения многими полезными способами. Вы можете:
Сместите содержание узла относительно его позиции. Например, путем установки центра в перевод преобразовывают Вас, может расположить узел, содержащий геометрию сферы относительно того, где сфера оперлась бы на пол вместо относительно его центра.
Переместите ось узла вращения. Например, с переводом преобразовывают Вас, может заставить узел вращаться вокруг далекой точки вместо того, чтобы вращаться вокруг ее центра, и с вращением преобразовывают Вас, может наклонить ось вращения.
Скорректируйте центральную точку и направление для масштабирования узла. Например, с переводом преобразовывают Вас, может заставить узел расти или уменьшаться относительно угла вместо к его центру.
Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
worldTransform
СвойствоМировое преобразование применилось к узлу. (только для чтения)
Объявление
Swift
var worldTransform: SCNMatrix4 { get }
Objective C
@property(nonatomic, readonly) SCNMatrix4 worldTransform
Обсуждение
Мировое преобразование является трансформацией координатного пространства узла относительно координатного пространства сцены. Эта трансформация является связью узла
transform
свойство с тем из его родительского узла, родителя родителя, и т.д. доrootNode
объект сцены.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
constraints
СвойствоСписок ограничений, влияющих на трансформацию узла.
Обсуждение
Массив ограничительных объектов. Перед рендерингом SceneKit оценивает все ограничения, присоединенные к иерархии узла, и корректирует трансформации узла соответственно.
Используйте
SCNLookAtConstraint
класс, чтобы заставить узел всегда указать на другой узел, как раз когда оба перемещены, илиSCNTransformConstraint
класс для применения произвольных трансформаций в ограничительное время оценки.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
hidden
СвойствоБулево значение, определяющее видимость содержания узла. Animatable.
Объявление
Swift
var hidden: Bool
Objective C
@property(nonatomic, getter=isHidden) BOOL hidden
Обсуждение
Значение по умолчанию этого свойства нет, указывая, что SceneKit должен представить конфигурации и световые сигналы использования, присоединенные к узлу или его дочерним элементам. Измените значение этого свойства на
YES
true
исключить присоединенные конфигурации и световые сигналы от рендеринга. (Камеры, присоединенные к узлу или его дочерним элементам, не затронуты этим свойством.) Сокрытие узла также скрывает свои дочерние узлы рекурсивно.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Сокрытие или показ узла в анимации приводят к эффекту постепенного исчезновения или постепенному появлению.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
opacity
СвойствоЗначение непрозрачности узла. Animatable.
Обсуждение
Возможные значения между
0.0
(полностью прозрачный) и1.0
(полностью непрозрачный). Значение по умолчанию1.0
.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
renderingOrder
СвойствоПорядок содержание узла нарисован в относительно того из других узлов.
Обсуждение
Узлы с большими заказами рендеринга представляются в последний раз. Значения по умолчанию для обнуления.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
castsShadow
СвойствоБулево значение, определяющее, представляет ли SceneKit содержание узла в схемах затенения.
Объявление
Swift
var castsShadow: Bool
Objective C
@property(nonatomic) BOOL castsShadow
Обсуждение
SceneKit представляет тени путем рендеринга изображения схемы затенения, содержащего контуры содержания сцены, и затем предполагая что изображение на сцену. SceneKit выполняет этот процесс один раз для каждого
SCNLight
объект в сцене, чейcastsShadow
свойствоYES
true
. Поскольку схема затенения, представляющая части перерендеринга сцены, это несет расходы производительности. Для минимизации этой стоимости производительности исключите узлы из рендеринга схемы затенения путем установки узлаcastsShadow
свойство кNO
false
.Для получения дополнительной информации на теневом рендеринге, см. Ссылку класса SCNLight.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
parentNode
СвойствоРодитель узла в иерархии графика сцены. (только для чтения)
Объявление
Swift
var parentNode: SCNNode? { get }
Objective C
@property(nonatomic, readonly) SCNNode *parentNode
Обсуждение
Для сцены
rootNode
объект, значение этого свойстваnil
.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
childNodes
СвойствоМассив дочерних элементов узла в иерархии графика сцены. (только для чтения)
Объявление
Swift
var childNodes: [AnyObject] { get }
Objective C
@property(nonatomic, readonly) NSArray *childNodes
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Добавляет узел к массиву узла дочерних элементов.
Объявление
Swift
func addChildNode(_
child
: SCNNode)Objective C
- (void)addChildNode:(SCNNode *)
child
Параметры
child
Узел, который будет добавлен.
Обсуждение
Вызов этого метода добавляет узел до конца
childNodes
массив.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Добавляет узел к массиву узла дочерних элементов в указанном индексе.
Объявление
Objective C
- (void)insertChildNode:(SCNNode *)
child
atIndex:(NSUInteger)index
Параметры
child
index
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Удаляет узел из массива его родителя дочерних узлов.
Объявление
Swift
func removeFromParentNode()
Objective C
- (void)removeFromParentNode
Обсуждение
Удаление узлов от иерархии узла служит двум целям. Узлам принадлежит их содержание (дочерние узлы или присоединенные световые сигналы, конфигурации и другие объекты), так освобождение ненужных узлов может сократить использование памяти. Кроме того, SceneKit выполняет больше работы при рендеринге времени с большой, сложной иерархией узла, так удаление узлов, содержание которых, которое Вы не должны отображать, может улучшить производительность рендеринга.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Удаляет дочерний элемент из массива узла дочерних элементов и вставляет другой узел в его место.
Объявление
Objective C
- (void)replaceChildNode:(SCNNode *)
child
with:(SCNNode *)child2
Параметры
child
Существующий дочерний узел, который будет заменен.
child2
Обсуждение
Если оба
child
иchild2
узлы являются дочерними элементами узла, вызывание этого метода подкачивает их позиции в массиве. Обратите внимание на то, что удаление узла от иерархии узла может привести к нему освобождаемый.Вызов этого метода приводит к неопределенному поведению если
child
параметр не относится к дочернему элементу этого узла.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Возвраты все узлы в дочернем поддереве узла узла, удовлетворяющие тест, примененный блоком.
Объявление
Swift
func childNodesPassingTest(_
predicate
: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]Objective C
- (NSArray *)childNodesPassingTest:(BOOL (^)(SCNNode *child, BOOL *stop))
predicate
Параметры
predicate
Блок для применения к дочерним и порожденным узлам узла.
Блок берет два параметра:
child
Дочерний узел, в настоящее время искавший.
stop
Ссылка на булево значение. Набор
*stop
кYES
true
в блоке для прерывания последующей обработки дочернего поддерева узла.Блок возвращает булево значение, указывающее, включать ли
child
узел в массиве результатов поиска.
Возвращаемое значение
Массив, содержащий узлы, прошедшие тест.
Обсуждение
Используйте этот метод для поиска узлов с помощью теста, который Вы указываете. Например, можно искать пустые узлы с помощью блока, возвращающего YES для узлов чей
light
,camera
, иgeometry
свойства - всеnil
.SceneKit использует рекурсивный обход перед порядком для поиска дочернего поддерева узла — т.е. поиски блока узел, прежде чем это будет искать каждый из дочерних элементов узла, и это ищет все дочерние элементы узла прежде, чем искать любой из одноуровневых узлов того узла.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Возвращает первый узел в дочернем поддереве узла узла с указанным именем.
Объявление
Objective C
- (SCNNode *)childNodeWithName:(NSString *)
name
recursively:(BOOL)recursively
Параметры
name
Имя узла для поиска.
recursively
YES
true
искать все дочернее поддерево узла, илиNO
false
искать только непосредственные дочерние элементы узла.Обсуждение
Если
recursive
параметрYES
true
, SceneKit использует обход перед порядком для поиска дочернего поддерева узла — т.е. поиски блока узел, прежде чем это будет искать каждый из дочерних элементов узла, и это ищет все дочерние элементы узла прежде, чем искать любой из одноуровневых узлов того узла. Иначе, SceneKit ищет только те узлы в узлеchildNodes
массив.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Выполняет указанный блок для каждого из дочерних и порожденных узлов узла.
Объявление
Swift
func enumerateChildNodesUsingBlock(_
block
: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Void)Objective C
- (void)enumerateChildNodesUsingBlock:(void (^)(SCNNode *child, BOOL *stop))
block
Параметры
block
Блок для применения к дочерним и порожденным узлам узла.
Блок берет два параметра:
child
Дочерний узел, в настоящее время будучи оцененным.
stop
Ссылка на булево значение. Набор
*stop
кYES
true
в блоке для прерывания последующей обработки дочернего поддерева узла.
Обсуждение
SceneKit использует рекурсивный обход перед порядком для обработки дочернего поддерева узла — т.е. блочные выполнения для узла, прежде чем это будет работать за каждым из дочерних элементов узла, и это обрабатывает все дочерние элементы узла прежде, чем обработать любой из одноуровневых узлов того узла.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
filters
СвойствоМассив Базового Изображения фильтрует, чтобы быть примененным к представленному содержанию узла.
Обсуждение
Массив
CIFilter
объекты.Когда этот массив непуст, SceneKit представляет узел (и его дочерняя иерархия узла) в изображение буферизуют, и затем применяет фильтры прежде, чем составить вывод фильтров в представленную сцену. Порядок массива определяет порядок Базовой цепочки фильтра Изображения. Например, следующий код применяет пикселизировать фильтр к представленному узлу и затем фильтру размытия к выводу пикселизировать фильтра:
CIFilter *gaussianBlurFilter = [CIFilter filterWithName:@"CIGaussianBlur"];
gaussianBlurFilter.name = @"blur";
CIFilter *pixellateFilter = [CIFilter filterWithName:@"CIPixellate"];
pixellateFilter.name = @"pixellate";
node.filters = @[ pixellateFilter, gaussianBlurFilter ];
После присоединения фильтров к узлу можно изменить параметры фильтра только путем вызова
setValue:forKeyPath:
на узле фильтр присоединен. (Непосредственно изменение параметров фильтра, присоединенного к узлу, приводит к неопределенному поведению.)Можно также анимировать параметры фильтра их ключевыми путями, как в коде ниже этого анимирует один из фильтров от предыдущего примера.
animation = [CABasicAnimation animationWithKeyPath:@"filters.pixellate.inputScale"];
animation.toValue = @50;
animation.fromValue = @0;
animation.autoreverses = YES;
animation.repeatCount = FLT_MAX;
animation.duration = 2.0;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
[node addAnimation:animation forKey:nil];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
rendererDelegate
СвойствоОбъект, ответственный за рендеринг пользовательского содержания для узла с помощью OpenGL.
Объявление
Swift
unowned(unsafe) var rendererDelegate: SCNNodeRendererDelegate?
Objective C
@property(nonatomic, assign) id< SCNNodeRendererDelegate > rendererDelegate
Обсуждение
Делегат средства рендеринга является пользовательским объектом, который Вы обеспечиваете. Когда SceneKit иначе представил бы содержание узла, он вместо этого говорит Вашему делегату средства рендеринга рисовать содержание для узла в контекст OpenGL, используемый для сцены.
Как правило, Вы используете делегата средства рендеринга к узлу, не имеющему никаких связанных конфигураций, камер или световых сигналов. Такой узел только описывает расположение в пространстве (и система координат, преобразованная иерархией узла, содержащей его), который обеспечивает, привязка в сцене для любого пользовательского OpenGL, привлекающего Вас, хотят выполнить.
Если Вы вместо этого хотите настроить результаты рендеринга SceneKit геометрии и материалов, используйте
SCNShadable
протокол для присоединения программ построения теней GLSL к объектам SceneKit.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
physicsBody
СвойствоОрганизация физики связалась с узлом.
Объявление
Swift
var physicsBody: SCNPhysicsBody?
Objective C
@property(nonatomic, retain) SCNPhysicsBody *physicsBody
Обсуждение
Значение по умолчанию
nil
, указание, что узел не участвует в моделировании физики вообще. При обеспечении организации физики SceneKit обновляет позицию и ориентацию узла каждый раз, когда это обрабатывает шаг своего моделирования физики. Для получения дополнительной информации о системе физики SceneKit посмотрите Ссылку класса SCNPhysicsWorld.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
physicsField
СвойствоПоле физики связалось с узлом.
Объявление
Swift
var physicsField: SCNPhysicsField?
Objective C
@property(nonatomic, retain) SCNPhysicsField *physicsField
Обсуждение
Поля физики применяют силы к другим организациям физики в указанной области вокруг их узла. Например, a
SCNPhysicsDragField
поле замедляет все организации физики, проходящие через ее область. Для полного списка типов поля и их эффектов, посмотрите Ссылку класса SCNPhysicsField.Узел может содержать и организацию физики, определяющую поведение коллизии и поле физики, определяющее силы в его области. Например, два узла, содержащие организации физики и радиальные поля силы тяжести, будут притянуты друг другу, но возвратятся друг от друга, когда они столкнутся.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Присоединяет систему частиц к узлу.
Объявление
Swift
func addParticleSystem(_
system
: SCNParticleSystem)Objective C
- (void)addParticleSystem:(SCNParticleSystem *)
system
Параметры
system
Система частиц.
Обсуждение
Когда присоединено к узлу, эмиттерное расположение системы частиц следует за тем узлом, когда это перемещается через сцену. Чтобы вместо этого присоединить систему частиц к расположению в пространстве мировой координаты сцены используйте соответствующий метод на
SCNScene
.Для получения дополнительной информации в системах частиц, посмотрите Ссылку класса SCNParticleSystem.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
particleSystems
СвойствоСистемы частиц, присоединенные к узлу. (только для чтения)
Объявление
Swift
var particleSystems: [AnyObject]? { get }
Objective C
@property(readonly) NSArray *particleSystems
Обсуждение
Массив
SCNParticleSystem
объекты, непосредственно присоединенные к узлу. Этот массив не включает системы частиц, присоединенные к дочерним узлам узла.Для получения дополнительной информации в системах частиц, посмотрите Ссылку класса SCNParticleSystem.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Удаляет систему частиц, присоединенную к узлу.
Объявление
Swift
func removeParticleSystem(_
system
: SCNParticleSystem)Objective C
- (void)removeParticleSystem:(SCNParticleSystem *)
system
Параметры
system
Система частиц.
Обсуждение
Этот метод не имеет никакого эффекта если
system
параметр не ссылается на систему частиц, непосредственно присоединенную к узлу.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Удаляет любые системы частиц, непосредственно присоединенные к узлу.
Объявление
Swift
func removeAllParticleSystems()
Objective C
- (void)removeAllParticleSystems
Обсуждение
Вызов этого метода не удаляет системы частиц, присоединенные к узлам в сцене.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Создает копию узла и его дочерних элементов.
Объявление
Swift
func clone() -> AnyObject
Objective C
- (id)clone
Обсуждение
Этот метод рекурсивно копирует узел и его дочерние узлы. Для нерекурсивной копии используйте наследованный
copy
метод, создающий копию узла без любых дочерних узлов.Клонирование или копирование узла создают копию объекта узла, но не конфигурации, световые сигналы, камеры и другие объекты SceneKit, присоединенные к нему — вместо этого, каждый скопированный узел совместно использует ссылки на эти объекты.
Это поведение означает, что можно использовать клонирование для, например, поместить ту же геометрию в нескольких расположениях в сцене, не поддерживая многократные копии геометрии и ее материалов. Однако это также означает, что изменения в объектах, присоединенных к одному узлу, будут влиять на другие узлы, совместно использующие те же присоединения. Например, для рендеринга двух копий узла с помощью различных материалов необходимо скопировать и узел и его геометрию прежде, чем присвоить новый материал.
- (void)duplicateNode:(SCNNode *)node withMaterial:(SCNMaterial *)material
{
SCNNode *newNode = [node clone];
newNode.geometry = [node.geometry copy];
newNode.geometry.firstMaterial = material;
}
Многократные копии объекта SCNGeometry эффективно совместно используют те же данные вершины, таким образом, можно скопировать конфигурации без значительной потери производительности.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Создает оптимизированную копию узла и его дочерних элементов.
Возвращаемое значение
Новый единственный узел, содержащий объединенные конфигурации и материалы узла и его дочернего поддерева узла.
Обсуждение
Рендеринг сложных иерархий узла может понести расходы производительности. Каждая геометрия и материал требуют, чтобы отдельная команда получения была отправлена в GPU, и каждый рисует команду, идет с производительностью наверху. Если Вы планируете часть иерархии узла Вашей сцены остаться статичными (относительно себя, если не остальная часть сцены), используйте этот метод для создания единственного узла, содержащего все элементы той иерархии узла, что SceneKit может представить использование, меньше рисуют команды.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Ищет дочернее поддерево узла узла объекты, пересекающие линейный сегмент между двумя указанными точками.
Объявление
Swift
func hitTestWithSegmentFromPoint(_
pointA
: SCNVector3, toPointpointB
: SCNVector3, optionsoptions
: [NSObject : AnyObject]?) -> [AnyObject]?Objective C
- (NSArray *)hitTestWithSegmentFromPoint:(SCNVector3)
pointA
toPoint:(SCNVector3)pointB
options:(NSDictionary *)options
Параметры
pointA
Конечная точка линейного сегмента для поиска вперед, указанный в системе локальной координаты узла.
pointB
Другая конечная точка линейного сегмента для поиска вперед, указанный в системе локальной координаты узла.
options
Словарь опций, влияющих на поиск. Посмотрите
Hit Testing Options Keys
для приемлемых значений.Возвращаемое значение
Массив
SCNHitTestResult
объекты, представляющие результаты поиска.Обсуждение
Тестирование хита является процессом нахождения элементов сцены, расположенной вдоль указанного линейного сегмента в координатном пространстве сцены (или тот из определенного узла в сцене). Например, можно использовать этот метод, чтобы определить, достигнет ли снаряд, запущенный игровым символом, своего целевого показателя.
Для поиска элемента сцены, соответствующего двумерной точке в представленном изображении, используйте средство рендеринга
hitTest:options:
метод вместо этого.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Преобразовывает позицию в координатное пространство узла от определенного другим узлом.
Объявление
Swift
func convertPosition(_
position
: SCNVector3, fromNodenode
: SCNNode?) -> SCNVector3Objective C
- (SCNVector3)convertPosition:(SCNVector3)
position
fromNode:(SCNNode *)node
Параметры
position
Позиция в пространстве локальной координаты узла.
node
Другой узел в том же графике сцены как узел, или
nil
преобразовать в пространство мировой координаты сцены.Возвращаемое значение
Позиция в пространстве локальной координаты определяется другим узлом.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Преобразовывает позицию от координатного пространства узла до определенного другим узлом.
Объявление
Swift
func convertPosition(_
position
: SCNVector3, toNodenode
: SCNNode?) -> SCNVector3Objective C
- (SCNVector3)convertPosition:(SCNVector3)
position
toNode:(SCNNode *)node
Параметры
position
Позиция в пространстве локальной координаты определяется другим узлом.
node
Другой узел в том же графике сцены как узел, или
nil
преобразовать из пространства мировой координаты сцены.Возвращаемое значение
Позиция в пространстве локальной координаты узла.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Преобразовывает трансформацию в координатное пространство узла от определенного другим узлом.
Объявление
Swift
func convertTransform(_
transform
: SCNMatrix4, fromNodenode
: SCNNode?) -> SCNMatrix4Objective C
- (SCNMatrix4)convertTransform:(SCNMatrix4)
transform
fromNode:(SCNNode *)node
Параметры
transform
Трансформация относительно координатного пространства узла.
node
Другой узел в том же графике сцены как узел, или
nil
преобразовать в пространство мировой координаты сцены.Возвращаемое значение
Трансформация относительно пространства локальной координаты определяется другим узлом.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Преобразовывает трансформацию от координатного пространства узла до определенного другим узлом.
Объявление
Swift
func convertTransform(_
transform
: SCNMatrix4, toNodenode
: SCNNode?) -> SCNMatrix4Objective C
- (SCNMatrix4)convertTransform:(SCNMatrix4)
transform
toNode:(SCNNode *)node
Параметры
transform
Трансформация относительно пространства локальной координаты определяется другим узлом.
node
Другой узел в том же графике сцены как узел, или
nil
преобразовать в пространство мировой координаты сцены.Возвращаемое значение
Трансформация относительно координатного пространства узла.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.