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

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

Разработчик

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

Опции
Развертывание Target:

На этой странице
Язык:

SCNGeometry

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

Работа с геометрическими объектами

Вы управляете появлением геометрии в сцене с узлами и материалами. Геометрический объект обеспечивает только форму видимого объекта, представленного SceneKit. Вы указываете цвет и текстуру для поверхности геометрии, управляете, как это реагирует на свет, и добавьте, что специальные эффекты путем присоединения материалов (для подробных данных, видят методы в Управлении Материалами Геометрии). Вы располагаете и ориентируете геометрию в сцене путем присоединения его к SCNNode объект. Многократные узлы могут сослаться на тот же геометрический объект, позволив ему появиться в различных позициях в сцене.

Можно легко скопировать конфигурации и изменить их материалы. Геометрический объект управляет ассоциацией между неизменными данными вершины и непостоянным присвоением материалов. Чтобы заставить геометрию появиться несколько раз в той же сцене с различным набором материалов, используйте его наследованный copy метод. Копия совместно использует базовые данные вершины оригинала, но может быть присвоенными материалами независимо. Можно таким образом сделать много копий геометрии, не подвергаясь значительной стоимости для рендеринга производительности.

Можно анимировать геометрический объект. Данные вершины, связанные с геометрией, являются неизменными, но SceneKit обеспечивает несколько способов анимировать геометрию. Можно использовать a SCNMorpher или SCNSkinner объект деформировать поверхность геометрии или выполнить анимации, создаваемые во внешнем 3D инструменте разработки и загруженные из файла сцены. Можно также использовать методы в SCNShadable протокол для добавления пользовательских программ программы построения теней GLSL, изменяющих рендеринг SceneKit геометрии.

Получение геометрического объекта

SceneKit обеспечивает несколько способов представить геометрические объекты Вашему приложению:

Действие

Для получения дополнительной информации

Загрузка из файла сцены создала использование внешних 3D инструментов разработки

SCNScene, SCNSceneSource

Используйте и настройте встроенные примитивные формы SceneKit

SCNPlane, SCNBox, SCNSphere, SCNPyramid, SCNCone, SCNCylinder, SCNCapsule, SCNTube, и SCNTorus

Создайте 3D геометрию из 2D текста или кривых Bézier

SCNText, SCNShape

Создайте пользовательскую геометрию из данных вершины

SCNGeometrySource, SCNGeometryElement, geometryWithSources:elements:, Управление данными геометрии

Оператор импорта


Swift

import SceneKit

Objective C

@import SceneKit;

Доступность


