Spec-Zone .ru
спецификации, руководства, описания, API

Библиотека Разработчика iOS

Разработчик

Ссылка платформы SceneKit

Введение

Классы   Протоколы   Другая ссылка  

SceneKit является платформой Objective C для создания приложений и игр, использующих 3D графику, комбинируя высокоэффективный механизм рендеринга с высоким уровнем, дескриптивным API. SceneKit поддерживает импорт, манипулирование и рендеринг 3D активов. В отличие от APIs низшего уровня, такого как OpenGL, которые требуют, чтобы Вы реализовали в точной подробности алгоритмы рендеринга, выводящие на экран сцену, SceneKit только требует описаний содержания Вашей сцены и действий или анимаций, которые Вы хотите, чтобы он выполнил. Для узнавания больше о SceneKit см. Руководство по программированию SceneKit.

Начало работы с SceneKit

SceneKit реализует содержание как иерархическую древовидную структуру узлов, также известных как график сцены. Сцена состоит из корневого узла, определяющего координатное пространство для мира сцены и другие узлы, заполняющие мир с видимым содержанием. SceneKit выводит на экран сцены в представлении, обрабатывая график сцены и выполняя анимации прежде эффективно представить каждый кадр на GPU.

Прежде, чем работать с SceneKit, необходимо быть знакомы с основными графическими понятиями, такими как системы координат и математика трехмерной геометрии. SceneKit использует правую систему координат, где (по умолчанию) направление представления приезжает отрицательная ось z, как проиллюстрировано на рисунке i-1.

Система координат рисунка I-1SceneKit image: ../Art/3d_coordinate_system.pdf

Таблица i-1 перечисляет рекомендуемый порядок чтения на самые важные классы в SceneKit. Читайте об этих классах перед хождением дальше к другим классам в платформе и создании Вашего приложения или игры.

Табличные I-1Important классы и протоколы в SceneKit

Класс / Протокол

Описание

SCNView & SCNSceneRenderer

Представление, выводящее на экран (или рендеринг) содержание SceneKit и протокол, определяющий важные методы для использования с представлениями SceneKit.

SCNScene

Контейнер для всего содержания SceneKit. Вы загружаете сцену из файла, создаваемого в 3D инструменте разработки, или создаете тот программно, затем выводите на экран его в представлении.

SCNNode

Основа сцены. Иерархия узлов определяет логическую структуру сцены, и Вы обеспечиваете видимое содержание путем присоединения конфигураций, световых сигналов и камер к узлам.

SCNGeometry

Трехмерный объект, который может быть присоединен к узлу. Геометрия (иногда называемый моделью или сеткой) определяет только форму или форму для видимого объекта. Для определения поверхностного появления объекта, Вы присоединяете материалы к нему.

Можно загрузить конфигурации, создаваемые в 3D инструментах разработки из файла сцены, или создать их использование классы SceneKit для примитивных форм, вытеснил 2D формы и текст и пользовательские данные вершины.

SCNMaterial

Допускающее повторное использование определение поверхностных свойств появления для объекта. Материалы указывают, как поверхность окрашена или текстурирована и как она реагирует на световые сигналы в сцене.

SCNLight

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

SCNCamera

Виртуальная камера, которая может быть присоединена к узлу, обеспечив точку зрения для рендеринга сцены.

Анимация содержания SceneKit

Поддержка анимации SceneKit основывается на Базовой платформе Анимации. (Для фона на Базовой Анимации считайте Базовое Руководство по программированию Анимации.) Несколько классов SceneKit определяют animatable свойства — можно создать анимации что переход гладко между двумя значениями свойства. Например, анимация узла opacity свойство постепенно появляется видимое содержание узла или. Можно создать анимации неявно или явно.

