SCNSceneRenderer
Наследование
Не применимый
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в iOS 8.0 и позже.
SCNSceneRenderer протокол определяет методы и свойства, характерные для SCNView, SCNLayer и SCNRenderer классы. Вы используете экземпляр одного из этих классов, чтобы вывести на экран сцену и управлять рендерингом SceneKit и анимацией содержания сцены.
Как правило, Вы используете SCNView класс для отображения сцены в окне (или полный экран). Можно создать и сконфигурировать представление SceneKit программно или в Интерфейсном Разработчике. Другие классы средства рендеринга представляют содержание SceneKit в более специализированных ситуациях. Если Вашему приложению составили пользовательский интерфейс Базовых Слоев анимации, можно использовать SCNLayer класс для рендеринга сцены в уровне. Если Ваше приложение использует OpenGL для другого рендеринга, можно использовать SCNRenderer класс для рендеринга содержания SceneKit в том же контексте OpenGL.
Используйте scene свойство представления, уровня или средства рендеринга для указания сцены для отображения.
-
Узел, от которого содержание сцены просматривается для рендеринга. (требуемый)
Объявление
Swift
var pointOfView: SCNNode? { get set }Objective C
@property(nonatomic, retain) SCNNode *pointOfViewОбсуждение
Используйте узел с
SCNCameraэкземпляр присвоился кcameraсвойство для просмотра сцены. Узел обеспечивает позицию и направление виртуальной камеры, и объект камеры обеспечивает параметры рендеринга, такие как поле зрения и фокус.Для отладки световых сигналов и теней, можно также определять центр внимания (
SCNLightобъект, чейtypeсвойствоSCNLightTypeSpot) как точка зрения. В этом случае, светspotInnerAngleсвойство определяет поле зрения иzNearиzFarсвойства определяют близкие и далекие степени области, которая является видима экранный (также известный как видимое пространство).В любом случае направление представления приезжает отрицательная ось z пространства локальной координаты узла.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Булево значение, определяющее, добавляет ли SceneKit автоматически световые сигналы к сцене. (требуемый)
Объявление
Swift
var autoenablesDefaultLighting: Bool { get set }Objective C
@property(nonatomic) BOOL autoenablesDefaultLightingОбсуждение
Если значение этого свойства
NOfalse(значение по умолчанию), единственные источники света использование SceneKit для рендеринга сцены является содержавшимися в графике сцены. Если Вы изменяете значение наYEStrue, SceneKit автоматически добавляет и помещает всенаправленный источник света при рендеринге сцен, не содержащих световых сигналов или только содержащих окружающие светы.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Булево значение, определяющее, применяет ли SceneKit дрожание для сокращения артефактов искажения. (требуемый)
Объявление
Swift
var jitteringEnabled: Bool { get set }Objective C
@property(nonatomic, getter=isJitteringEnabled) BOOL jitteringEnabledОбсуждение
Дрожание является процессом что использование SceneKit для повышения визуального качества представленной сцены. В то время как содержание сцены тихо, SceneKit перемещается
pointOfViewрасположение очень немного (меньше чем пикселем в спроектированном экранном пространстве). Это тогда составляет изображения, представленные после того, как несколько таких перемещений для создания финала представили сцену, создав сглаживающийся эффект, сглаживающий края представленной геометрии.По умолчанию значение этого свойства
NOfalse, указание, что SceneKit не должен выполнять дрожание. Измените значение наYEStrueпозволять дрожать.Поскольку
SCNViewиSCNLayerклассы выполняют дрожание автоматически и асинхронно, разрешение дрожащий для этих классов оказывает минимальное влияние на рендеринг производительности.SCNRendererкласс выполняет дрожание синхронно, подвергаясь высокоэффективной стоимости. С этим классом дрожание подходит для рендеринга единственных кадров по требованию, но не для рендеринга в реальном времени.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Булево значение, определяющее ли дисплеи SceneKit, представляющие статистику производительности во вспомогательном представление. (требуемый)
Объявление
Swift
var showsStatistics: Bool { get set }Objective C
@property(nonatomic) BOOL showsStatisticsОбсуждение
Представление статистики SceneKit выводит на экран различную информацию о производительности рендеринга сцены и использовании ресурсов OpenGL, включая кадры в секунду (кадр/с) счетчик. На OS X нажмите кнопку имущества в представлении статистики для показа панели с дополнительными средствами управления для корректировки рендеринга SceneKit сцены.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Текущее время сцены. (требуемый)
Объявление
Swift
var sceneTime: NSTimeInterval { get set }Objective C
@property(nonatomic) NSTimeInterval sceneTimeОбсуждение
Эта метка времени определяет, как рабочие анимации ведут себя, который подобен тому, как playhead время в приложении видеоплеера определяет который кадр фильма вывести на экран. Время сцены применяется только к анимациям чей
usesSceneTimeBaseсвойствоYEStrue, включая загруженных из источника сцены с помощьюSCNSceneSourceAnimationImportPolicyPlayUsingSceneTimeBaseопция.Используйте это свойство, вместе с вышеупомянутыми параметрами анимации, когда Вы захотите непосредственно управлять (или позволить пользователю непосредственно управлять) воспроизведение анимаций. Например, при создании инструмента разработки для 3D активов Вы могли бы связать значение этого свойства с управлением ползунком для вычищения посредством воспроизведения анимаций в файле сцены.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Булево значение, определяющее, играет ли сцена. (требуемый)
Объявление
Swift
var playing: Bool { get set }Objective C
@property(getter=isPlaying) BOOL playingОбсуждение
Если значение этого свойства
NOfalse(значение по умолчанию), SceneKit не постепенно увеличивает время сцены, таким образом, не играют анимации, связанные со сценой. Измените значение этого свойства наYEStrueначинать анимировать сцену.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Булево значение, определяющее, перезапускает ли SceneKit время сцены после всех анимаций в сцене, играло. (требуемый)
Объявление
Swift
var loops: Bool { get set }Objective C
@property(nonatomic) BOOL loopsОбсуждение
Если значение этого свойства
YEStrue(значение по умолчанию), SceneKit возвращает время сцены для обнуления после того, как все анимации, связанные со сценой, играли, заставляя те анимации повториться. Иначе, когда все анимации завершились, SceneKit прекращает играть сцену.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
См. также
-
Подготавливает объект SceneKit к рендерингу. (требуемый)
Объявление
Swift
func prepareObject(_object: AnyObject, shouldAbortBlockblock: (() -> Bool)?) -> BoolObjective C
- (BOOL)prepareObject:(id)objectshouldAbortBlock:(BOOL (^)(void))blockПараметры
objectSCNScene,SCNNode,SCNGeometry, илиSCNMaterialэкземпляр.blockБлок, который SceneKit периодически вызывает при подготовке объекта. Блок не берет параметров.
Ваш блок должен возвратиться
NOfalseсказать SceneKit продолжать подготавливать объект, илиYEStrueотменять подготовку.Передача
nilдля этого параметра, если Вам не нужна возможность отменить подготовку объекта.Возвращаемое значение
YEStrueесли объект был успешно подготовлен к рендерингу, илиNOfalseесли была отменена подготовка.Обсуждение
По умолчанию SceneKit лениво загружает ресурсы на GPU для рендеринга. Когда Вы добавляете большие суммы нового содержания к анимированной сцене, этот подход использует память и пропускную способность GPU эффективно, но может привести к задержкам в иначе гладкой частоте кадров. Для предотвращения таких проблем используйте этот метод для подготовки содержания к рисованию прежде, чем добавить его к сцене. Можно вызвать этот метод на вторичном потоке для подготовки содержания асинхронно.
SceneKit подготавливает все содержание, связанное с
objectпараметр Вы обеспечиваете. Если Вы обеспечиваетеSCNMaterialобъект, SceneKit загружает любые изображения текстуры, присвоенные ее свойствам материала. Если Вы обеспечиваетеSCNGeometryобъект, SceneKit загружает все материалы, присоединенные к геометрии, а также ее данным вершины. Если Вы обеспечиваетеSCNNodeилиSCNSceneобъект, SceneKit загружает все конфигурации и материалы, связанные с узлом и всеми его дочерними узлами, или со всей иерархией узла сцены.Можно использовать
blockпараметр для отмены подготовки, если больше не необходимо содержание. Например, в игре Вы могли бы использовать этот метод, чтобы предварительно загрузить области игрового мира, который проигрыватель должен скоро ввести, но если персонаж умирает прежде, чем ввести те области, можно возвратитьсяYEStrueот блока для отмены предварительно загружения.Можно наблюдать прогресс этой работы с
NSProgressкласс. Для получения дополнительной информации см. Ссылку класса NSProgress.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Подготавливает указанные объекты SceneKit к рендерингу, с помощью фонового потока. (требуемый)
Объявление
Swift
func prepareObjects(_objects: [AnyObject], withCompletionHandlercompletionHandler: ((Bool) -> Void)?)Objective C
- (void)prepareObjects:(NSArray *)objectswithCompletionHandler:(void (^)(BOOL success))completionHandlerПараметры
objectsМассив содержания того или больше
SCNScene,SCNNode,SCNGeometry, илиSCNMaterialэкземпляры.completionHandlerБлок, который вызывает SceneKit, когда объектная подготовка перестала работать или завершается.
Блок берет следующий параметр:
successYEStrueесли все содержание было успешно подготовлено к рендерингу; иначе,NOfalse.Обсуждение
По умолчанию SceneKit лениво загружает ресурсы на GPU для рендеринга. Когда Вы добавляете большие суммы нового содержания к анимированной сцене, этот подход использует память и пропускную способность GPU эффективно, но может привести к задержкам в иначе гладкой частоте кадров. Для предотвращения таких проблем используйте этот метод для подготовки содержания к рисованию прежде, чем добавить его к сцене. SceneKit использует вторичный поток для подготовки содержания асинхронно.
SceneKit подготавливает все содержание, связанное с объектами, которые Вы обеспечиваете. Если Вы обеспечиваете
SCNMaterialобъект, SceneKit загружает любые изображения текстуры, присвоенные ее свойствам материала. Если Вы обеспечиваетеSCNGeometryобъект, SceneKit загружает все материалы, присоединенные к геометрии, а также ее данным вершины. Если Вы обеспечиваетеSCNNodeилиSCNSceneобъект, SceneKit загружает все конфигурации и материалы, связанные с узлом и всеми его дочерними узлами, или со всей иерархией узла сцены.Можно наблюдать прогресс этой работы с
NSProgressкласс. Для получения дополнительной информации см. Ссылку класса NSProgress.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
hitTest (_: опции:) - hitTest:options:ТребуемыйИщет сцену средства рендеринга объекты, соответствующие точке в представленном изображении. (требуемый)
Объявление
Objective C
- (NSArray *)hitTest:(CGPoint)thePointoptions:(NSDictionary *)optionsПараметры
thePointТочка в экранном пространстве (представление, уровень или область просмотра OpenGL) система координат средства рендеринга сцены.
optionsСловарь опций, влияющих на поиск. Посмотрите
Hit Testing Options Keysдля приемлемых значений.Возвращаемое значение
Массив
SCNHitTestResultобъекты, представляющие результаты поиска.Обсуждение
2D точка в представленном пространстве координаты экрана может относиться к любой точке вдоль линейного сегмента в 3D координатном пространстве сцены. Тестирование хита является процессом нахождения элементов сцены, расположенной вдоль этого линейного сегмента. Например, можно использовать этот метод для нахождения геометрии, соответствующей событию щелчка в представлении SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Возвращает булево значение, указывающее, может ли узел быть видим с указанной точки зрения. (требуемый)
Объявление
Параметры
nodeУзел, видимость которого должна быть протестирована.
pointOfViewУзел, определяющий точку зрения, как используется
pointOfViewсвойство.Возвращаемое значение
YEStrueесли ограничительная рамка протестированного узла пересекает представление frustum определенныйpointOfViewузел; иначе,NOfalse.Обсуждение
Любой узел, содержащий камеру или центр внимания, может служить точкой зрения (см.
pointOfViewсвойство для подробных данных). Такой узел определяет видимое пространство — часть координатного пространства сцены, сформированного как усеченная пирамида, включающая все точки, видимые с той точки зрения.Используйте этот метод, чтобы протестировать, находится ли узел в видимом пространстве, определенном другим узлом (который может или может не быть текущим средством рендеринга сцены
pointOfViewузел). Например, в игровой сцене, содержащей многократные узлы камеры, Вы могли использовать этот метод для определения, какая камера является в настоящее время лучшей для просмотра движущегося персонажа.Обратите внимание на то, что этот метод не выполняет тестирование поглощения газов. Т.е. это возвращается
YEStrueесли протестированный узел находится в указанном видимом пространстве независимо от того, затенено ли содержание того узла другой геометрией.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
projectPoint (_:) - projectPoint:ТребуемыйПроектирует точку от 3D системы мировой координаты сцены к 2D пиксельной системе координат средства рендеринга. (требуемый)
Объявление
Swift
func projectPoint(_point: SCNVector3) -> SCNVector3Objective C
- (SCNVector3)projectPoint:(SCNVector3)pointПараметры
pointТочка в системе мировой координаты сцены средства рендеринга.
Возвращаемое значение
Соответствующая точка в экранном пространстве (представление, уровень или область просмотра OpenGL) система координат средства рендеринга сцены.
Обсуждение
Z-координата возвращенной точки описывает глубину спроектированной точки относительно близких и далеких плоскостей отсечения видимого пространства средства рендеринга (определенный
pointOfViewузел). Проектирование точки на близкой плоскости отсечения возвращает точку, z-координата которой0.0; проектирование точки на далекой плоскости отсечения возвращает точку, z-координата которой1.0.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
См. также
-
unprojectPoint (_:) - unprojectPoint:ТребуемыйНе проектирует точку от 2D пиксельной системы координат средства рендеринга к 3D системе мировой координаты сцены. (требуемый)
Объявление
Swift
func unprojectPoint(_point: SCNVector3) -> SCNVector3Objective C
- (SCNVector3)unprojectPoint:(SCNVector3)pointПараметры
pointТочка в экранном пространстве (представление, уровень или область просмотра OpenGL) система координат средства рендеринга сцены.
Возвращаемое значение
Соответствующая точка в системе мировой координаты сцены средства рендеринга.
Обсуждение
Z-координата
pointпараметр описывает глубину, на которой можно не спроектировать точку относительно близких и далеких плоскостей отсечения видимого пространства средства рендеринга (определенныйpointOfViewузел). Непроектирование точки, z-координата которой0.0возвращает точку на близкой плоскости отсечения; непроектирование точки, z-координата которой1.0возвращает точку на далекой плоскости отсечения.2D точка в представленном пространстве координаты экрана может относиться к любой точке вдоль линейного сегмента в 3D координатном пространстве сцены. Чтобы протестировать на содержание сцены вдоль этой строки — например, найти геометрию, соответствующую расположению события щелчка в представлении — используют
hitTest:options:метод.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
См. также
-
Объект делегата, получающий сообщения о процессе рендеринга SceneKit. (требуемый)
Объявление
Swift
unowned(unsafe) var delegate: SCNSceneRendererDelegate? { get set }Objective C
@property(nonatomic, assign) id< SCNSceneRendererDelegate > delegateОбсуждение
Делегат средства рендеринга сцены является пользовательским объектом, который Вы обеспечиваете. Когда SceneKit обрабатывает сцену для рендеринга каждого кадра анимации, это уведомляет делегата после значительных шагов в процессе обновления-и-рендеринга. Существует два основного использования для делегата средства рендеринга сцены:
Реализация игровой логики на кадр. Используйте методы делегата обновить состояние Ваших игровых объектов и изменить график сцены в ответ, или в начале процесса рендеринга SceneKit для каждого кадра, или после того, как SceneKit обработает действия и анимации или выполнит моделирование физики для сцены.
Выполнение пользовательского рендеринга OpenGL. Используйте делегата средства рендеринга сцены для рисования собственного содержания OpenGL, любой, прежде чем SceneKit представит содержание сцены (как фон) или позже (как наложение).
Этот рендеринг независим от графика сцены и его содержания. Если Вы вместо этого хотите выполнить пользовательский OpenGL, представляющий, который привязывается в расположении в координатном пространстве сцены, используйте
rendererDelegateсвойствоSCNNodeобъект в графике сцены. Или если Вы хотите настроить рендеринг конфигураций и материалов SceneKit, используйтеSCNShadableпротокол для присоединения программ построения теней GLSL к объектам SceneKit.
Для получения дополнительной информации посмотрите Ссылку на протокол SCNSceneRendererDelegate.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
contextСвойствоКонтекст рендеринга OpenGL, который SceneKit использует для рендеринга сцены. (требуемый) (только для чтения)
Объявление
Swift
var context: UnsafeMutablePointer<Void> { get }Objective C
@property(nonatomic, readonly) void *contextОбсуждение
В OS X значением этого свойства является Ядро OpenGL
CGLContextObjобъект.В iOS значение этого свойства
EAGLContextобъект.Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
-
Сцена Набора Sprite, которая будет представлена поверх содержания SceneKit. (требуемый)
Объявление
Swift
var overlaySKScene: SKScene! { get set }Objective C
@property(nonatomic, retain) SKScene *overlaySKSceneОбсуждение
Используйте это свойство для рендеринга 2D содержания, накладывающего сцену — например, «возглавляет дисплей» для игры. Сцена Набора Sprite совместно использует тот же контекст OpenGL и ресурсы как средство рендеринга SceneKit, так использование этого свойства может обеспечить намного лучшую производительность, чем накладывание других представлений или уровней выше представления, представляющего Ваше содержание SceneKit.
Оператор импорта
Objective C
@import SceneKit;Swift
import SceneKitДоступность
Доступный в iOS 8.0 и позже.