Доступный в OS X v10.8 и позже.
  • Создает новую геометрию, созданную из указанных источников геометрии и элементов.

    Объявление

    Swift

    convenience init(sources sources: [AnyObject], elements elements: [AnyObject]?)

    Objective C

    + (instancetype)geometryWithSources:(NSArray *)sources elements:(NSArray *)elements

    Параметры

    sources

    Массив SCNGeometrySource объекты, описывающие вершины в геометрии и их атрибутах.

    elements

    Массив SCNGeometryElement объекты, описывающие, как соединить вершины геометрии.

    Обсуждение

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

    Каждый SCNGeometrySource объект описывает атрибут всех вершин в геометрии (позиция вершины, поверхностный вектор нормали, цвет или координаты отображения текстур) идентифицированный источником semantic свойство. Для создания пользовательской геометрии, необходимо обеспечить по крайней мере один источник, для SCNGeometrySourceSemanticVertex семантический. Как правило, Вы также обеспечиваете источники для normals и координаты текстуры для использования в освещении и штриховке.

    Источники для вершины, нормальная, и цветная семантика должна быть уникальной — если многократные объекты в sources массив имеет семантическое то же, SceneKit использует только первое. Геометрия может иметь многократные источники для SCNGeometrySourceSemanticTexcoord семантический — порядок источников координаты текстуры в sources массив определяет значение для использования для mappingChannel свойство при присоединении материалов.

    Каждый SCNGeometryElement объект описывает, как вершины из источников геометрии объединены в многоугольники для создания формы геометрии. Создание пользовательской геометрии требует по крайней мере одного элемента. Если elements массив содержит многократные объекты, их порядок определяет расположение материалов геометрии — для подробных данных, посмотрите обсуждение materials свойство.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Создает новый геометрический объект без содержания (или содержания по умолчанию).

    Объявление

    Objective C

    + (instancetype)geometry

    Возвращаемое значение

    Новый геометрический объект.

    Обсуждение

    Этот метод создает геометрию без видимого содержания. Можно использовать пустую геометрию с другой геометрией levelsOfDetail свойство, чтобы заставить геометрию исчезнуть, когда это слишком далеко от камеры для полезного рендеринга.

    SceneKit SCNGeometry подклассы используют этот метод для создания экземпляров геометрии с содержанием по умолчанию. Например, если Вы обращаетесь к этому методу SCNSphere класс, это создает геометрию сферы чей radius свойство имеет значение по умолчанию 0.5.

    Вы не можете добавить источники геометрии или элементы к геометрическому объекту после создания его. Для создания пользовательской геометрии из собственного источника и данных элемента используйте geometryWithSources:elements: метод.

    Оператор импорта

    Objective C

    @import SceneKit;

    Доступность

    Доступный в OS X v10.9 и позже.

  • имя имя Свойство

    Имя связалось с геометрическим объектом.

    Объявление

    Swift

    var name: String?

    Objective C

    @property(nonatomic, copy) NSString *name

    Обсуждение

    Можно обеспечить описательное имя для геометрического объекта для создания управления графиком сцены проще. Конфигурации, загруженные из файла сцены, могут иметь имена, присвоенные художником, использующим 3D инструмент разработки. Используйте SCNSceneSource класс для исследования конфигураций в файле сцены, не загружая его график сцены.

    Имена геометрии сохраняются при экспорте сцены в файл с помощью writeToURL:options:delegate:progressHandler: метод. Они также появляются в редакторе сцены XCode.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • levelsOfDetail levelsOfDetail Свойство

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

    Объявление

    Swift

    var levelsOfDetail: [AnyObject]?

    Objective C

    @property(nonatomic, copy) NSArray *levelsOfDetail

    Обсуждение

    Поскольку рендеринг сложной геометрии несет расходы производительности, можно использовать объекты уровня детализации заменить более простыми конфигурациями в его месте как его расстояние от увеличений камеры точки зрения (или ее очевидные уменьшения размера). Для получения дополнительной информации посмотрите Ссылку класса SCNLevelOfDetail.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.9 и позже.

  • Массив SCNMaterial объекты, определяющие появление геометрии, когда представлено.

    Объявление

    Swift

    var materials: [AnyObject]?

    Objective C

    @property(nonatomic, copy) NSArray *materials

    Обсуждение

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

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

    Геометрия рисунка 1A с многократными элементами геометрии image: ../Art/geometry_multi_material.pdf

    Если геометрия имеет то же число материалов, как это имеет элементы геометрии, существенный индекс соответствует индексу элемента. Для конфигураций с меньшим количеством материалов, чем элементы SceneKit определяет существенный индекс для каждого элемента путем вычисления индекса того элемента по модулю число материалов. Например, в геометрии с шестью элементами и тремя материалами, SceneKit представляет элемент в индексе 5 использование материала в индексе 5 % 3 = 2.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • firstMaterial firstMaterial Свойство

    Первый материал, присоединенный к геометрии.

    Объявление

    Swift

    var firstMaterial: SCNMaterial?

    Objective C

    @property(nonatomic, retain) SCNMaterial *firstMaterial

    Обсуждение

    Вызов этого удобного метода эквивалентен получению первого объекта от геометрии materials массив. Значение этого свойства nil если геометрия не имеет никаких присоединенных материалов.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Возвращает первый материал, присоединенный к геометрии с указанным именем.

    Объявление

    Swift

    func materialWithName(_ name: String) -> SCNMaterial?

    Objective C

    - (SCNMaterial *)materialWithName:(NSString *)name

    Параметры

    name

    Имя материала, который будет получен.

    Возвращаемое значение

    Материальный объект с указанным именем.

    Обсуждение

    Можно использовать name свойство каждого SCNMaterial объект сделать управление Вашим графиком сцены проще. Материалы, загруженные из файла сцены, могут иметь имена, присвоенные художником, использующим 3D инструмент разработки.

    Если геометрии присоединили многократные материалы с тем же именем, этот метод возвращает первое согласно порядку materials массив.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Присоединяет материал к геометрии в указанном индексе.

    Объявление

    Swift

    func insertMaterial(_ material: SCNMaterial, atIndex index: Int)

    Objective C

    - (void)insertMaterial:(SCNMaterial *)material atIndex:(NSUInteger)index

    Параметры

    material

    Материал для присоединения.

    index

    Расположение в геометрии materials массив, в котором можно добавить новый материал.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Удаляет материал, присоединенный к геометрии.

    Объявление

    Swift

    func removeMaterialAtIndex(_ index: Int)

    Objective C

    - (void)removeMaterialAtIndex:(NSUInteger)index

    Параметры

    index

    Индекс присоединенного материала, который будет удален.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Заменяет материал, присоединенный к геометрии с другим.

    Объявление

    Swift

    func replaceMaterialAtIndex(_ index: Int, withMaterial material: SCNMaterial)

    Objective C

    - (void)replaceMaterialAtIndex:(NSUInteger)index withMaterial:(SCNMaterial *)material

    Параметры

    index

    Индекс присоединенного материала, который будет заменен.

    material

    Материал, которым можно заменить присоединенный материал.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Число элементов геометрии в геометрии. (только для чтения)

    Объявление

    Swift

    var geometryElementCount: Int { get }

    Objective C

    @property(nonatomic, readonly) NSInteger geometryElementCount

    Обсуждение

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

    Для конфигураций с многократными элементами можно использовать materials свойство для присоединения различных материалов к каждому элементу.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

    См. также

    – geometryElementAtIndex:

  • Возвращает элемент геометрии в указанном индексе.

    Объявление

    Swift

    func geometryElementAtIndex(_ elementIndex: Int) -> SCNGeometryElement?

    Objective C

    - (SCNGeometryElement *)geometryElementAtIndex:(NSInteger)elementIndex

    Параметры

    elementIndex

    Индекс элемента геометрии.

    Возвращаемое значение

    Элемент геометрии.

    Обсуждение

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

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Возвращает источники геометрии для указанного семантического.

    Объявление

    Swift

    func geometrySourcesForSemantic(_ semantic: String) -> [AnyObject]?

    Objective C

    - (NSArray *)geometrySourcesForSemantic:(NSString *)semantic

    Параметры

    semantic

    Постоянная идентификация семантического, для которого можно возвратить источники геометрии. Посмотрите Geometry Semantic Identifiers для возможных значений.

    Возвращаемое значение

    Массив SCNGeometrySource объекты, или nil если геометрия не имеет никакого источника для указанного семантического.

    Обсуждение

    Каждый SCNGeometrySource объект описывает атрибут всех вершин в геометрии (позиция вершины, поверхностный вектор нормали, цвет или координаты отображения текстур) идентифицированный источником semantic свойство. Геометрия всегда имеет по крайней мере один источник, для SCNGeometrySourceSemanticVertex семантический, и обычно имеет дополнительные источники для использования в освещении и штриховке.

    Вершина, нормальная, и цветная семантика каждый обращается к самое большее одному источнику. Геометрия может иметь многократные источники для SCNGeometrySourceSemanticTexcoord семантический — в этом случае, индексы в массиве возвращенного массива соответствуют значениям для mappingChannel свойство, используемое при присоединении текстур к материалам.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.8 и позже.

  • Число подразделений использование SceneKit для сглаживания поверхности геометрии во время отображения.

    Объявление

    Swift

    var subdivisionLevel: Int

    Objective C

    @property(nonatomic) NSUInteger subdivisionLevel

    Обсуждение

    Поверхностное подразделение является методом для использования геометрии низкой подробности для генерации гладкой поверхности для рендеринга. Когда Вы увеличиваетесь subdivisionLevel значение геометрии, SceneKit автоматически разделяет каждую поверхность на представленной поверхности, создавая более подробную, более гладкую геометрию, как показано на рисунке 2. SceneKit выполняет этот процесс подразделения во время отображения, сохраняя исходные данные геометрии.

    Рисунок 2Rendering поверхность подразделения image: ../Art/subdiv.pdf

    Подразделение поверхности округляет далеко любой резкий край и углы в геометрии; однако, такие подробные данные могут быть важны для проекта модели. Для сохранения краев используйте edgeCreasesElement свойство для идентификации краев и edgeCreasesSource свойство, чтобы указать, как гладкий или резкий они должны появиться после подразделения. Для сохранения углов включайте источник геометрии чей semantic значение SCNGeometrySourceSemanticVertexCrease при создании геометрии.

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

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.10 и позже.

  • Идентификация элемента геометрии, какие края поверхности геометрии должны остаться резкими после подразделения.

    Объявление

    Swift

    var edgeCreasesElement: SCNGeometryElement?

    Objective C

    @property(nonatomic, retain) SCNGeometryElement *edgeCreasesElement

    Обсуждение

    Этот элемент геометрии primitiveType значение должно быть SCNGeometryPrimitiveTypeLine. Данные элемента геометрии являются массивом индексов вершины, каждая пара которых определяет линейный сегмент, идентифицирующий край, который будет обработан как складка во время подразделения. Используйте edgeCreasesSource свойство для указания гладкости или резкости каждой складки.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.10 и позже.

    См. также

    subdivisionLevel

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

    Объявление

    Swift

    var edgeCreasesSource: SCNGeometrySource?

    Objective C

    @property(nonatomic, retain) SCNGeometrySource *edgeCreasesSource

    Обсуждение

    Этот источник геометрии semantic значение должно быть SCNGeometrySourceSemanticEdgeCrease. Его данные являются массивом скалярных значений (т.е. источник componentsPerVector значение 1). Значение в индексе в источнике геометрии определяет гладкость или резкость края, идентифицированного примитивом в соответствующем индексе в edgeCreasesElement элемент геометрии: значение 0.0 указывает полностью сглаживавший край и значение 10.0 или больше указывает бесконечно резкий край.

    Оператор импорта

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в OS X v10.10 и позже.

    См. также

    subdivisionLevel