SCNScene
SCNScene
объект представляет трехмерную сцену. Сцена содержит иерархию узлов с присоединенными конфигурациями, световыми сигналами и камерами — называемый графиком сцены. Для рендеринга сцены для дисплея посмотрите SCNView
, SCNLayer
(Только OS X), или SCNRenderer
класс, и SCNSceneRenderer
протокол, определяющий свойства и методы, поделившиеся теми классами. SCNScene
класс также обеспечивает интерфейс для чтения и записи файлов сцены.
Получение или создание сцены
Как правило, Вы получаете сцену из файла, создаваемого с помощью внешних 3D инструментов разработки. При включении файлов сцены в каталог ресурсов пакета приложения XCode сжимает их для оптимального SceneKit, загружающего производительность. Для загрузки файла сцены используйте sceneNamed:
, sceneNamed:inDirectory:options:
, или sceneWithURL:options:error:
метод или экземпляр SCNSceneSource
класс.
Также можно создать пустую сцену с scene
метод и заполняет его с содержанием путем создания иерархии узлов и их содержания и добавления их как дочерних элементов сцены rootNode
объект
Сохранение сцены
SceneKit обеспечивает два способа сохранить сцену к файлу:
Объекты SceneKit поддерживают
NSSecureCoding
протокол. ИспользуйтеNSKeyedArchiver
класс для сериализации сцены и всего ее содержания, иNSKeyedUnarchiver
класс для загрузки заархивированной сцены. Заархивированные сцены поддерживают все функции SceneKit, и чтение заархивированных сцен быстрее, чем импорт других форматов файлов сцены.В OS X только,
writeToURL:options:delegate:progressHandler:
метод экспортирует файл в формате Digital Asset Exchange (DAE) Collada для использования другими приложениями. Экспортируемые файлы DAE не содержат элементы сцены, определенные для SceneKit, такие как организации физики и поля, ограничения и системы частиц.
Работа с анимациями в сцене
Объект сцены определяет основу времени для любых анимаций, содержавшихся в ее графике сцены. Вы управляете сценой, синхронизирующей атрибуты с помощью методов в Управляющих Атрибутах Сцены и константах, перечисленных в Атрибутах Сцены.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
NSObject
-
NSSecureCoding
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
-
Создает и возвращает пустую сцену.
Объявление
Objective C
+ (instancetype)scene
Возвращаемое значение
Новый, пустой объект сцены.
Обсуждение
Пустая сцена содержит только корень
SCNNode
объект без содержания. Для заполнения сцены добавьте дочерние элементы к корневому узлу.Оператор импорта
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
Загружает сцену из файла с указанным именем в основном пакете приложения.
Объявление
Swift
convenience init?(named
name
: String)Objective C
+ (instancetype)sceneNamed:(NSString *)
name
Параметры
name
Имя файла сцены в каталоге ресурсов комплекта приложений.
Возвращаемое значение
Новый объект сцены, или
nil
если не могла бы быть загружена никакая сцена.Обсуждение
Этот метод обеспечивает удобный способ загрузить полную сцену из файла в основном пакете приложения. Вызов этого метода эквивалентен использованию
NSBundle
класс для определения местоположения файла сцены и передачи получающегося URL кsceneWithURL:options:error:
метод, не указывая опций и никакой обработки ошибок.Для более подробных опций или загрузить только часть графика сцены файла, используйте
SCNSceneSource
класс.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
См. также
-
Загружает сцену из файла с указанным именем в определенном подкаталоге основного пакета приложения.
Объявление
Swift
convenience init?(named
name
: String, inDirectorydirectory
: String?, optionsoptions
: [NSObject : AnyObject]?)Objective C
+ (instancetype)sceneNamed:(NSString *)
name
inDirectory:(NSString *)directory
options:(NSDictionary *)options
Параметры
name
Имя файла сцены в комплекте приложений.
directory
Путь к подкаталогу каталога ресурсов пакета, содержащего файл сцены.
options
Словарь опций, влияющих на загрузку сцены, или
nil
для опций по умолчанию. Для доступных ключей посмотрите, что Сцена Загружает Опции.Возвращаемое значение
Новый объект сцены, или
nil
если не могла бы быть загружена никакая сцена.Обсуждение
Этот метод обеспечивает удобный способ загрузить полную сцену из файла в основном пакете приложения. Вызов этого метода эквивалентен использованию
NSBundle
класс для определения местоположения файла сцены и передачи получающегося URL кsceneWithURL:options:error:
метод.Для более подробных опций или загрузить только часть графика сцены файла, используйте
SCNSceneSource
класс.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Загружает сцену из указанного URL.
Объявление
Swift
convenience init?(URL
url
: NSURL, optionsoptions
: [NSObject : AnyObject]?, errorerror
: NSErrorPointer)Objective C
+ (instancetype)sceneWithURL:(NSURL *)
url
options:(NSDictionary *)options
error:(NSError **)error
Параметры
url
URL к файлу сцены для загрузки.
options
Словарь опций, влияющих на загрузку сцены, или
nil
для опций по умолчанию. Для доступных ключей посмотрите, что Сцена Загружает Опции.error
Если ошибка происходит, этот указатель установлен в
NSError
объект, описывающий ошибку. Если Вы не хотите информации об ошибке, передайте вnil
.Возвращаемое значение
Новый объект сцены, или
nil
если не могла бы быть загружена никакая сцена.Обсуждение
Этот метод обеспечивает удобный способ загрузить полную сцену из файла в произвольном URL. Для более подробных опций или загрузить только часть графика сцены файла, используйте
SCNSceneSource
класс.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
См. также
-
приостановленный приостановленный
СвойствоБулево значение, определяющее, выполнить ли действия, анимации, системы частиц и моделирования физики в графике сцены.
Объявление
Swift
var paused: Bool
Objective C
@property(nonatomic, getter=isPaused) BOOL paused
Обсуждение
Если
NO
false
(значение по умолчанию), SceneKit постоянно обновляет и представляет содержание сцены. Приостановка сцены паузы любые рабочие анимации или действия, присоединенные к графику сцены, и, приостанавливает обновления моделирования физики сцены и любых систем частиц в сцене.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Корневой узел графика сцены. (только для чтения)
Объявление
Swift
var rootNode: SCNNode { get }
Objective C
@property(nonatomic, readonly) SCNNode *rootNode
Обсуждение
Все содержание сцены — узлы, конфигурации и их материалы, световые сигналы, камеры и связанные объекты — организованы в иерархии узла с единственным общим корневым узлом.
Некоторые файлы сцены создаваемое использование внешних инструментов могут описать иерархии узла, содержащие многократные корневые узлы. Когда SceneKit импортирует такие файлы, их отдельные корневые узлы будут сделаны дочерними элементами нового, уникального корневого узла.
Система координат каждого дочернего узла определяется относительно трансформации ее родительского узла. Вы не должны изменять
transform
свойство корневого узла.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Фон, который будет представлен перед остальной частью сцены. (только для чтения)
Объявление
Swift
var background: SCNMaterialProperty { get }
Objective C
@property(nonatomic, readonly) SCNMaterialProperty *background
Обсуждение
Если материальная собственность
contents
объектnil
, SceneKit не рисует фона прежде, чем нарисовать остальную часть сцены. (Если сцена представлена вSCNView
экземпляр, цвет фона представления видим позади содержания сцены.)Если Вы указываете текстуру карты куба как содержание материальной собственности (использующий массив шести изображений, столь же указанных в Ссылке класса SCNMaterialProperty), SceneKit представляет фон как skybox.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает атрибут сцены для указанного ключа.
Объявление
Swift
func attributeForKey(_
key
: String) -> AnyObject?Objective C
- (id)attributeForKey:(NSString *)
key
Параметры
key
Одна из констант описала в Атрибутах Сцены, который идентифицирует атрибут, который будет считан.
Возвращаемое значение
Атрибут сцены для указанного ключа, или
nil
если не существует никакой такой атрибут.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Устанавливает атрибут сцены для указанного ключа.
Объявление
Swift
func setAttribute(_
attribute
: AnyObject, forKeykey
: String)Objective C
- (void)setAttribute:(id)
attribute
forKey:(NSString *)key
Параметры
attribute
Объект, указывающий значение атрибута, который будет записан.
key
Одна из констант описала в Атрибутах Сцены, который идентифицирует атрибут, который будет записан.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.8 и позже.
-
Экспортирует сцену и ее содержание к файлу в указанном URL.
Объявление
Swift
func writeToURL(_
url
: NSURL, optionsoptions
: [NSObject : AnyObject]?, delegatedelegate
: SCNSceneExportDelegate?, progressHandlerprogressHandler
: SCNSceneExportProgressHandler?) -> BoolObjective C
- (BOOL)writeToURL:(NSURL *)
url
options:(NSDictionary *)options
delegate:(id<SCNSceneExportDelegate>)delegate
progressHandler:(SCNSceneExportProgressHandler)progressHandler
Параметры
url
URL для записи файла сцены в. Этот URL должен использовать
file
схема.options
Словарь опций, влияющих на загрузку сцены, или
nil
для опций по умолчанию. Для доступных ключей посмотрите, что Сцена Загружает Опции.delegate
Объект делегата настроить экспорт внешних ресурсов, используемых сценой. Передача
nil
для экспорта по умолчанию внешних ресурсов.progressHandler
Блок, который SceneKit вызывает неоднократно для создания отчетов о прогрессе работы экспорта.
Возвращаемое значение
YES
true
если экспорт сцены был успешен; иначе,NO
false
.Обсуждение
SceneKit создает и пишет файл, содержащий график сцены в формате DAE Collada.
Если ссылки сцены внешние ресурсы, такие как файлы образа, используемые в свойствах материала, SceneKit экспортирует эти файлы в соседнее расположение и ссылается на их URLs в экспортируемом файле сцены. Для переопределения экспорта SceneKit внешних ресурсов обеспечьте объект, реализовав
SCNSceneExportDelegate
протокол вdelegate
параметр.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
fogStartDistance fogStartDistance
СвойствоРасстояние с точки зрения, в которой содержание сцены начинает затеняться вуалью. Animatable.
Объявление
Swift
var fogStartDistance: CGFloat
Objective C
@property(nonatomic) CGFloat fogStartDistance
Обсуждение
Эффект вуали заставляет содержание сцены становиться менее видимым дальше, они от
pointOfView
узел в настоящее время используется для рендеринга. На расстояниях меньше, чем значениеfogStartDistance
свойство, содержание сцены полностью видимо. На больших расстояниях SceneKit смешивает представленное содержание сцены с постоянным цветом (указанныйfogColor
свойство). На расстояниях, больше, чемfogEndDistance
свойство, содержание сцены исчезает полностью, и только цвет вуали видим. Используйте вуаль, чтобы добавить атмосферные эффекты к Вашему приложению или игре, или улучшить производительность рендеринга путем сокрытия частей сцены, которые являются далеко от текущей точки представления.Расстояние запуска по умолчанию
0.0
.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
fogEndDistance fogEndDistance
СвойствоРасстояние с точки зрения, в которой содержание сцены полностью затенено вуалью. Animatable.
Объявление
Swift
var fogEndDistance: CGFloat
Objective C
@property(nonatomic) CGFloat fogEndDistance
Обсуждение
Эффект вуали заставляет содержание сцены становиться менее видимым дальше, они от
pointOfView
узел в настоящее время используется для рендеринга. На расстояниях меньше, чем значениеfogStartDistance
свойство, содержание сцены полностью видимо. На больших расстояниях SceneKit смешивает представленное содержание сцены с постоянным цветом (указанныйfogColor
свойство). На расстояниях, больше, чемfogEndDistance
свойство, содержание сцены исчезает полностью, и только цвет вуали видим. Используйте вуаль, чтобы добавить атмосферные эффекты к Вашему приложению или игре, или улучшить производительность рендеринга путем сокрытия частей сцены, которые являются далеко от текущей точки представления.Расстояние конца по умолчанию
0.0
отключает эффект вуали. Измените значение этого свойства для включения вуали.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
fogDensityExponent fogDensityExponent
СвойствоКривая перехода для интенсивности вуали между ее запуском и расстояниями конца. Animatable.
Объявление
Swift
var fogDensityExponent: CGFloat
Objective C
@property(nonatomic) CGFloat fogDensityExponent
Обсуждение
Эффект вуали постепенно исчезает содержание сцены с увеличивающимся расстоянием от
pointOfView
расположение, заменяя их увеличивающейся интенсивностьюfogColor
цвет.fogDensityExponent
свойство определяет гладкость или внезапность этого перехода.Значение
0.0
(значение по умолчанию), не указывает затухания — интенсивность вуали является тем же на всех расстояниях. Значение1.0
указывает линейный переход и значение2.0
указывает квадратичную кривую перехода. Более высокие значения имеют мало видимого эффекта.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Цвет эффекта вуали, который будет представлен со сценой. Animatable.
Объявление
Swift
var fogColor: AnyObject
Objective C
@property(nonatomic, retain) id fogColor
Обсуждение
Значение этого свойства может быть
NSColor
объект (в OS X), aUIColor
объект (в iOS), или aCGColorRef
объект. Цвет вуали по умолчанию является белым.Можно анимировать изменения в значении этого свойства. Посмотрите Анимацию Содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
physicsWorld physicsWorld
СвойствоМоделирование физики связалось со сценой. (только для чтения)
Объявление
Swift
var physicsWorld: SCNPhysicsWorld { get }
Objective C
@property(nonatomic, readonly) SCNPhysicsWorld *physicsWorld
Обсуждение
Каждая сцена автоматически создает объект мира физики моделировать физику на узлах в сцене. Вы используете это свойство, чтобы получить доступ к глобальным свойствам физики сцены, таким как сила тяжести, и управлять взаимодействиями физики между узлами. Чтобы заставить узел в сцене участвовать в моделировании физики, используйте или или оба из
physicsBody
иphysicsField
свойства.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.10 и позже.
-
Присоединяет систему частиц к сцене, с помощью указанного преобразования.
Объявление
Swift
func addParticleSystem(_
system
: SCNParticleSystem, withTransformtransform
: SCNMatrix4)Objective C
- (void)addParticleSystem:(SCNParticleSystem *)
system
withTransform:(SCNMatrix4)transform
Параметры
system
Система частиц.
transform
Матрица преобразования, что позиции и ориентируют систему частиц относительно пространства мировой координаты сцены.
Обсуждение
Система частиц, непосредственно присоединенная к сцене, не связана с координатным пространством никакого узла в сцене. Для присоединения системы частиц, эмиттерное расположение которой следует за перемещением узла в сцене используйте соответствие
SCNNode
метод.Для получения дополнительной информации в системах частиц, посмотрите Ссылку класса 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 и позже.
Типы данных
-
Подпись для блока, который SceneKit вызывает во время экспорта сцены.
Объявление
Swift
typealias SCNSceneExportProgressHandler = (Float, NSError!, UnsafeMutablePointer<ObjCBool>) -> Void
Objective C
typedef void (^SCNSceneExportProgressHandler)(float totalProgress, NSError *error, BOOL *stop)
Обсуждение
Вы указываете блок с этой подписью при вызове
writeToURL:options:delegate:progressHandler:
метод для получения обновлений на прогрессе работы экспорта. Блок берет следующие параметры:totalProgress
Число между
0.0
и1.0
это указывает прогресс работы экспорта, с0.0
указание, что работа только что началась и1.0
указание работы завершилось.error
Ошибка встретилась во время процесса экспорта, или
nil
если не произошли никакие ошибки.stop
Набор
*stop
кYES
true
в блоке для отмены экспорта.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Ключи атрибута, доступные в словаре опций для методов
attributeForKey:
иsetAttribute:forKey:
Объявление
Swift
let SCNSceneEndTimeAttributeKey: NSString! let SCNSceneFrameRateAttributeKey: NSString! let SCNSceneStartTimeAttributeKey: NSString! let SCNSceneUpAxisAttributeKey: NSString!
Objective C
NSString * const SCNSceneEndTimeAttributeKey; NSString * const SCNSceneFrameRateAttributeKey; NSString * const SCNSceneStartTimeAttributeKey; NSString * const SCNSceneUpAxisAttributeKey;
Константы
-
SCNSceneEndTimeAttributeKey
SCNSceneEndTimeAttributeKey
Значение с плавающей точкой (в
NSNumber
объект) в течение времени окончания сцены.Доступный в OS X v10.8 и позже.
-
SCNSceneFrameRateAttributeKey
SCNSceneFrameRateAttributeKey
Значение с плавающей точкой (в
NSNumber
объект) для частоты кадров сцены.Это значение может присутствовать в сценах, загруженных из файлов сцены, произведенных с помощью внешних инструментов, но не имеет никакого эффекта на рендеринг SceneKit сцены.
Доступный в OS X v10.8 и позже.
-
SCNSceneStartTimeAttributeKey
SCNSceneStartTimeAttributeKey
Значение с плавающей точкой (в
NSNumber
объект) в течение времени начала сцены.Доступный в OS X v10.8 и позже.
-
SCNSceneUpAxisAttributeKey
SCNSceneUpAxisAttributeKey
SCNVector3
структура (вNSValue
объект) указание ориентации сцены.Это значение может присутствовать в сценах, загруженных из файлов сцены, произведенных с помощью внешних инструментов, но не имеет никакого эффекта на обработку SceneKit сцены. Используйте этот вектор при объединении элементов от различных сцен так, чтобы они появились в своей ожидаемой ориентации.
Доступный в OS X v10.10 и позже.
-
-
Опции для
writeToURL:options:delegate:progressHandler:
метод.Объявление
Swift
let SCNSceneExportDestinationURL: NSString!
Objective C
NSString * const SCNSceneExportDestinationURL
Константы
-
SCNSceneExportDestinationURL
SCNSceneExportDestinationURL
Конечное место назначения URL (
NSURL
объект) для экспортируемого файла сцены.Используйте эту опцию, если Вы экспортируете сцену во временный каталог и затем перемещаете ее в заключительное расположение. Необходимо указать конечное место назначения URL если ссылки сцены внешние ресурсы, такие как файлы образа для текстур. SceneKit использует этот URL для построения надлежащих путей для внешних ресурсов при записи файла сцены.
Доступный в OS X v10.9 и позже.
-