Вы создаете анимацию неявно путем изменения значения animatable свойства. SceneKit автоматически комбинирует все изменения, которые Вы вносите в сцену во время одной передачи через цикл выполнения в единственную атомарную работу названный транзакцией, представленной SCNTransaction класс. Продолжительность транзакции по умолчанию является нулем, таким образом, изменения, которые Вы вносите в animatable свойства, сразу происходят. Однако при увеличении продолжительности анимации транзакции все изменения в animatable свойствах автоматически анимируют. Когда Вы хотите быстро анимировать разовое изменение или анимировать несколько изменений свойства вместе, не пишущий много кода анимации, как в Перечислении i-1 ниже, неявная анимация полезна. Для получения дополнительной информации на неявной анимации, см. Ссылку класса SCNTransaction.

Анимация перечисления I-1Implicit, делающая блок текстового падения из сцены при исчезновении

Swift

  • func fallAndFade(sender: AnyObject) {
  • SCNTransaction.setAnimationDuration(1.0)
  • textNode.position = SCNVector3(x: 0.0, y: -10.0, z: 0.0)
  • textNode.opacity = 0.0
  • }

Objective C

  • - (IBAction)fallAndFade:(id)sender
  • {
  • [SCNTransaction setAnimationDuration:1.0];
  • _textNode.position = SCNVector3Make(0.0, -10.0, 0.0);
  • _textNode.opacity = 0.0;
  • }

Для более сложных анимаций можно явно создать объект Animation и присоединить его к анимируемому элементу сцены. Для явного создания анимации Вы выбираете a CAAnimation подкласс для типа анимации, которую Вы хотите создать, укажите свойство, которое будет анимировано с помощью кодирования значения ключа, затем установите параметры анимации. Вы тогда приводите анимацию в движение путем присоединения его к одному или более элементам сцены, как показано в Перечислении i-2. Используя различные Базовые классы Анимации можно объединить или упорядочить несколько анимаций или создать анимации, интерполирующие значение свойства между несколькими значениями ключевого кадра. Для получения дополнительной информации при создании объектов Animation, см. Базовое Руководство по программированию Анимации. Для получения дополнительной информации при присоединении анимаций к объектам SceneKit, см. Ссылку на протокол SCNAnimatable.

Анимация перечисления I-2Explicit для варьирования 3D глубины экструзии блока текста

Swift

  • let animation = CABasicAnimation(keyPath: "geometry.extrusionDepth")
  • animation.fromValue = 0.0
  • animation.toValue = 100.0
  • animation.duration = 1.0
  • animation.autoreverses = true
  • animation.repeatCount = Float.infinity
  • textNode.addAnimation(animation, forKey: "extrude")

Objective C

  • CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"geometry.extrusionDepth"];
  • animation.fromValue = @0.0;
  • animation.toValue = @100.0;
  • animation.duration = 1.0;
  • animation.autoreverses = YES;
  • animation.repeatCount = INFINITY;
  • [_textNode addAnimation:animation forKey:@"extrude"];

SceneKit также использует CAAnimation объекты для анимаций создали использование внешних 3D инструментов разработки и сохраненный в файлах сцены. Например, художник мог бы создать игровой персонаж с анимациями для обхода, перехода и других действий. Вы включаете эти анимации в свою игру путем загрузки объектов Animation из файла сцены с помощью SCNSceneSource класс и присоединение их к SCNNode объект, представляющий игровой символ.

Классы

NSObject

NSObject корневой класс большинства иерархий классов Objective C.

SCNAction

SCNAction объект является действием, выполняющимся узлом (SCNNode).

SCNAnimationEvent

Вы присоединяете SCNAnimationEvent возразите против анимации для выполнения блока в определенное время, когда будет играть анимация.

SCNCamera

SCNCamera объект управляет атрибутами камеры, присоединенными к узлу.

SCNConstraint

Ограничение автоматически корректирует трансформацию (позиция, вращение и масштаб) узла на основе правил, которые Вы определяете.

SCNIKConstraint

SCNIKConstraint объект автоматически корректирует ориентации одного или более узлов в указанной иерархии, применяя инверсную кинематику для создания цепочечной досягаемости к целевой точке.

SCNLookAtConstraint

