SCNNode
SCNNode объект представляет часть графика сцены. Узел отдельно не имеет никакого видимого содержания, когда сцена, содержащая его, представляется — он представляет только позицию в пространстве (и трансформация координатных пространств) относительно ее родительского узла. Для построения сцены Вы используете иерархию узлов, чтобы создать ее структуру, затем добавить световые сигналы, камеры и геометрию к узлам для создания видимого содержания.
Узлы определяют структуру сцены
Иерархия узлов или график сцены, в сцене определяет и организацию своего содержания и Вашу возможность представить и управлять тем содержанием использование SceneKit. Можно создать иерархию узла программно с помощью SceneKit, загрузиться один от файла, создаваемого с помощью 3D инструментов разработки, или объединить два подхода. SceneKit обеспечивает много утилит для организации и поиска графика сцены — для подробных данных, посмотрите методы в Управлении Иерархией Узла и Поиске Иерархии Узла.
rootNode объект в сцене определяет систему координат мира, представленного SceneKit. Каждый дочерний узел, который Вы добавляете к этому корневому узлу, создает свою собственную систему координат, поочередно наследованную его собственными дочерними элементами. Вы определяете трансформацию между системами координат с помощью узла position, rotation, и scale свойства свойств (или непосредственно использование transform свойство).
Вы используете иерархию узлов и трансформаций для моделирования содержания сцены в пути, удовлетворяющем потребностям приложения. Например, если Ваше приложение представляет анимированное представление солнечной системы, можно создать иерархию узла что небесные тела моделей относительно друг друга: Каждая планета может быть узлом с его орбитой и его текущей позицией в той орбите, определенной в системе координат солнца. Узел планеты определяет свое собственное координатное пространство, полезное и для указания вращения планеты и для орбит его лун (каждый из которых является дочерним узлом своей планеты). С этой иерархией сцены можно легко добавить, реалистическая анимация к сцене — анимирующий и оборот луны вокруг ее планеты и планету вокруг солнца объединит анимации так, чтобы луна следовала за планетой.
Присоединения узла определяют визуальное содержание и поведение
Иерархия узла определяет пространственную и логическую структуру сцены, но не ее видимое содержание. Вы добавляете 2D и 3D объекты к сцене путем присоединения SCNGeometry объекты к узлам. (Конфигурации, в свою очередь, присоединили SCNMaterial объекты, определяющие их появление.) Для штриховки конфигураций в сцене со световыми эффектами и эффектами тени добавьте узлы с присоединенным SCNLight объекты. Для управления точкой зрения, с которой сцена появляется, когда представлено добавьте узлы с присоединенным SCNCamera объекты.
Для добавления основанных на физике способов поведения и специальных эффектов к содержанию SceneKit используйте другие типы присоединений узла. Например, SCNPhysicsBody объект определяет характеристики узла для моделирования физики, и SCNPhysicsField объект применяет силы к организациям физики в области вокруг узла. SCNParticleSystem объект, присоединенный к узлу, представляет эффекты частицы, такие как огонь, дождь или падающие листы в пространстве, определенном узлом.
Для улучшения производительности SceneKit может совместно использовать присоединения между многократными узлами. Например, в мчащейся игре, включающей много идентичных автомобилей, график сцены содержал бы много узлов — один, чтобы расположить и анимировать каждый автомобиль — но все автомобильные узлы сошлются на тот же геометрический объект.
Соответствует
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Создает и возвращает объект узла.
Объявление
Objective C
+ (instancetype)nodeВозвращаемое значение
Новый объект узла, или
nilесли инициализация не успешна.Оператор импорта
Objective C
@import SceneKit;Доступность
Доступный в OS X v10.8 и позже.
-
Создает и возвращает объект узла с указанной присоединенной геометрией.
Объявление
Swift
init(geometrygeometry: SCNGeometry) -> SCNNodeObjective C
+ (SCNNode *)nodeWithGeometry:(SCNGeometry *)geometryПараметры
geometryГеометрия, которая будет присоединена.
Возвращаемое значение
Новый объект узла с геометрией, присоединенной, или
nilесли инициализация не успешна.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Имя связалось с узлом.
Обсуждение
Можно обеспечить описательное имя для узла для создания управления графиком сцены проще. Узлы, загруженные из файла сцены, могут иметь имена, присвоенные художником, использующим 3D инструмент разработки. Используйте
childNodeWithName:recursively:илиchildNodesPassingTest:метод для получения узла от графика сцены его именем, илиSCNSceneSourceкласс для исследования узлов в файле сцены, не загружая его график сцены.Имена узлов и их присоединенных объектов сохраняются при экспорте сцены в файл с помощью
writeToURL:options:delegate:progressHandler:метод, и появляется в редакторе сцены XCode. Представление статистики SceneKit (см.showsStatistics) также показывает имена узлов с прикрепленными камерами.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Свет, присоединенный к узлу.
Обсуждение
Узел может иметь только один свет, присоединенный к нему. Объединить световые сигналы, таким образом, ими можно управлять или анимировать вместе, создать узел без света и добавлять другие узлы к нему.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Камера, присоединенная к узлу.
Обсуждение
Для использования камеры для отображения сцены установите
pointOfViewсвойство представления (или уровень или средство рендеринга) отображение сцены к узлу, содержащему камеру. Камера выглядит в направлении отрицательной оси z узла, таким образом, Вы нацеливаете камеру, меняя положение и ориентацию узла, содержащего его. Вы управляете геометрическими и оптическими параметрами камеры — проекцией, полем зрения, и глубиной резкости — использование присоединенногоSCNCameraобъект.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Геометрия, присоединенная к узлу.
Объявление
Swift
var geometry: SCNGeometry?Objective C
@property(nonatomic, retain) SCNGeometry *geometryОбсуждение
Узел может иметь только одну геометрию, присоединенную к нему. Объединить конфигурации, таким образом, ими можно управлять или анимировать вместе, создать узел без геометрии и добавлять другие узлы к нему.
Анимация геометрических свойств узла может переместить, повернуть, расширить и масштабировать свою геометрию. Для более усовершенствованных анимаций геометрии узла используйте
morpherиskinnerобъекты.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Объект morpher, ответственный за смешивание геометрии узла.
Объявление
Swift
var morpher: SCNMorpher?Objective C
@property(nonatomic, retain) SCNMorpher *morpherОбсуждение
Вы используете объект morpher интерполировать между многократными конфигурациями. Для получения дополнительной информации см. Ссылку класса SCNMorpher.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Объект кожевника, ответственный за скелетные анимации содержания узла.
Объявление
Swift
var skinner: SCNSkinner?Objective C
@property(nonatomic, retain) SCNSkinner *skinnerОбсуждение
Объект кожевника поддерживает иерархию узлов управления, которые могут деформировать геометрию узла с помощью скелетных анимаций, создаваемых во внешнем 3D инструменте разработки. Для получения дополнительной информации см. Ссылку класса SCNSkinner.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
categoryBitMask categoryBitMaskСвойствоМаска, определяющая, которому принадлежат категории узел.
Объявление
Swift
var categoryBitMask: IntObjective C
@property(nonatomic) NSUInteger categoryBitMaskОбсуждение
Можно присвоить каждый узел в сцене к одной или более категориям, где каждая категория соответствует немного в битовой маске. Вы определяете значения маски, используемые в Вашем приложении. Когда SceneKit представляет сцену, он сравнивает каждый узел
categoryBitMaskсвойство с битовыми масками категории любого объекта, участвующего в процессе рендеринга — световых сигналах, камерах, и методах — использование поразрядной операции И. Если результатом является ненулевое значение, SceneKit включает узел при рендеринге.Используйте битовую маску категории узла вместе с:
SCNLightобъектcategoryBitMaskсвойство для исключения узла из освещения того светаSCNCameraобъектcategoryBitMaskсвойство для создания узла невидимым для той камерыБитовые маски категории в
SCNTechniqueсловарь определения объекта, чтобы включать или исключить узел из фаз многопроходного метода рендеринга
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Возвращает объект узла, представляющий состояние узла, поскольку это в настоящее время появляется на экране.
Возвращаемое значение
Копия объекта узла текущей презентации.
Обсуждение
При использовании неявной анимации (см. Ссылку класса SCNTransaction) для изменения свойств узла те свойства узла сразу установлены в их целевые значения, даже при том, что анимированное содержание узла, кажется, переходит от старых значений свойств до нового. Во время анимации SceneKit поддерживает копию узла, названного узлом представления, свойства которого отражают переходные значения, определенные любыми анимациями в полете, в настоящее время влияющими на узел. Свойства узла представления обеспечивают близкое приближение для версии в настоящее время выводящегося на экран узла.
Не изменяйте свойства узла представления. (Пытающийся сделать так результаты в неопределенном поведении.) Вместо этого Вы используете узел представления, чтобы считать значения текущей анимации — например, создать новую анимацию, запускающуюся в тех значениях. Узел представления не имеет никаких родительских или дочерних узлов. К анимированным свойствам доступа связанных узлов используйте собственный узел
parentNodeиchildNodesсвойства иpresentationNodeметод каждого связанного узла.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
приостановленный приостановленныйСвойствоБулево значение, определяющее, выполнить ли действия и анимации, присоединенные к узлу и его дочерним узлам.
Объявление
Swift
var paused: BoolObjective C
@property(nonatomic, getter=isPaused) BOOL pausedОбсуждение
Значение по умолчанию этого свойства
NOfalse, указание, что SceneKit должен постоянно обновлять содержание узла. Приостановка узла паузы любые рабочие анимации или действия. Это свойство применяется к действиям и анимациям, присоединенным к самому узлу и присоединенным к любому из его дочерних или порожденных узлов.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
преобразовать преобразоватьСвойствоТрансформация применилась к узлу относительно своего родителя. Animatable.
Обсуждение
Трансформация является комбинацией узла
rotation,position, иscaleсвойства. Трансформация по умолчаниюSCNMatrix4Identity.Когда Вы устанавливаете значение этого свойства, узел
rotation,orientation,eulerAngles,position, иscaleсвойства автоматически изменяются для соответствия нового преобразования, и наоборот. SceneKit может выполнить это преобразование, только если преобразование, которое Вы обеспечиваете, является комбинацией вращения, перевода и операций масштабирования. При установке значения этого свойства к скошенной трансформации или к неаффинной трансформации значения этих свойств становятся неопределенными. Установка нового значения для любого из этих свойств заставляют SceneKit вычислять новую трансформацию, отбрасывание любых скошенных или неаффинных операций в исходной трансформации.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Перевод применился к узлу. Animatable.
Обсуждение
Позиция узла определяет местоположение его в системе координат ее родителя, как изменено узлом
pivotсвойство. Позиция по умолчанию является нулевым вектором, указывая, что узел помещается в источник системы координат родительского узла.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Ориентация узла, выраженная как угол вращения приблизительно ось. Animatable.
Обсуждение
Четырехкомпонентный вектор вращения указывает направление оси вращения в первых трех компонентах и углу вращения (в радианах) в четвертом. Вращение по умолчанию является нулевым вектором, не указывая вращения. Вращение применяется относительно узла
pivotсвойство.rotation,eulerAngles, иorientationсвойства все влияние вращательный аспект узлаtransformсвойство. Любое изменение в одном из этих свойств отражается в других.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
eulerAngles eulerAnglesСвойствоОриентация узла, выраженная как подача, отклонение от курса, и углы вращения, каждый в радианах. Animatable.
Объявление
Swift
var eulerAngles: SCNVector3Objective 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Доступность
Доступный в OS X v10.10 и позже.
-
ориентация ориентацияСвойствоОриентация узла, выраженная как кватернион. Animatable.
Объявление
Swift
var orientation: SCNQuaternionObjective C
@property(nonatomic) SCNQuaternion orientationОбсуждение
rotation,eulerAngles, иorientationсвойства все влияние вращательный аспект узлаtransformсвойство. Любое изменение в одном из этих свойств отражается в других.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Масштабный коэффициент применился к узлу. Animatable.
Обсуждение
Каждый компонент вектора масштаба умножает соответствующую размерность геометрии узла. Масштаб по умолчанию
1.0во всех трех измерениях. Например, применение масштаба (2.0, 0.5, 2.0) к узлу, содержащему геометрию куба, сокращает свою высоту и увеличивает ее ширину и глубину. Масштабирование применяется относительно узлаpivotсвойство.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
См. также
-
Точка опоры для позиции узла, вращения и масштаба. Animatable.
Обсуждение
Центр узла является трансформацией между своим координатным пространством и используемым ее
position,rotation, иscaleсвойства. Центр по умолчаниюSCNMatrix4Identity, указывая, что позиция узла определяет местоположение источника своей системы координат, ее вращение об оси через ее центр, и ее масштаб также относительно той центральной точки.Изменение центра преобразовывает, изменяет эти способы поведения многими полезными способами. Вы можете:
Сместите содержание узла относительно его позиции. Например, путем установки центра в перевод преобразовывают Вас, может расположить узел, содержащий геометрию сферы относительно того, где сфера оперлась бы на пол вместо относительно его центра.
Переместите ось узла вращения. Например, с переводом преобразовывают Вас, может заставить узел вращаться вокруг далекой точки вместо того, чтобы вращаться вокруг ее центра, и с вращением преобразовывают Вас, может наклонить ось вращения.
Скорректируйте центральную точку и направление для масштабирования узла. Например, с переводом преобразовывают Вас, может заставить узел расти или уменьшаться относительно угла вместо к его центру.
Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
worldTransform worldTransformСвойствоМировое преобразование применилось к узлу. (только для чтения)
Объявление
Swift
var worldTransform: SCNMatrix4 { get }Objective C
@property(nonatomic, readonly) SCNMatrix4 worldTransformОбсуждение
Мировое преобразование является трансформацией координатного пространства узла относительно координатного пространства сцены. Эта трансформация является связью узла
transformсвойство с тем из его родительского узла, родителя родителя, и т.д. доrootNodeобъект сцены.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
См. также
-
ограничения ограниченияСвойствоСписок ограничений, влияющих на трансформацию узла.
Обсуждение
Массив ограничительных объектов. Перед рендерингом SceneKit оценивает все ограничения, присоединенные к иерархии узла, и корректирует трансформации узла соответственно.
Используйте
SCNLookAtConstraintкласс, чтобы заставить узел всегда указать на другой узел, как раз когда оба перемещены, илиSCNTransformConstraintкласс для применения произвольных трансформаций в ограничительное время оценки.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Булево значение, определяющее видимость содержания узла. Animatable.
Объявление
Swift
var hidden: BoolObjective C
@property(nonatomic, getter=isHidden) BOOL hiddenОбсуждение
Значение по умолчанию этого свойства нет, указывая, что SceneKit должен представить конфигурации и световые сигналы использования, присоединенные к узлу или его дочерним элементам. Измените значение этого свойства на
YEStrueисключить присоединенные конфигурации и световые сигналы от рендеринга. (Камеры, присоединенные к узлу или его дочерним элементам, не затронуты этим свойством.) Сокрытие узла также скрывает свои дочерние узлы рекурсивно.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit. Сокрытие или показ узла в анимации приводят к эффекту постепенного исчезновения или постепенному появлению.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
непрозрачность непрозрачностьСвойствоЗначение непрозрачности узла. Animatable.
Обсуждение
Возможные значения между
0.0(полностью прозрачный) и1.0(полностью непрозрачный). Значение по умолчанию1.0.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
renderingOrder renderingOrderСвойствоПорядок содержание узла нарисован в относительно того из других узлов.
Обсуждение
Узлы с большими заказами рендеринга представляются в последний раз. Значения по умолчанию для обнуления.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
castsShadow castsShadowСвойствоБулево значение, определяющее, представляет ли SceneKit содержание узла в схемах затенения.
Объявление
Swift
var castsShadow: BoolObjective C
@property(nonatomic) BOOL castsShadowОбсуждение
SceneKit представляет тени путем рендеринга изображения схемы затенения, содержащего контуры содержания сцены, и затем предполагая что изображение на сцену. SceneKit выполняет этот процесс один раз для каждого
SCNLightобъект в сцене, чейcastsShadowсвойствоYEStrue. Поскольку схема затенения, представляющая части перерендеринга сцены, это несет расходы производительности. Для минимизации этой стоимости производительности исключите узлы из рендеринга схемы затенения путем установки узлаcastsShadowсвойство кNOfalse.Для получения дополнительной информации на теневом рендеринге, см. Ссылку класса SCNLight.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
parentNode parentNodeСвойствоРодитель узла в иерархии графика сцены. (только для чтения)
Объявление
Swift
var parentNode: SCNNode? { get }Objective C
@property(nonatomic, readonly) SCNNode *parentNodeОбсуждение
Для сцены
rootNodeобъект, значение этого свойстваnil.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
childNodes childNodesСвойствоМассив дочерних элементов узла в иерархии графика сцены. (только для чтения)
Объявление
Swift
var childNodes: [AnyObject] { get }Objective C
@property(nonatomic, readonly) NSArray *childNodesОператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Добавляет узел к массиву узла дочерних элементов.
Объявление
Swift
func addChildNode(_child: SCNNode)Objective C
- (void)addChildNode:(SCNNode *)childПараметры
childУзел, который будет добавлен.
Обсуждение
Вызов этого метода добавляет узел до конца
childNodesмассив.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
См. также
-
Добавляет узел к массиву узла дочерних элементов в указанном индексе.
Объявление
Objective C
- (void)insertChildNode:(SCNNode *)childatIndex:(NSUInteger)indexПараметры
childindexОператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
См. также
-
Удаляет узел из массива его родителя дочерних узлов.
Объявление
Swift
func removeFromParentNode()Objective C
- (void)removeFromParentNodeОбсуждение
Удаление узлов от иерархии узла служит двум целям. Узлам принадлежит их содержание (дочерние узлы или присоединенные световые сигналы, конфигурации и другие объекты), так освобождение ненужных узлов может сократить использование памяти. Кроме того, SceneKit выполняет больше работы при рендеринге времени с большой, сложной иерархией узла, так удаление узлов, содержание которых, которое Вы не должны отображать, может улучшить производительность рендеринга.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Удаляет дочерний элемент из массива узла дочерних элементов и вставляет другой узел в его место.
Объявление
Objective C
- (void)replaceChildNode:(SCNNode *)childwith:(SCNNode *)child2Параметры
childСуществующий дочерний узел, который будет заменен.
child2Обсуждение
Если оба
childиchild2узлы являются дочерними элементами узла, вызывание этого метода подкачивает их позиции в массиве. Обратите внимание на то, что удаление узла от иерархии узла может привести к нему освобождаемый.Вызов этого метода приводит к неопределенному поведению если
childпараметр не относится к дочернему элементу этого узла.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Возвраты все узлы в дочернем поддереве узла узла, удовлетворяющие тест, примененный блоком.
Объявление
Swift
func childNodesPassingTest(_predicate: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]Objective C
- (NSArray *)childNodesPassingTest:(BOOL (^)(SCNNode *child, BOOL *stop))predicateПараметры
predicateБлок для применения к дочерним и порожденным узлам узла.
Блок берет два параметра:
childДочерний узел, в настоящее время искавший.
stopСсылка на булево значение. Набор
*stopкYEStrueв блоке для прерывания последующей обработки дочернего поддерева узла.Блок возвращает булево значение, указывающее, включать ли
childузел в массиве результатов поиска.
Возвращаемое значение
Массив, содержащий узлы, прошедшие тест.
Обсуждение
Используйте этот метод для поиска узлов с помощью теста, который Вы указываете. Например, можно искать пустые узлы с помощью блока, возвращающего YES для узлов чей
light,camera, иgeometryсвойства - всеnil.SceneKit использует рекурсивный обход перед порядком для поиска дочернего поддерева узла — т.е. поиски блока узел, прежде чем это будет искать каждый из дочерних элементов узла, и это ищет все дочерние элементы узла прежде, чем искать любой из одноуровневых узлов того узла.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Возвращает первый узел в дочернем поддереве узла узла с указанным именем.
Объявление
Objective C
- (SCNNode *)childNodeWithName:(NSString *)namerecursively:(BOOL)recursivelyПараметры
nameИмя узла для поиска.
recursivelyYEStrueискать все дочернее поддерево узла, илиNOfalseискать только непосредственные дочерние элементы узла.Обсуждение
Если
recursiveпараметрYEStrue, SceneKit использует обход перед порядком для поиска дочернего поддерева узла — т.е. поиски блока узел, прежде чем это будет искать каждый из дочерних элементов узла, и это ищет все дочерние элементы узла прежде, чем искать любой из одноуровневых узлов того узла. Иначе, SceneKit ищет только те узлы в узлеchildNodesмассив.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.8 и позже.
-
Выполняет указанный блок для каждого из дочерних и порожденных узлов узла.
Объявление
Swift
func enumerateChildNodesUsingBlock(_block: (SCNNode!, UnsafeMutablePointer<ObjCBool>) -> Void)Objective C
- (void)enumerateChildNodesUsingBlock:(void (^)(SCNNode *child, BOOL *stop))blockПараметры
blockБлок для применения к дочерним и порожденным узлам узла.
Блок берет два параметра:
childДочерний узел, в настоящее время будучи оцененным.
stopСсылка на булево значение. Набор
*stopкYEStrueв блоке для прерывания последующей обработки дочернего поддерева узла.
Обсуждение
SceneKit использует рекурсивный обход перед порядком для обработки дочернего поддерева узла — т.е. блочные выполнения для узла, прежде чем это будет работать за каждым из дочерних элементов узла, и это обрабатывает все дочерние элементы узла прежде, чем обработать любой из одноуровневых узлов того узла.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Массив Базового Изображения фильтрует, чтобы быть примененным к представленному содержанию узла.
Обсуждение
Массив
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Доступность
Доступный в OS X v10.9 и позже.
-
rendererDelegate 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Доступность
Доступный в OS X v10.8 и позже.
-
physicsBody physicsBodyСвойствоОрганизация физики связалась с узлом.
Объявление
Swift
var physicsBody: SCNPhysicsBody?Objective C
@property(nonatomic, retain) SCNPhysicsBody *physicsBodyОбсуждение
Значение по умолчанию
nil, указание, что узел не участвует в моделировании физики вообще. При обеспечении организации физики SceneKit обновляет позицию и ориентацию узла каждый раз, когда это обрабатывает шаг своего моделирования физики. Для получения дополнительной информации о системе физики SceneKit посмотрите Ссылку класса SCNPhysicsWorld.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
physicsField physicsFieldСвойствоПоле физики связалось с узлом.
Объявление
Swift
var physicsField: SCNPhysicsField?Objective C
@property(nonatomic, retain) SCNPhysicsField *physicsFieldОбсуждение
Поля физики применяют силы к другим организациям физики в указанной области вокруг их узла. Например, a
SCNPhysicsDragFieldполе замедляет все организации физики, проходящие через ее область. Для полного списка типов поля и их эффектов, посмотрите Ссылку класса SCNPhysicsField.Узел может содержать и организацию физики, определяющую поведение коллизии и поле физики, определяющее силы в его области. Например, два узла, содержащие организации физики и радиальные поля силы тяжести, будут притянуты друг другу, но возвратятся друг от друга, когда они столкнутся.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Присоединяет систему частиц к узлу.
Объявление
Swift
func addParticleSystem(_system: SCNParticleSystem)Objective C
- (void)addParticleSystem:(SCNParticleSystem *)systemПараметры
systemСистема частиц.
Обсуждение
Когда присоединено к узлу, эмиттерное расположение системы частиц следует за тем узлом, когда это перемещается через сцену. Чтобы вместо этого присоединить систему частиц к расположению в пространстве мировой координаты сцены используйте соответствующий метод на
SCNScene.Для получения дополнительной информации в системах частиц, посмотрите Ссылку класса SCNParticleSystem.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
particleSystems particleSystemsСвойствоСистемы частиц, присоединенные к узлу. (только для чтения)
Объявление
Swift
var particleSystems: [AnyObject]? { get }Objective C
@property(readonly) NSArray *particleSystemsОбсуждение
Массив
SCNParticleSystemобъекты, непосредственно присоединенные к узлу. Этот массив не включает системы частиц, присоединенные к дочерним узлам узла.Для получения дополнительной информации в системах частиц, посмотрите Ссылку класса SCNParticleSystem.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Удаляет систему частиц, присоединенную к узлу.
Объявление
Swift
func removeParticleSystem(_system: SCNParticleSystem)Objective C
- (void)removeParticleSystem:(SCNParticleSystem *)systemПараметры
systemСистема частиц.
Обсуждение
Этот метод не имеет никакого эффекта если
systemпараметр не ссылается на систему частиц, непосредственно присоединенную к узлу.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Удаляет любые системы частиц, непосредственно присоединенные к узлу.
Объявление
Swift
func removeAllParticleSystems()Objective C
- (void)removeAllParticleSystemsОбсуждение
Вызов этого метода не удаляет системы частиц, присоединенные к узлам в сцене.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.10 и позже.
-
Создает копию узла и его дочерних элементов.
Объявление
Swift
func clone() -> AnyObjectObjective 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Доступность
Доступный в OS X v10.8 и позже.
-
Создает оптимизированную копию узла и его дочерних элементов.
Возвращаемое значение
Новый единственный узел, содержащий объединенные конфигурации и материалы узла и его дочернего поддерева узла.
Обсуждение
Рендеринг сложных иерархий узла может понести расходы производительности. Каждая геометрия и материал требуют, чтобы отдельная команда получения была отправлена в GPU, и каждый рисует команду, идет с производительностью наверху. Если Вы планируете часть иерархии узла Вашей сцены остаться статичными (относительно себя, если не остальная часть сцены), используйте этот метод для создания единственного узла, содержащего все элементы той иерархии узла, что SceneKit может представить использование, меньше рисуют команды.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Ищет дочернее поддерево узла узла объекты, пересекающие линейный сегмент между двумя указанными точками.
Объявление
Swift
func hitTestWithSegmentFromPoint(_pointA: SCNVector3, toPointpointB: SCNVector3, optionsoptions: [NSObject : AnyObject]?) -> [AnyObject]?Objective C
- (NSArray *)hitTestWithSegmentFromPoint:(SCNVector3)pointAtoPoint:(SCNVector3)pointBoptions:(NSDictionary *)optionsПараметры
pointAКонечная точка линейного сегмента для поиска вперед, указанный в системе локальной координаты узла.
pointBДругая конечная точка линейного сегмента для поиска вперед, указанный в системе локальной координаты узла.
optionsСловарь опций, влияющих на поиск. Посмотрите
Hit Testing Options Keysдля приемлемых значений.Возвращаемое значение
Массив
SCNHitTestResultобъекты, представляющие результаты поиска.Обсуждение
Тестирование хита является процессом нахождения элементов сцены, расположенной вдоль указанного линейного сегмента в координатном пространстве сцены (или тот из определенного узла в сцене). Например, можно использовать этот метод, чтобы определить, достигнет ли снаряд, запущенный игровым символом, своего целевого показателя.
Для поиска элемента сцены, соответствующего двумерной точке в представленном изображении, используйте средство рендеринга
hitTest:options:метод вместо этого.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Преобразовывает позицию в координатное пространство узла от определенного другим узлом.
Объявление
Swift
func convertPosition(_position: SCNVector3, fromNodenode: SCNNode?) -> SCNVector3Objective C
- (SCNVector3)convertPosition:(SCNVector3)positionfromNode:(SCNNode *)nodeПараметры
positionПозиция в пространстве локальной координаты узла.
nodeДругой узел в том же графике сцены как узел, или
nilпреобразовать в пространство мировой координаты сцены.Возвращаемое значение
Позиция в пространстве локальной координаты определяется другим узлом.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Преобразовывает позицию от координатного пространства узла до определенного другим узлом.
Объявление
Swift
func convertPosition(_position: SCNVector3, toNodenode: SCNNode?) -> SCNVector3Objective C
- (SCNVector3)convertPosition:(SCNVector3)positiontoNode:(SCNNode *)nodeПараметры
positionПозиция в пространстве локальной координаты определяется другим узлом.
nodeДругой узел в том же графике сцены как узел, или
nilпреобразовать из пространства мировой координаты сцены.Возвращаемое значение
Позиция в пространстве локальной координаты узла.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Преобразовывает трансформацию в координатное пространство узла от определенного другим узлом.
Объявление
Swift
func convertTransform(_transform: SCNMatrix4, fromNodenode: SCNNode?) -> SCNMatrix4Objective C
- (SCNMatrix4)convertTransform:(SCNMatrix4)transformfromNode:(SCNNode *)nodeПараметры
transformТрансформация относительно координатного пространства узла.
nodeДругой узел в том же графике сцены как узел, или
nilпреобразовать в пространство мировой координаты сцены.Возвращаемое значение
Трансформация относительно пространства локальной координаты определяется другим узлом.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
-
Преобразовывает трансформацию от координатного пространства узла до определенного другим узлом.
Объявление
Swift
func convertTransform(_transform: SCNMatrix4, toNodenode: SCNNode?) -> SCNMatrix4Objective C
- (SCNMatrix4)convertTransform:(SCNMatrix4)transformtoNode:(SCNNode *)nodeПараметры
transformТрансформация относительно пространства локальной координаты определяется другим узлом.
nodeДругой узел в том же графике сцены как узел, или
nilпреобразовать в пространство мировой координаты сцены.Возвращаемое значение
Трансформация относительно координатного пространства узла.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в OS X v10.9 и позже.
