SCNSceneSource
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в iOS 8.0 и позже.
SCNSceneSource
объект управляет задачами считывания данных, связанными с загружающимся содержанием сцены от файла (или NSData
объект). Можно также использовать источник сцены, чтобы исследовать содержание файла сцены или выборочно загрузить определенные элементы, не загружая всю сцену и все активы, которые это содержит.
SceneKit может считать содержание сцены из файла в поддерживаемом формате, или от NSData
объект, содержащий содержание такого файла. Поддерживаемые форматы включают следующее:
Формат |
Расширение файла |
Поддерживаемый в |
---|---|---|
Exchange цифрового актива Collada |
|
OS X v10.8 и позже |
Перегонный куб |
|
OS X v10.10 и позже |
SceneKit сжал сцену |
|
OS X v10.10 и позже iOS 8.0 и позже |
Архив SceneKit |
|
OS X v10.10 и позже iOS 8.0 и позже |
При включении файла сцены в формат Collada или Alembic в проекте XCode XCode автоматически преобразовывает файл в сжатый формат сцены SceneKit для использования в созданном приложении. Сжатый файл сохраняет свой оригинал .dae
или .abc
расширение.
SCNSceneSource
класс может также загрузить архивные файлы SceneKit, которые Вы создаете при помощи NSKeyedArchiver
класс для сериализации SCNScene
возразите и график сцены, который это содержит.
-
Создает источник сцены, читающий график сцены из указанного файла.
Объявление
Objective C
+ (instancetype)sceneSourceWithURL:(NSURL *)
url
options:(NSDictionary *)options
Параметры
url
URL, идентифицирующий расположение файла сцены в формате, распознан SceneKit.
options
Словарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nil
использовать опции по умолчанию.Возвращаемое значение
Новый, инициализированный исходный объект сцены, или
nil
если инициализация не была успешна.Обсуждение
Если у Вас есть содержание файла сцены, но не самого файла (например, если Ваши файлы сцены загрузок приложений от сети), используйте
sceneSourceWithData:options:
метод вместо этого.Оператор импорта
Objective C
@import SceneKit;
Доступность
Доступный в iOS 8.0 и позже.
-
Создает источник сцены, читающий график сцены, содержавшийся в
NSData
объект.Объявление
Objective C
+ (instancetype)sceneSourceWithData:(NSData *)
data
options:(NSDictionary *)options
Параметры
data
Объект данных, содержащий файл сцены в формате, распознан SceneKit.
options
Словарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nil
использовать опции по умолчанию.Возвращаемое значение
Новый, инициализированный исходный объект сцены, или
nil
если инициализация не была успешна.Обсуждение
data
параметр этого метода должен содержать те же данные, так же непосредственно считанные из файла сцены (такой как при помощиNSData
методdataWithContentsOfURL:
). Используйте этот метод, когда у Вас будет содержание файла сцены, но не самого файла — например, если Ваши файлы сцены загрузок приложений от сети.Оператор импорта
Objective C
@import SceneKit;
Доступность
Доступный в iOS 8.0 и позже.
-
Инициализирует источник сцены для чтения графика сцены от указанного файла.
Объявление
Objective C
- (id)initWithURL:(NSURL *)
url
options:(NSDictionary *)options
Параметры
url
URL, идентифицирующий сцену.
options
Словарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nil
использовать опции по умолчанию.Возвращаемое значение
Инициализированный исходный объект сцены, или
nil
если инициализация не была успешна.Обсуждение
Если у Вас есть содержание файла сцены, но не самого файла (например, если Ваши файлы сцены загрузок приложений от сети), используйте
initWithData:options:
метод вместо этого.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Инициализирует источник сцены для чтения графика сцены, содержавшегося в
NSData
объект.Объявление
Objective C
- (id)initWithData:(NSData *)
data
options:(NSDictionary *)options
Параметры
data
Объект данных, содержащий файл сцены в формате, распознан SceneKit.
options
Словарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nil
использовать опции по умолчанию.Возвращаемое значение
Инициализированный исходный объект сцены, или
nil
если инициализация не была успешна.Обсуждение
data
параметр этого метода должен содержать те же данные, так же непосредственно считанные из файла сцены (такой как при помощиNSData
методdataWithContentsOfURL:
). Используйте этот метод, когда у Вас будет содержание файла сцены, но не самого файла — например, если Ваши файлы сцены загрузок приложений от сети.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Загружает весь график сцены из источника сцены и вызывает указанный блок для предоставления информации прогресса.
Объявление
Swift
func sceneWithOptions(_
options
: [NSObject : AnyObject]?, statusHandlerstatusHandler
: SCNSceneSourceStatusHandler?) -> SCNScene?Objective C
- (SCNScene *)sceneWithOptions:(NSDictionary *)
options
statusHandler:(SCNSceneSourceStatusHandler)statusHandler
Параметры
options
Словарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nil
использовать опции по умолчанию.statusHandler
SCNSceneSourceStatusHandler
блок. SceneKit вызывает этот блок периодически для создания отчетов о прогрессе при загрузке сцены.Возвращаемое значение
SCNScene
объект, содержащий весь график сцены из источника сцены, илиnil
если загрузка не была успешна.Обсуждение
Используйте этот метод, если необходимо контролировать динамику при загрузке сцены из источника сцены. Для более простой загрузки сцены используйте
sceneWithOptions:error:
метод илиSCNScene
методsceneWithURL:options:error:
.Источник сцены может содержать объекты, которые не являются частью его графика сцены. Для получения этих объектов необходимо загрузить их индивидуально
entryWithIdentifier:withClass:
илиentriesPassingTest:
метод. Например, файл сцены, содержащий игровой символ, мог включать несколько анимаций для символьной геометрии (таких как выполнение, переход и простаивание). Поскольку Вы обычно не применяете многократные анимации сразу, файл сцены содержит эти анимации без того, что они были присоединенными к символьной геометрии.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Инстанцирует сцены из источника сцены с указанными опциями.
Объявление
Swift
func sceneWithOptions(_
options
: [NSObject : AnyObject]?, errorerror
: NSErrorPointer) -> SCNScene?Objective C
- (SCNScene *)sceneWithOptions:(NSDictionary *)
options
error:(NSError **)error
Параметры
options
Словарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nil
использовать опции по умолчанию.error
Указатель на ошибочный объект. При загрузке сбоев, возвратов метода
nil
и этот указатель ссылаетсяNSError
объект, описывающий ошибку. Передачаnil
если Вы не хотите информации об ошибке.Возвращаемое значение
SCNScene
объект, содержащий весь график сцены из источника сцены, илиnil
если загрузка не была успешна.Обсуждение
Вызов этого метода эквивалентен вызову
sceneWithOptions:statusHandler:
с блоком, проверяющимerror
параметр, чтобы видеть, является ли состояниеSCNSceneSourceStatusError
. Для загрузки сцены, не создавая исходный объект сцены используйтеSCNScene
методsceneWithURL:options:error:
.Источник сцены может содержать объекты, которые не являются частью его графика сцены. Для получения этих объектов необходимо загрузить их индивидуально
entryWithIdentifier:withClass:
илиentriesPassingTest:
метод. Например, файл сцены, содержащий игровой символ, мог включать несколько анимаций для символьной геометрии (таких как выполнение, переход и простаивание). Поскольку Вы обычно не применяете многократные анимации сразу, файл сцены содержит эти анимации без того, что они были присоединенными к символьной геометрии.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Возвращает идентификаторы для всех объектов в источнике сцены указанного класса.
Объявление
Swift
func identifiersOfEntriesWithClass(_
entryClass
: AnyClass) -> [AnyObject]?Objective C
- (NSArray *)identifiersOfEntriesWithClass:(Class)
entryClass
Параметры
entryClass
Класс объектов найти идентификаторы для.
Возвращаемое значение
Массив
NSString
объекты, каждый уникальный идентификатор объекта в источнике сцены.Обсуждение
SceneKit распознает объекты следующих классов в файлах сцены:
NSImage
Каждый объект в файле сцены имеет идентификатор, который уникален для его класса. Эти идентификаторы определяются программным обеспечением, создавшим файл сцены — например, они могут быть описательными именами, присвоенными художником, использующим 3D инструменты разработки. Для классов SceneKit с a
name
свойство (такое как узлы и конфигурации), имя объекта, загруженного из файла сцены, основывается на своем идентификаторе в файле сцены.Используйте этот метод для перечисления всех объектов в файле сцены указанного класса, не загружая объекты и их содержание. Например, следующий код считает идентификаторы для всех анимаций сохраненными в источнике сцены:
Swift
let animations = sceneSource.identifiersOfEntriesWithClass(CAAnimation.self)
Objective C
NSArray *animations = [sceneSource identifiersOfEntriesWithClass:[CAAnimation class]];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
См. также
-
Загрузки и возвраты конкретный объект в источнике сцены.
Объявление
Swift
func entryWithIdentifier(_
uid
: String, withClassentryClass
: AnyClass) -> AnyObject?Objective C
- (id)entryWithIdentifier:(NSString *)
uid
withClass:(Class)entryClass
Параметры
uid
Уникальный идентификатор объекта в источнике сцены.
entryClass
Класс объектов найти идентификаторы для.
Возвращаемое значение
Новый объект SceneKit, содержащий требуемую исходную запись сцены, или
nil
если никакой такой объект не существует в источнике сцены.Обсуждение
SceneKit распознает объекты следующих классов в файлах сцены:
NSImage
Каждый объект в файле сцены имеет идентификатор, который уникален для его класса. Эти идентификаторы определяются программным обеспечением, создавшим файл сцены — например, они могут быть описательными именами, присвоенными художником, использующим 3D инструменты разработки. Для классов SceneKit с a
name
свойство (такое как узлы и конфигурации), имя объекта, загруженного из файла сцены, основывается на своем идентификаторе в файле сцены.Если у Вас нет идентификатора для объекта, Вы хотите загрузить, использовать
entryWithIdentifier:withClass:
метод для нахождения идентификаторов для объектов в файле сцены. Можно также видеть идентификатор для каждого объекта в файле сцены при просмотре его в редакторе сцены XCode.Вызов этого метода инстанцирует объекта указанного класса SceneKit и загружает все содержание из файла сцены, соответствующего требуемой записи. Следует иметь в виду, что загрузка одного объекта SceneKit может также загрузить другие объекты и их содержание, такое как световые сигналы, камеры или конфигурации, присоединенные к узлу.
Например, следующий метод находит идентификатор для геометрии и затем загружает его (и любые анимации или материалы, присоединенные к нему):
Swift
func loadSpaceshipFromSceneSource(sceneSource: SCNSceneSource) -> SCNGeometry? {
let identifiers = sceneSource.identifiersOfEntriesWithClass(SCNGeometry.self) as [NSString]
for identifier in identifiers {
if identifier.containsString("spaceship") {
return sceneSource.entryWithIdentifier(identifier, withClass: SCNGeometry.self) as SCNGeometry!
}
}
return nil
}
Objective C
- (SCNGeometry *)loadSpaceshipFromSceneSource:(SCNSceneSource *)sceneSource;
{
NSArray *identifiers = [sceneSource identifiersOfEntriesWithClass:[SCNGeometry class]];
for (NSString *identifier in identifiers) {
if ([identifier rangeOfString:@"spaceship"].location != NSNotFound)
return [sceneSource entryWithIdentifier:identifier withClass:[SCNGeometry class]];
}
return nil;
}
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Загрузки и возвраты все объекты в источнике сцены, проходящие тест в данном блоке.
Объявление
Swift
func entriesPassingTest(_
predicate
: (AnyObject!, String!, UnsafeMutablePointer<ObjCBool>) -> Bool) -> [AnyObject]Параметры
predicate
Блок, который будет применен к каждому объекту в источнике сцены.
Блок берет три параметра:
entry
Объект, который будет протестирован.
identifier
Уникальный идентификатор объекта в источнике сцены.
stop
Ссылка на булево значение. Набор
*stop
кYES
true
в блоке для прерывания последующей обработки содержания источника сцены.Блок возвращает булево значение, указывающее, прошел ли объект записи тест и должен быть включен в возвращенный массив метода.
Возвращаемое значение
Массив SceneKit возражает из источника сцены, которые проходят тест.
Обсуждение
SceneKit распознает объекты следующих классов в файлах сцены:
NSImage
Каждый объект в файле сцены имеет идентификатор, который уникален для его класса. Эти идентификаторы определяются программным обеспечением, создавшим файл сцены — например, они могут быть описательными именами, присвоенными художником, использующим 3D инструменты разработки. Для классов SceneKit с a
name
свойство (такое как узлы и конфигурации), имя объекта, загруженного из файла сцены, основывается на своем идентификаторе в файле сцены.Используйте этот метод для выборочной загрузки объектов из исходного соответствия сцены критерии, которые Вы указываете. Например, следующий код загружает из файла сцены только узлы, присоединившие геометрию:
Swift
let geometryNodes = sceneSource.entriesPassingTest { entry, identifier, stop in
if let node = entry as? SCNNode {
return (node.geometry != nil)
} else {
return false
}
}
Objective C
NSArray *geometryNodes = [sceneSource entriesPassingTest:^BOOL(id entry, NSString *identifier, BOOL *stop) {
if ([entry isKindOfClass:[SCNNode class]]) {
SCNNode *node = (SCNNode *)entry;
return (node.geometry != nil);
} else {
return NO;
}
}];
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
url
СвойствоURL, идентифицирующий файл, из которого создавался источник сцены. (только для чтения)
Обсуждение
Значение этого свойства
nil
если источник сцены не создавался с помощьюsceneSourceWithURL:options:
илиinitWithURL:options:
метод.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
data
СвойствоОбъект данных, из которого источник сцены загружает содержание сцены. (только для чтения)
Обсуждение
Если источник сцены создавался с помощью
sceneSourceWithData:options:
илиinitWithData:options:
метод, значение этого свойства является данными, из которых создавался источник сцены. Если источник сцены создавался из файла сцены с помощьюsceneSourceWithURL:options:
илиinitWithURL:options:
метод, значение этого свойства является данными, загруженными из того URL в то время, когда создавался источник сцены.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Метаданные возвратов о сцене.
Объявление
Swift
func propertyForKey(_
key
: String) -> AnyObject?Objective C
- (id)propertyForKey:(NSString *)
key
Параметры
key
Постоянная идентификация свойства метаданных источника сцены. Посмотрите Исходные Свойства Сцены для доступных ключей и форматов их значений.
Возвращаемое значение
Значение для свойства метаданных, или
nil
если никакое значение не существует для указанного свойства.Обсуждение
Этот метод возвращает информацию о сцене, определяющейся в файле, но непосредственно не ссылающейся сценой.
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
Типы данных
-
Подпись для блока, который SceneKit вызывает периодически для создания отчетов о прогрессе при загрузке сцены.
Объявление
Swift
typealias SCNSceneSourceStatusHandler = (Float, SCNSceneSourceStatus, NSError!, UnsafeMutablePointer<ObjCBool>) -> Void
Objective C
typedef void (^SCNSceneSourceStatusHandler)(float totalProgress, SCNSceneSourceStatus status, NSError *error, BOOL *stopLoading)
Обсуждение
Вы предоставляете блоку эту подпись при использовании
sceneWithOptions:statusHandler:
метод.Блок берет четыре параметра:
totalProgress
Число с плавающей точкой между
0.0
и1.0
указание полного прогресса загрузки сцены. Значение0.0
указывает, что процесс загрузки только что начался, и значение1.0
указывает, что завершился процесс.status
Постоянная идентификация одной из отличных фаз процедуры загрузки SceneKit. Посмотрите
“SCNSceneSourceStatus”
для возможных значений.error
Ошибочное описание объекта любой ошибки, произошедшей во время загрузки сцены, или
nil
если не встретились ни с какими ошибками.stopLoading
Ссылка на булево значение. Набор
*stop
кYES
true
в блоке для прерывания последующей обработки содержания источника сцены.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-
Опции для создания источников сцены и загрузки сцен они содержат.
Объявление
Swift
let SCNSceneSourceAssetDirectoryURLsKey: String let SCNSceneSourceCreateNormalsIfAbsentKey: String let SCNSceneSourceFlattenSceneKey: String let SCNSceneSourceOverrideAssetURLsKey: String let SCNSceneSourceCheckConsistencyKey: String let SCNSceneSourceStrictConformanceKey: String let SCNSceneSourceUseSafeModeKey: String let SCNSceneSourceConvertUnitsToMetersKey: NSString! let SCNSceneSourceConvertToYUpKey: NSString! let SCNSceneSourceAnimationImportPolicyKey: String
Objective C
NSString * const SCNSceneSourceAssetDirectoryURLsKey; NSString * const SCNSceneSourceCreateNormalsIfAbsentKey; NSString * const SCNSceneSourceFlattenSceneKey; NSString * const SCNSceneSourceCheckConsistencyKey; NSString * const SCNSceneSourceOverrideAssetURLsKey; NSString * const SCNSceneSourceStrictConformanceKey; NSString * const SCNSceneSourceUseSafeModeKey; NSString * const SCNSceneSourceConvertUnitsToMetersKey; NSString * const SCNSceneSourceConvertToYUpKey; NSString * const SCNSceneSourceAnimationImportPolicyKey;
Константы
-
SCNSceneSourceAssetDirectoryURLsKey
Расположения для использования для разрешения относительного URLs к внешним ресурсам.
Значение для этого ключа
NSArray
объект, содержащий один или большеNSURL
объекты, каждый из которых ссылается на каталог.Файл сцены может сослаться на внешние ресурсы, такие как файлы образа, используемые в качестве текстур в свойствах материала, с помощью относительных путей URL. При загрузке из источника сцены SceneKit сначала пытается разрешить эти ссылки относительно каталога, содержащего файл сцены. Для поиска дополнительных каталогов при загрузке обеспечьте массив URLs для этого ключа, и SceneKit ищет их в порядке.
При работе с источником сцены, созданным из
NSData
объект, можно использовать эту опцию обеспечить расположения в файловой системе для загрузки внешних ресурсов.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceCreateNormalsIfAbsentKey
Опция для того, чтобы автоматически генерировать поверхность normals, если они отсутствуют при загрузке геометрии.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.Для участия в освещении и штриховке геометрия должна включать поверхностные векторы нормали в свои данные вершины. Некоторые файлы сцены могут не содержать такие данные. Если Вы устанавливаете значение этой опции в
YES
true
, SceneKit применяет эвристику для генерации поверхностных нормальных данных для каждой геометрии, которую это загружает из источника сцены, если такие данные отсутствуют.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceFlattenSceneKey
Опция для того, чтобы автоматически объединить части графика сцены во время загрузки.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.Если Вы устанавливаете значение этой опции в
YES
true
, SceneKit пытается сократить сложность графика сцены, загруженного из источника сцены путем слияния конфигураций и объединения узлов. Используйте эту опцию для более эффективного рендеринга, когда манипулирование графиком сцены не будет необходимо (например, при рендеринге быстрого предварительного просмотра содержания сцены).Доступный в iOS 8.0 и позже.
-
SCNSceneSourceOverrideAssetURLsKey
Опция делать попытку загружающихся внешних ресурсов с помощью их URLs, как указано в файле сцены.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.Файл сцены может сослаться на внешние ресурсы, такие как файлы образа, используемые в качестве текстур в свойствах материала, с помощью относительных путей URL. При загрузке из источника сцены, SceneKit попытками по умолчанию разрешить эти ссылки относительно каталога, содержащего файл сцены. Если Вы устанавливаете значение этой опции в
YES
true
, SceneKit ищет внешние ресурсы только в каталогах, Вы указываете использованиеSCNSceneSourceAssetDirectoryURLsKey
опция.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceCheckConsistencyKey
Опция проверить файлы сцены при загрузке.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.Если Вы устанавливаете значение этой опции в
YES
true
, SceneKit добавляет шаг проверки непротиворечивости прежде, чем инициализировать или загрузить содержание из источника сцены. Эти задержки шага, загружающиеся, чтобы проверить, что формат файла сцены соответствует свою спецификацию. Если проверка перестала работать, SceneKit прекращает загружаться и возвращает ошибку. Используйте эту опцию, если необходимо решить, что файл сцены неповрежден и допустим перед использованием ее.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceStrictConformanceKey
Опция интерпретировать файлы сцены точно, как указано форматом файла сцены.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.По умолчанию SceneKit читает дополнительное настоящее метаданных в файле сцены при загрузке сцены так, чтобы ее рендеринг содержания сцены был максимально близок к первоначальному намерению автора файла сцены. Эта информация может включать опции, что художник может выбрать третье лицо использования 3D инструменты разработки или функции SceneKit, не указанного форматом файла сцены. Если Вы устанавливаете значение этой опции в
YES
true
, SceneKit игнорирует информацию, которая не является частью спецификации формата файла сцены.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceUseSafeModeKey
Опция ограничить доступ к файловой системе и доступ к сети для внешних ресурсов, на которые ссылается файл сцены.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.Файл сцены может сослаться на внешние ресурсы, такие как файлы образа, используемые в качестве текстур в свойствах материала, с помощью относительного или абсолютного URLs, включая URLs, идентифицирующий сетевые ресурсы. Если Вы устанавливаете значение этой опции в
YES
true
, SceneKit не загружает внешние ресурсы из сети или из чувствительных каталогов в локальной файловой системе.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceConvertUnitsToMetersKey
Опция для того, масштабировать ли автоматически содержание сцены.
Значение для этого ключа
NSNumber
объект, содержащий значение с плавающей точкой. Значение по умолчаниюnil
, указание никакого преобразования модуля.Моделирование физики SceneKit лучше всего, когда один модуль в координатном пространстве сцены соответствует одному метру в мире физики. При загрузке элементов из файлов сцены обеспечьте значение для этого ключа, указывающего число метров (в координатном пространстве загруженной сцены) для каждого модуля в координатном пространстве сцены элементов, которые будут загружены.
Например, художник мог бы разработать игровой символ использование масштаба, где один модуль является ногой США. Для загрузки этой модели для использования в основанном на метре координатном пространстве SceneKit укажите значение
0.3048
для этого ключа.Эта опция не имеет никакого эффекта для активов, сжатых XCode. Вместо этого используйте сам XCode для преобразования единиц при сжатии активов.
Доступный в iOS 8.0 через iOS 8.2.
-
SCNSceneSourceConvertToYUpKey
Опция для того, преобразовать ли активы, загрузилась от файла сцены для использования в системе координат, где ось y подчеркивает.
Значение для этого ключа
NSNumber
объект, содержащий булево значение. Значение по умолчаниюNO
false
.Моделирование физики SceneKit лучше всего, когда ось y координатного пространства сцены соответствует направление мира физики. Некоторые внешние 3D инструменты разработки используют системы координат, где различная ось подчеркивает. Указать
YES
true
для этого ключа для автоматического преобразования всех элементов сцены загрузился от файла на основеSCNSceneSourceAssetUpAxisKey
значение сохранено в файле.Эта опция не имеет никакого эффекта для активов, сжатых XCode. Вместо этого используйте сам XCode для преобразования координатных пространств при сжатии активов.
Доступный в iOS 8.0 через iOS 8.2.
-
SCNSceneSourceAnimationImportPolicyKey
Опция для управления воспроизведением анимаций в файле сцены.
Значение для этого ключа является одной из констант, перечисленных в Политиках Импорта Анимации.
Значение по умолчанию для этого ключа
SCNSceneSourceAnimationImportPolicyPlayRepeatedly
. Для приложений, созданных для 10,9 или ранее, значение по умолчаниюSCNSceneSourceAnimationImportPolicyPlayUsingSceneTimeBase
.Доступный в iOS 8.0 и позже.
-
-
Опции для игры анимаций загрузились от файла сцены, используемого с
SCNSceneSourceAnimationImportPolicyKey
ключ в словарях опций.Объявление
Swift
let SCNSceneSourceAnimationImportPolicyPlay: String let SCNSceneSourceAnimationImportPolicyPlayRepeatedly: String let SCNSceneSourceAnimationImportPolicyDoNotPlay: String let SCNSceneSourceAnimationImportPolicyPlayUsingSceneTimeBase: String
Objective C
NSString * const SCNSceneSourceAnimationImportPolicyPlay; NSString * const SCNSceneSourceAnimationImportPolicyPlayRepeatedly; NSString * const SCNSceneSourceAnimationImportPolicyDoNotPlay; NSString * const SCNSceneSourceAnimationImportPolicyPlayUsingSceneTimeBase;
Константы
-
SCNSceneSourceAnimationImportPolicyPlay
Анимации, загруженные из файла сцены, сразу добавляются к сцене и играются один раз.
Используя эту политику эквивалентно ручной загрузке каждой анимации, устанавливая
repeatCount
свойство к1
, и добавление его к надлежащему элементу сцены.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAnimationImportPolicyPlayRepeatedly
Анимации, загруженные из файла сцены, сразу добавляются к сцене и неоднократно играются.
Используя эту политику эквивалентно ручной загрузке каждой анимации, устанавливая
repeatCount
свойство кINFINITY
, и добавление его к надлежащему элементу сцены.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAnimationImportPolicyDoNotPlay
Анимации не загружаются из файла сцены.
Для игры анимаций, сохраненных в файле сцены, загрузите их вручную использование
entryWithIdentifier:withClass:
метод.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAnimationImportPolicyPlayUsingSceneTimeBase
Анимации, загруженные из файла сцены, сразу добавляются к сцене и играются согласно сцене
sceneTime
свойство.Используя эту политику эквивалентно ручной загрузке каждой анимации, устанавливая
usesSceneTimeBase
свойство кYES
true
, и добавление его к надлежащему элементу сцены. Используйте эту политику, когда Вы захотите непосредственно управлять (или позволить пользователю непосредственно управлять) прогресс анимаций.Доступный в iOS 8.0 и позже.
-
-
Свойства метаданных связались с файлом сцены, используемым
propertyForKey:
метод.Объявление
Swift
let SCNSceneSourceAssetContributorsKey: String let SCNSceneSourceAssetCreatedDateKey: String let SCNSceneSourceAssetModifiedDateKey: String let SCNSceneSourceAssetUpAxisKey: String let SCNSceneSourceAssetUnitKey: String
Objective C
NSString * const SCNSceneSourceAssetContributorsKey; NSString * const SCNSceneSourceAssetCreatedDateKey; NSString * const SCNSceneSourceAssetModifiedDateKey; NSString * const SCNSceneSourceAssetUpAxisKey; NSString * const SCNSceneSourceAssetUnitKey;
Константы
-
SCNSceneSourceAssetContributorsKey
Факторы файла. Соответствующее значение является словарем, заполненным с ключами, задокументированными в Ключевую группу Фактора.
Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAssetCreatedDateKey
Дата, когда создавался файл. Соответствующее значение
NSDate
экземпляр.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAssetModifiedDateKey
Дата, когда был в последний раз изменен файл. Соответствующее значение
NSDate
экземпляр.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAssetUpAxisKey
-Ось для сцены. Например, если сцена ориентирована да, соответствующее значение является строкой
"0.0 1.0 0.0"
.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAssetUnitKey
Модуль используется в файле. Соответствующее значение является словарем, заполненным с ключами, задокументированными в Ключевую группу Словаря Модуля.
Доступный в iOS 8.0 и позже.
-
-
Метаданные, идентифицирующие пользователя и инструмент разработки, создавший файл сцены, используемый с
SCNSceneSourceAssetContributorsKey
ключ.Объявление
Objective C
NSString * const SCNSceneSourceAssetAuthoringToolKey; NSString * const SCNSceneSourceAssetAuthorKey;
Константы
-
SCNSceneSourceAssetAuthoringToolKey
Инструмент разработки, создавший файл сцены.
Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAssetAuthorKey
Автор файла сцены.
Доступный в iOS 8.0 и позже.
Обсуждение
Инструменты разработки, генерирующие файлы сцены, могут включать метаданные, идентифицирующие имя и версию программного обеспечения для авторинга и имя пользователя, создавшего файл. Значения для этих ключей
NSString
объекты. -
-
Метаданные, описывающие единицу измерения, используемую в файле сцены, используемом с
SCNSceneSourceAssetUnitKey
ключ.Объявление
Objective C
NSString * const SCNSceneSourceAssetUnitNameKey; NSString * const SCNSceneSourceAssetUnitMeterKey;
Константы
-
SCNSceneSourceAssetUnitNameKey
Имя модуля используется в файле сцены.
Значение для этого ключа
NSString
объект.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceAssetUnitMeterKey
Коэффициент преобразования от модуля, привыкшего в файле сцены к метру SI.
Значение для этого ключа
NSNumber
возразите, чье значение с плавающей точкой является числом метров SI для каждого модуля в файле сцены.Доступный в iOS 8.0 и позже.
Обсуждение
По умолчанию единицы измерения для SceneKit полностью произвольны. Данные вершины геометрии определяются в любом модуле, системное и координатное пространство удобно для своего автора. Узлы в сцене, каждый определяет их собственное пространство, как удобно для организации содержания сцены, и камера, просматривающая сцену и средство рендеринга, рисующее его, определяют корреспонденцию между миром сцены и пикселями на дисплее.
Тем не менее, для авторов 3D активов может быть полезно установить масштаб модуля для искусства, которое они создают. Файл сцены может идентифицировать намеченную единицу измерения для пространства мира, в котором определяется их содержание. Если Вы загружаете активы из многократных источников и комбинируете их в единственной сцене, можно использовать модули, указанные в каждом источнике, чтобы определить, как масштабировать каждый актив в объединенной сцене. При работе с модулями от файла сцены, произвольным модулем расстояния, что мировое пространство SceneKit соответствует метру, определенному в Международной системе единиц (SI).
Например, один файл сцены мог бы содержать геометрию, представляющую механизм, определяя не модуль, но разработанный в масштабе, где один модуль равняется одному метру. Другой файл сцены мог бы содержать геометрию, представляющую лицо с определяемым модулем США — словарь модуля для файла сцены содержит строку
inch
дляSCNSceneSourceAssetUnitNameKey
ключ и число0.0254
дляSCNSceneSourceAssetUnitMeterKey
ключ. Для размещения этих объектов вместе в ту же сцену в надлежащих размерах установитеscale
свойство узла, содержащего геометрию лица к0.0254
. -
-
Ключи, идентифицирующие ошибки, возвратились при создании источников сцены или загрузке сцен, в которых они содержат, используемый в
userInfo
словарьNSError
объекты.Объявление
Swift
let SCNDetailedErrorsKey: String
Objective C
NSString * const SCNDetailedErrorsKey;
Константы
-
SCNDetailedErrorsKey
Подробная информация об ошибке от процесса загрузки файла сцены SceneKit.
Если SceneKit сообщает об ошибке при создании или загрузке из источника сцены,
userInfo
словарь возвращенногоNSError
объект может содержать этот ключ, значение которого является массивом словарей (каждый содержащий один или больше ключей, перечисленных в Ошибочных Ключах Непротиворечивости Файла Сцены) предоставление подробной информации о расположении ошибки в файле сцены.Если Вы указываете
YES
true
дляSCNSceneSourceCheckConsistencyKey
опция при создании или загрузке из источника сцены, SceneKit проверяет файл сцены по спецификации для ее формата файла. Проверка файла сцены может привести к дополнительным сообщениям об ошибке для нарушений спецификации формата файла, не препятствующих тому, чтобы SceneKit загрузил файл.Доступный в iOS 8.0 и позже.
-
-
Ключи, идентифицирующие ошибки, найдены во время проверки непротиворечивости формата файла сцены.
Объявление
Swift
let SCNConsistencyElementIDErrorKey: String let SCNConsistencyElementTypeErrorKey: String let SCNConsistencyLineNumberErrorKey: String
Objective C
NSString * const SCNConsistencyElementIDErrorKey; NSString * const SCNConsistencyElementTypeErrorKey; NSString * const SCNConsistencyLineNumberErrorKey;
Константы
-
SCNConsistencyElementIDErrorKey
Идентификатор элемента файла сцены, где произошла ошибка.
Значение для этого ключа является a
NSString
объект, содержащий идентификатор.Если элемент, в котором произошла ошибка, не имеет идентификатора, значение для этого ключа является идентификатором самого близкого родительского элемента с идентификатором.
Доступный в iOS 8.0 и позже.
-
SCNConsistencyElementTypeErrorKey
Тип элемента файла сцены, в котором произошла ошибка.
Значение для этого ключа является a
NSString
объект, называющий тип элемента файла сцены.Доступный в iOS 8.0 и позже.
-
SCNConsistencyLineNumberErrorKey
Номер строки в файле сцены, в котором произошла ошибка.
Значение для этого ключа
NSNumber
объект.Доступный в iOS 8.0 и позже.
Обсуждение
Если Вы указываете
YES
true
дляSCNSceneSourceCheckConsistencyKey
при создании или загрузке из источника сцены, SceneKit проверяет файл сцены по спецификации для ее формата файла. SceneKit сообщает о любых проблемах проверки формата, происходящих как массив словарей, идентифицированных вSCNDetailedErrorsKey
ключuserInfo
словарьNSError
объект. Каждый элемент в массиве является словарем, содержащим один или больше упомянутых выше ключей.Эти ключи и их значения предоставляют подробную информацию о расположении ошибки в файле сцены. Другие свойства возвращенного
NSError
объект описывает природу ошибки проверки. -
-
Коды ошибки, идентифицирующие ошибки, найденные во время проверки непротиворечивости формата файла сцены.
Объявление
Swift
var SCNConsistencyInvalidURIError: Int { get } var SCNConsistencyInvalidCountError: Int { get } var SCNConsistencyInvalidArgumentError: Int { get } var SCNConsistencyMissingElementError: Int { get } var SCNConsistencyMissingAttributeError: Int { get } var SCNConsistencyXMLSchemaValidationError: Int { get }
Objective C
enum { SCNConsistencyInvalidURIError = 1000, SCNConsistencyInvalidCountError, SCNConsistencyInvalidArgumentError, SCNConsistencyMissingElementError, SCNConsistencyMissingAttributeError, SCNConsistencyXMLSchemaValidationError, };
Константы
-
SCNConsistencyInvalidURIError
Файл сцены содержит недопустимый URI (или URL).
Доступный в iOS 8.0 и позже.
-
SCNConsistencyInvalidCountError
Файл сцены содержит неверный номер сцен.
Доступный в iOS 8.0 и позже.
-
SCNConsistencyInvalidArgumentError
Элемент в файле сцены содержит недопустимую опцию для одного из ее атрибутов.
Доступный в iOS 8.0 и позже.
-
SCNConsistencyMissingElementError
Требуемый элемент в файле сцены отсутствует.
Доступный в iOS 8.0 и позже.
-
SCNConsistencyMissingAttributeError
Элемент в файле сцены пропускает требуемый атрибут.
Доступный в iOS 8.0 и позже.
-
SCNConsistencyXMLSchemaValidationError
Формат файла сцены не соответствует свое определение схемы XML.
Доступный в iOS 8.0 и позже.
Обсуждение
Если Вы указываете
YES
true
дляSCNSceneSourceCheckConsistencyKey
при создании или загрузке из источника сцены, SceneKit проверяет файл сцены по спецификации для ее формата файла. SceneKit сообщает о любых проблемах проверки формата вNSError
объект, чейcode
свойство является одним из этих значений.Для получения дополнительной информации о расположении и природе любых ошибок проверки формата, посмотрите
SCNDetailedErrorsKey
введите ошибкуuserInfo
словарь и ключи перечислены в Ошибочных Ключах Непротиворечивости Файла Сцены. -
-
Константы, идентифицирующие фазы процесса загрузки сцены SceneKit, используемого в a
SCNSceneSourceStatusHandler
блок.Объявление
Swift
enum SCNSceneSourceStatus : Int { case Error case Parsing case Validating case Processing case Complete }
Objective C
typedef enum : NSInteger { SCNSceneSourceStatusError = -1, SCNSceneSourceStatusParsing = 4, SCNSceneSourceStatusValidating = 8, SCNSceneSourceStatusProcessing = 12, SCNSceneSourceStatusComplete = 16 } SCNSceneSourceStatus;
Константы
-
Error
SCNSceneSourceStatusError
Когда SceneKit попытался загрузить сцену, ошибка произошла.
Если
status
параметр aSCNSceneSourceStatusHandler
блок имеет это значение, посмотрите блокerror
параметр для получения информации о природе и расположении ошибки. Когда SceneKit встречается с ошибкой во время загрузки сцены, он вызывает блок обработчика с этим состоянием, затем после того, как блок завершается,sceneWithOptions:statusHandler:
возвраты методаnil
.Доступный в iOS 8.0 и позже.
-
Parsing
SCNSceneSourceStatusParsing
SceneKit начал десериализовывать исходный файл.
Доступный в iOS 8.0 и позже.
-
Validating
SCNSceneSourceStatusValidating
SceneKit начал проверять формат файла сцены.
Если Вы указываете
YES
true
дляSCNSceneSourceCheckConsistencyKey
при создании или загрузке из источника сцены, SceneKit проверяет файл сцены по спецификации для ее формата файла и сообщает о любых ошибках непротиворечивости формата.Доступный в iOS 8.0 и позже.
-
Processing
SCNSceneSourceStatusProcessing
SceneKit начал генерировать объекты диаграмм сцены от содержания файла сцены.
Доступный в iOS 8.0 и позже.
-
Complete
SCNSceneSourceStatusComplete
SceneKit успешно закончил загружать содержание файла сцены.
Доступный в iOS 8.0 и позже.
Обсуждение
Используйте информацию, предоставленную этими константами для описания процесса загрузки сцены в пользовательском интерфейсе приложения. Поскольку это перечисление оставляет комнату для более подробных отчетов о ходе работ, необходимо выдержать сравнение
status
параметр aSCNSceneSourceStatusHandler
блок против этих значений для упорядочивания, не для равенства, как в следующем обработчике в качестве примера:Swift
let myHandler: SCNSceneSourceStatusHandler = { totalProgress, status, error, stop in
if status.toRaw() >= SCNSceneSourceStatus.Processing.toRaw() &&
status.toRaw() < SCNSceneSourceStatus.Complete.toRaw() {
myProgressLabel.stringValue = "Processing"
}
}
Objective C
SCNSceneSourceStatusHandler myHandler =
^(float totalProgress, SCNSceneSourceStatus status, NSError *error, BOOL *stop) {
if (status >= SCNSceneSourceStatusProcessing && status < SCNSceneSourceStatusComplete)
myProgressLabel.stringValue = @"Processing";
};
Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в iOS 8.0 и позже.
-