SCNLookAtConstraint объект автоматически корректирует ориентацию узла так, чтобы он всегда указывал на другой узел.

SCNTransformConstraint

SCNTransformConstraint возразите выполняет блок, который Вы указываете для вычислений новой трансформации (позиция, вращение и масштаб) для каждого узла, затронутого ограничением.

SCNGeometry

SCNGeometry объект представляет трехмерную форму — набор вершин, normals и координат текстуры, определяющих поверхность, также известную как модель или сетка.

SCNBox

SCNBox геометрия моделирует шестисторонний многогранник, поверхности которого являются всеми прямоугольниками.

SCNCapsule

SCNCapsule геометрия моделирует правильный круговой цилиндр, концы которого ограничиваются с полушариями.

SCNCone

SCNCone геометрия моделирует прямой круговой конус или frustum.

SCNCylinder

SCNCylinder геометрия моделирует правильный круговой цилиндр.

SCNFloor

SCNFloor геометрия моделирует бесконечную плоскость.

SCNPlane

SCNPlane геометрия моделирует прямоугольную, одностороннюю плоскость указанной ширины и высоты.

SCNPyramid

SCNPyramid геометрия моделирует правильную прямоугольную пирамиду.

SCNShape

SCNShape объект является геометрией, создающей ее содержание из двумерного пути, дополнительно вытесненного для создания трехмерного объекта.

SCNSphere

SCNSphere геометрия моделирует сферу (также известный как шар или земной шар).

SCNText

SCNText объект является геометрией, создающей ее содержание из строки текста, представленного в 2D и дополнительно вытесненного для создания трехмерного объекта.

SCNTorus

SCNTorus геометрия моделирует кольцевой объект.

SCNTube

SCNTube геометрия моделирует трубку или канал — правильный круговой цилиндр с круговой дырой вдоль ее центральной оси.

SCNGeometryElement

SCNGeometryElement объект описывает, как вершины соединяются для формирования поверхности трехмерного объекта или геометрии.

SCNGeometrySource

SCNGeometrySource объект указывает данные на вершину для набора вершин, формирующих поверхность трехмерного объекта или геометрию.

SCNHitTestResult

Тестирование хита является процессом нахождения элементов сцены, расположенной в указанной точке, или вдоль указанного линейного сегмента (или луч).

SCNLevelOfDetail

Использовать SCNLevelOfDetail объекты включить автоматическую замену альтернативных уровней детализации для геометрии.

SCNLight

SCNLight объект представляет источник света.

SCNMaterial

SCNMaterial объект управляет освещением и штриховкой атрибутов, связанных с поверхностью геометрии, которые определяют ее появление, когда представлено.

SCNMaterialProperty

SCNMaterialProperty объект представляет содержание — цвет, текстуру, или другие визуальные элементы — одного из визуальных свойств материала.

SCNMorpher

SCNMorpher объект деформирует поверхность геометрии узла, гладко переходящей между основной геометрией и один или несколько целевыми конфигурациями.

SCNNode

SCNNode объект представляет часть графика сцены.

SCNParticlePropertyController

SCNParticlePropertyController возразите использованию Базовая семантика Анимации для анимации свойства частиц, представленных SCNParticleSystem объект.

SCNParticleSystem

SCNParticleSystem объект автоматически создает, анимирует и представляет систему частиц — маленьких спрайтов изображения — согласно высокоуровневому моделированию, общее поведение которого Вы указываете.

SCNPhysicsBehavior

SCNPhysicsBehavior объект определяет высокоуровневое поведение для одной или более организаций физики, изменяя результаты моделирования физики.

SCNPhysicsBallSocketJoint

SCNPhysicsBallSocketJoint поведение, соединяющее две организации физики и позволяющее им вертеться друг вокруг друга в любом направлении.

SCNPhysicsHingeJoint

SCNPhysicsHingeJoint поведение, соединяющее две организации физики и позволяющее им вертеться друг вокруг друга вокруг единственной оси.

SCNPhysicsSliderJoint

