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 *)urloptions:(NSDictionary *)optionsПараметры
urlURL, идентифицирующий расположение файла сцены в формате, распознан SceneKit.
optionsСловарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nilиспользовать опции по умолчанию.Возвращаемое значение
Новый, инициализированный исходный объект сцены, или
nilесли инициализация не была успешна.Обсуждение
Если у Вас есть содержание файла сцены, но не самого файла (например, если Ваши файлы сцены загрузок приложений от сети), используйте
sceneSourceWithData:options:метод вместо этого.Оператор импорта
Objective C
@import SceneKit;Доступность
Доступный в iOS 8.0 и позже.
-
Создает источник сцены, читающий график сцены, содержавшийся в
NSDataобъект.Объявление
Objective C
+ (instancetype)sceneSourceWithData:(NSData *)dataoptions:(NSDictionary *)optionsПараметры
dataОбъект данных, содержащий файл сцены в формате, распознан SceneKit.
optionsСловарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nilиспользовать опции по умолчанию.Возвращаемое значение
Новый, инициализированный исходный объект сцены, или
nilесли инициализация не была успешна.Обсуждение
dataпараметр этого метода должен содержать те же данные, так же непосредственно считанные из файла сцены (такой как при помощиNSDataметодdataWithContentsOfURL:). Используйте этот метод, когда у Вас будет содержание файла сцены, но не самого файла — например, если Ваши файлы сцены загрузок приложений от сети.Оператор импорта
Objective C
@import SceneKit;Доступность
Доступный в iOS 8.0 и позже.
-
Инициализирует источник сцены для чтения графика сцены от указанного файла.
Объявление
Objective C
- (id)initWithURL:(NSURL *)urloptions:(NSDictionary *)optionsПараметры
urlURL, идентифицирующий сцену.
optionsСловарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nilиспользовать опции по умолчанию.Возвращаемое значение
Инициализированный исходный объект сцены, или
nilесли инициализация не была успешна.Обсуждение
Если у Вас есть содержание файла сцены, но не самого файла (например, если Ваши файлы сцены загрузок приложений от сети), используйте
initWithData:options:метод вместо этого.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Инициализирует источник сцены для чтения графика сцены, содержавшегося в
NSDataобъект.Объявление
Objective C
- (id)initWithData:(NSData *)dataoptions:(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 *)optionsstatusHandler:(SCNSceneSourceStatusHandler)statusHandlerПараметры
optionsСловарь, содержащий опции та загрузка сцены влияния. Посмотрите, что Сцена Загружает Опции для доступных ключей и значений. Передача
nilиспользовать опции по умолчанию.statusHandlerSCNSceneSourceStatusHandlerблок. 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 *)optionserror:(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 *)uidwithClass:(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кYEStrueв блоке для прерывания последующей обработки содержания источника сцены.Блок возвращает булево значение, указывающее, прошел ли объект записи тест и должен быть включен в возвращенный массив метода.
Возвращаемое значение
Массив SceneKit возражает из источника сцены, которые проходят тест.
Обсуждение
SceneKit распознает объекты следующих классов в файлах сцены:
NSImage
Каждый объект в файле сцены имеет идентификатор, который уникален для его класса. Эти идентификаторы определяются программным обеспечением, создавшим файл сцены — например, они могут быть описательными именами, присвоенными художником, использующим 3D инструменты разработки. Для классов SceneKit с a
nameсвойство (такое как узлы и конфигурации), имя объекта, загруженного из файла сцены, основывается на своем идентификаторе в файле сцены.Используйте этот метод для выборочной загрузки объектов из исходного соответствия сцены критерии, которые Вы указываете. Например, следующий код загружает из файла сцены только узлы, присоединившие геометрию:
Swift
let geometryNodes = sceneSource.entriesPassingTest { entry, identifier, stop inif 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>) -> VoidObjective 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кYEStrueв блоке для прерывания последующей обработки содержания источника сцены.Оператор импорта
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: StringObjective 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объект, содержащий булево значение. Значение по умолчаниюNOfalse.Для участия в освещении и штриховке геометрия должна включать поверхностные векторы нормали в свои данные вершины. Некоторые файлы сцены могут не содержать такие данные. Если Вы устанавливаете значение этой опции в
YEStrue, SceneKit применяет эвристику для генерации поверхностных нормальных данных для каждой геометрии, которую это загружает из источника сцены, если такие данные отсутствуют.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceFlattenSceneKeyОпция для того, чтобы автоматически объединить части графика сцены во время загрузки.
Значение для этого ключа
NSNumberобъект, содержащий булево значение. Значение по умолчаниюNOfalse.Если Вы устанавливаете значение этой опции в
YEStrue, SceneKit пытается сократить сложность графика сцены, загруженного из источника сцены путем слияния конфигураций и объединения узлов. Используйте эту опцию для более эффективного рендеринга, когда манипулирование графиком сцены не будет необходимо (например, при рендеринге быстрого предварительного просмотра содержания сцены).Доступный в iOS 8.0 и позже.
-
SCNSceneSourceOverrideAssetURLsKeyОпция делать попытку загружающихся внешних ресурсов с помощью их URLs, как указано в файле сцены.
Значение для этого ключа
NSNumberобъект, содержащий булево значение. Значение по умолчаниюNOfalse.Файл сцены может сослаться на внешние ресурсы, такие как файлы образа, используемые в качестве текстур в свойствах материала, с помощью относительных путей URL. При загрузке из источника сцены, SceneKit попытками по умолчанию разрешить эти ссылки относительно каталога, содержащего файл сцены. Если Вы устанавливаете значение этой опции в
YEStrue, SceneKit ищет внешние ресурсы только в каталогах, Вы указываете использованиеSCNSceneSourceAssetDirectoryURLsKeyопция.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceCheckConsistencyKeyОпция проверить файлы сцены при загрузке.
Значение для этого ключа
NSNumberобъект, содержащий булево значение. Значение по умолчаниюNOfalse.Если Вы устанавливаете значение этой опции в
YEStrue, SceneKit добавляет шаг проверки непротиворечивости прежде, чем инициализировать или загрузить содержание из источника сцены. Эти задержки шага, загружающиеся, чтобы проверить, что формат файла сцены соответствует свою спецификацию. Если проверка перестала работать, SceneKit прекращает загружаться и возвращает ошибку. Используйте эту опцию, если необходимо решить, что файл сцены неповрежден и допустим перед использованием ее.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceStrictConformanceKeyОпция интерпретировать файлы сцены точно, как указано форматом файла сцены.
Значение для этого ключа
NSNumberобъект, содержащий булево значение. Значение по умолчаниюNOfalse.По умолчанию SceneKit читает дополнительное настоящее метаданных в файле сцены при загрузке сцены так, чтобы ее рендеринг содержания сцены был максимально близок к первоначальному намерению автора файла сцены. Эта информация может включать опции, что художник может выбрать третье лицо использования 3D инструменты разработки или функции SceneKit, не указанного форматом файла сцены. Если Вы устанавливаете значение этой опции в
YEStrue, SceneKit игнорирует информацию, которая не является частью спецификации формата файла сцены.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceUseSafeModeKeyОпция ограничить доступ к файловой системе и доступ к сети для внешних ресурсов, на которые ссылается файл сцены.
Значение для этого ключа
NSNumberобъект, содержащий булево значение. Значение по умолчаниюNOfalse.Файл сцены может сослаться на внешние ресурсы, такие как файлы образа, используемые в качестве текстур в свойствах материала, с помощью относительного или абсолютного URLs, включая URLs, идентифицирующий сетевые ресурсы. Если Вы устанавливаете значение этой опции в
YEStrue, SceneKit не загружает внешние ресурсы из сети или из чувствительных каталогов в локальной файловой системе.Доступный в iOS 8.0 и позже.
-
SCNSceneSourceConvertUnitsToMetersKeyОпция для того, масштабировать ли автоматически содержание сцены.
Значение для этого ключа
NSNumberобъект, содержащий значение с плавающей точкой. Значение по умолчаниюnil, указание никакого преобразования модуля.Моделирование физики SceneKit лучше всего, когда один модуль в координатном пространстве сцены соответствует одному метру в мире физики. При загрузке элементов из файлов сцены обеспечьте значение для этого ключа, указывающего число метров (в координатном пространстве загруженной сцены) для каждого модуля в координатном пространстве сцены элементов, которые будут загружены.
Например, художник мог бы разработать игровой символ использование масштаба, где один модуль является ногой США. Для загрузки этой модели для использования в основанном на метре координатном пространстве SceneKit укажите значение
0.3048для этого ключа.Эта опция не имеет никакого эффекта для активов, сжатых XCode. Вместо этого используйте сам XCode для преобразования единиц при сжатии активов.
Доступный в iOS 8.0 через iOS 8.2.
-
SCNSceneSourceConvertToYUpKeyОпция для того, преобразовать ли активы, загрузилась от файла сцены для использования в системе координат, где ось y подчеркивает.
Значение для этого ключа
NSNumberобъект, содержащий булево значение. Значение по умолчаниюNOfalse.Моделирование физики SceneKit лучше всего, когда ось y координатного пространства сцены соответствует направление мира физики. Некоторые внешние 3D инструменты разработки используют системы координат, где различная ось подчеркивает. Указать
YEStrueдля этого ключа для автоматического преобразования всех элементов сцены загрузился от файла на основе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: StringObjective 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свойство кYEStrue, и добавление его к надлежащему элементу сцены. Используйте эту политику, когда Вы захотите непосредственно управлять (или позволить пользователю непосредственно управлять) прогресс анимаций.Доступный в iOS 8.0 и позже.
-
-
Свойства метаданных связались с файлом сцены, используемым
propertyForKey:метод.Объявление
Swift
let SCNSceneSourceAssetContributorsKey: String let SCNSceneSourceAssetCreatedDateKey: String let SCNSceneSourceAssetModifiedDateKey: String let SCNSceneSourceAssetUpAxisKey: String let SCNSceneSourceAssetUnitKey: StringObjective 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: StringObjective C
NSString * const SCNDetailedErrorsKey;Константы
-
SCNDetailedErrorsKeyПодробная информация об ошибке от процесса загрузки файла сцены SceneKit.
Если SceneKit сообщает об ошибке при создании или загрузке из источника сцены,
userInfoсловарь возвращенногоNSErrorобъект может содержать этот ключ, значение которого является массивом словарей (каждый содержащий один или больше ключей, перечисленных в Ошибочных Ключах Непротиворечивости Файла Сцены) предоставление подробной информации о расположении ошибки в файле сцены.Если Вы указываете
YEStrueдляSCNSceneSourceCheckConsistencyKeyопция при создании или загрузке из источника сцены, SceneKit проверяет файл сцены по спецификации для ее формата файла. Проверка файла сцены может привести к дополнительным сообщениям об ошибке для нарушений спецификации формата файла, не препятствующих тому, чтобы SceneKit загрузил файл.Доступный в iOS 8.0 и позже.
-
-
Ключи, идентифицирующие ошибки, найдены во время проверки непротиворечивости формата файла сцены.
Объявление
Swift
let SCNConsistencyElementIDErrorKey: String let SCNConsistencyElementTypeErrorKey: String let SCNConsistencyLineNumberErrorKey: StringObjective 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 и позже.
Обсуждение
Если Вы указываете
YEStrueдля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 и позже.
Обсуждение
Если Вы указываете
YEStrueдля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;Константы
-
ErrorSCNSceneSourceStatusErrorКогда SceneKit попытался загрузить сцену, ошибка произошла.
Если
statusпараметр aSCNSceneSourceStatusHandlerблок имеет это значение, посмотрите блокerrorпараметр для получения информации о природе и расположении ошибки. Когда SceneKit встречается с ошибкой во время загрузки сцены, он вызывает блок обработчика с этим состоянием, затем после того, как блок завершается,sceneWithOptions:statusHandler:возвраты методаnil.Доступный в iOS 8.0 и позже.
-
ParsingSCNSceneSourceStatusParsingSceneKit начал десериализовывать исходный файл.
Доступный в iOS 8.0 и позже.
-
ValidatingSCNSceneSourceStatusValidatingSceneKit начал проверять формат файла сцены.
Если Вы указываете
YEStrueдляSCNSceneSourceCheckConsistencyKeyпри создании или загрузке из источника сцены, SceneKit проверяет файл сцены по спецификации для ее формата файла и сообщает о любых ошибках непротиворечивости формата.Доступный в iOS 8.0 и позже.
-
ProcessingSCNSceneSourceStatusProcessingSceneKit начал генерировать объекты диаграмм сцены от содержания файла сцены.
Доступный в iOS 8.0 и позже.
-
CompleteSCNSceneSourceStatusCompleteSceneKit успешно закончил загружать содержание файла сцены.
Доступный в iOS 8.0 и позже.
Обсуждение
Используйте информацию, предоставленную этими константами для описания процесса загрузки сцены в пользовательском интерфейсе приложения. Поскольку это перечисление оставляет комнату для более подробных отчетов о ходе работ, необходимо выдержать сравнение
statusпараметр aSCNSceneSourceStatusHandlerблок против этих значений для упорядочивания, не для равенства, как в следующем обработчике в качестве примера:Swift
let myHandler: SCNSceneSourceStatusHandler = { totalProgress, status, error, stop inif 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 и позже.
-