SCNPhysicsSliderJoint поведение, соединяющее две организации физики и позволяющее им скользить друг против друга и вращаться вокруг их соединительных точек.

SCNPhysicsVehicle

SCNPhysicsVehicle объект изменяет моделирование SceneKit организации физики так, чтобы это вело себя как автомобиль, мотоцикл или другой колесный механизм.

SCNPhysicsBody

SCNPhysicsBody объект используется для добавления моделирования физики к узлу.

SCNPhysicsContact

SCNPhysicsContact объект описывает контакт между двумя организациями физики на моделировании физики Вашей сцены.

SCNPhysicsField

SCNPhysicsField объект применяет силы к объектам в области эффекта в сцене.

SCNPhysicsShape

SCNPhysicsShape объект моделирует существенный объем, связанный с SCNPhysicsBody объект для использования в обнаружении коллизий.

SCNPhysicsVehicleWheel

SCNPhysicsVehicleWheel объект определяет появление и физические характеристики отдельного колеса, связанного с SCNPhysicsVehicle поведение.

SCNPhysicsWorld

SCNPhysicsWorld объект моделирует коллизии и другие физические свойства в сцене.

SCNProgram

Вы используете SCNProgram объект выполнить пользовательский рендеринг с помощью программ программы построения теней, записанных на Языке Штриховки OpenGL (GLSL).

SCNRenderer

SCNRenderer возразите представляет сцену SceneKit в произвольном контексте OpenGL.

SCNScene

SCNScene объект представляет трехмерную сцену.

SCNSceneSource

SCNSceneSource объект управляет задачами считывания данных, связанными с загружающимся содержанием сцены от файла (или NSData объект).

SCNSkinner

SCNSkinner объект обеспечивает доступ к частям иерархии узла, используемой для скелетной анимации.

SCNTechnique

SCNTechnique объект описывает метод рендеринга, использующий одну или более дополнительных передач получения, каждая из которых использует пользовательскую программу программы построения теней OpenGL, чтобы увеличить или постобработать рендеринг SceneKit сцены.

SCNTransaction

SCNTransaction класс определяет механизм SceneKit для пакетной обработки модификаций графика сцены в атомарные обновления.

UIView

UIView класс определяет прямоугольную область на экране и интерфейсах для управления содержанием в той области.

SCNView

Вы используете SCNView возразите для рендеринга содержания SceneKit для дисплея в приложении.

Протоколы

SCNActionable

SCNActionable протокол определяет методы для рабочих действий с узлами.

SCNAnimatable

SCNAnimatable протокол определяет интерфейс для присоединения анимаций к узлам, конфигурациям, материалам и другим объектам SceneKit.

SCNBoundingVolume

SCNBoundingVolume протокол определяет интерфейс для описания объектов, занимающих объем в пространстве, принятом SCNNode и SCNGeometry классы.

SCNNodeRendererDelegate

SCNNodeRendererDelegate протокол определяет интерфейс для использования Вашего собственного кода для прорисовки OpenGL для рендеринга содержания для узла.

SCNPhysicsContactDelegate

SCNPhysicsContactDelegate протокол определяет методы, которые можно реализовать для ответа, когда две организации физики связываются друг с другом на моделировании физики сцены.

SCNProgramDelegate

SCNProgramDelegate методы протокола можно реализовать для получения сообщений о пользовательских программах программы построения теней GLSL.

SCNSceneRenderer

SCNSceneRenderer протокол определяет методы и свойства, характерные для SCNView, SCNLayer и SCNRenderer классы.

SCNSceneRendererDelegate

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

SCNShadable

SCNShadable протокол определяет интерфейс для SceneKit геометрические и материальные объекты, рендеринг которых можно изменить с программами программы построения теней OpenGL.

SCNTechniqueSupport

SCNTechniqueSupport протокол определяет интерфейс, характерный для объектов SceneKit, поддерживающих многопроходное использование рендеринга SCNTechnique объекты.

Другая ссылка

Ссылка констант SceneKit

Ссылка типов данных SceneKit

Ссылка функций SceneKit