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

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

Разработчик

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

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

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

SCNSkinner

Наследование


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


Swift

import SceneKit

Objective C

@import SceneKit;

Доступность


Доступный в iOS 8.0 и позже.

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

Скелетная анимация является методом для упрощения анимации сложных геометрий, таких как гуманоидные символы в игре. Скелет анимации является простой иерархией узлов управления, самих не имеющих никакой видимой геометрии. Соединение скелета с геометрией (также названный «очищением» скелета или созданием покрытой кожей модели) позволяет SceneKit автоматически деформировать геометрию при перемещении узлов управления скелета (как показано на рисунке 1).

Рисунок 1Associating кожевник с геометрией для использования в скелетной анимации image: ../Art/skinner.pdf

Работа со скелетом анимации

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

Можно также создать покрытую кожей модель из отдельно определенной геометрии и скелетных данных с помощью skinnerWithBaseGeometry:bones:boneInverseBindTransforms:boneWeights:boneIndices: метод.

Совместное использование объекта кожевника

Для работы со скелетом покрытой кожей модели используйте skinner свойство корневого узла модели. Например, один файл мог бы содержать анимированный игровой символ, и другие файлы могли бы содержать аксессуары (такие как шляпы или рюкзаки) для символа для износа. Художник, использующий 3D инструменты разработки, может указать что символ и аксессуары быть анимированным с помощью идентичных скелетов. Для присоединения шляпы к символу так, чтобы они анимировали вместе Вы соединяете объект кожевника, ответственный за анимацию шляпы к скелету, связанному с анимированным символом, как в следующем примере:

Swift

  • let hero = SCNScene(named: "Hero").rootNode
  • let hat = SCNScene(named: "FancyFedora").rootNode
  • hat.skinner.skeleton = hero.skinner.skeleton

Objective C

  • SCNNode *hero = [SCNScene sceneNamed:@"Hero"].rootNode;
  • SCNNode *hat = [SCNScene sceneNamed:@"FancyFedora"].rootNode;
  • hat.skinner.skeleton = hero.skinner.skeleton;
  • Создает объект кожевника с указанной видимой геометрией и информацией о скелете.

    Объявление

    Swift

    convenience init!(baseGeometry baseGeometry: SCNGeometry!, bones bones: [AnyObject]!, boneInverseBindTransforms boneInverseBindTransforms: [AnyObject]!, boneWeights boneWeights: SCNGeometrySource!, boneIndices boneIndices: SCNGeometrySource!)

    Objective C

    + (instancetype)skinnerWithBaseGeometry:(SCNGeometry *)baseGeometry bones:(NSArray *)bones boneInverseBindTransforms:(NSArray *)boneInverseBindTransforms boneWeights:(SCNGeometrySource *)boneWeights boneIndices:(SCNGeometrySource *)boneIndices

    Параметры

    baseGeometry

    Геометрия, поверхность которой скелет анимации кожевника деформируется.

    bones

    Массив SCNNode объекты, каждый представляющий кость или контрольную точку для скелета анимации.

    boneInverseBindTransforms

    Массив NSValue объекты, содержащие SCNMatrix4 преобразовывает, каждый из которых соответствует узлу в bones массив. Каждое значение является обратной матрицей (см. SCNMatrix4Invert) из того узла transform свойство для позы скелета по умолчанию.

    boneWeights

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

    boneIndices

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

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

    Новый объект кожевника.

    Обсуждение

    Для использования объекта кожевника в сцене присвойте его skinner свойство узла. Тот узел geometry свойство должно сослаться на то же SCNGeometry возразите как кожевник baseGeometry свойство.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • baseGeometry Свойство

    Геометрия, поверхность которой скелет анимации кожевника деформируется.

    Объявление

    Swift

    var baseGeometry: SCNGeometry!

    Objective C

    @property(retain, nonatomic) SCNGeometry *baseGeometry

    Обсуждение

    Используйте это свойство для:

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

    • Замените геометрию кожевника различной моделью. Новая модель должна быть совместима со скелетом анимации кожевника (т.е. это должно иметь то же число вершин).

    Поскольку многократные объекты кожевника могут сослаться на ту же геометрию, можно использовать геометрию с несколькими узлами в сцене, каждом с различным объектом кожевника изложить модель по-разному.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • baseGeometryBindTransform Свойство

    Координатная трансформация для геометрии кожевника в ее состоянии по умолчанию.

    Объявление

    Swift

    var baseGeometryBindTransform: SCNMatrix4

    Objective C

    @property(nonatomic) SCNMatrix4 baseGeometryBindTransform

    Обсуждение

    Эта матрица преобразования преобразовывает от координатного пространства геометрии модели до используемого скелетом анимации. Это должно соответствовать координатное пространство в который скелет (узлы в bones массив), первоначально определяется, связывая модель с ее позой по умолчанию.

    Значение по умолчанию SCNMatrix4Identity.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • skeleton Свойство

    Корневой узел скелета анимации объекта кожевника.

    Объявление

    Swift

    var skeleton: SCNNode!

    Objective C

    @property(nonatomic, retain) SCNNode *skeleton

    Обсуждение

    При замене скелета кожевника путем присвоения различного узла этому свойству новый скелет должен иметь ту же структуру как скелет, который это заменяет. Т.е. иерархия узлов должна соответствовать, несмотря на то, что текущее состояние каждого узла не может.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • bones Свойство

    Узлы управления скелета анимации. (только для чтения)

    Объявление

    Swift

    var bones: [AnyObject]! { get }

    Objective C

    @property(readonly, nonatomic) NSArray *bones

    Обсуждение

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

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • boneInverseBindTransforms Свойство

    Значение по умолчанию преобразовывает для узлов кости скелета анимации. (только для чтения)

    Объявление

    Swift

    var boneInverseBindTransforms: [AnyObject]! { get }

    Objective C

    @property(readonly, nonatomic) NSArray *boneInverseBindTransforms

    Обсуждение

    Массив NSValue объекты, содержащие SCNMatrix4 преобразовывает, каждый из которых соответствует узлу в bones массив. Каждое значение является обратной матрицей (см. SCNMatrix4Invert) из того узла transform свойство для позы скелета по умолчанию.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • boneWeights Свойство

    Источник геометрии, определяющий влияние каждой кости на позициях вершины геометрии. (только для чтения)

    Объявление

    Swift

    var boneWeights: SCNGeometrySource! { get }

    Objective C

    @property(readonly, nonatomic) SCNGeometrySource *boneWeights

    Обсуждение

    Этот источник геометрии semantic свойство должно быть SCNGeometrySourceSemanticBoneWeights. Его данные являются массивом векторов с плавающей точкой, чей componentsPerVector количество является числом костей, влияющих на каждую вершину. Каждый вектор соответствует вершине в геометрии SCNGeometrySourceSemanticVertex источник геометрии и каждый компонент в векторе указывают влияние кости на позиции той вершины. boneIndices источник определяет, какие узлы в массиве костей соответствуют каждому компоненту в векторе. Значение компонента 0.0 средние значения, что кость не имеет никакого влияния на ту вершину; положительные или отрицательные величины масштабируют трансформацию узла кости, прежде чем SceneKit применит ту трансформацию к вершине.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.

  • boneIndices Свойство

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

    Объявление

    Swift

    var boneIndices: SCNGeometrySource! { get }

    Objective C

    @property(readonly, nonatomic) SCNGeometrySource *boneIndices

    Обсуждение

    Этот источник геометрии semantic свойство должно быть SCNGeometrySourceSemanticBoneIndices. Его данные являются массивом целочисленных векторов, каждый из которых соответствует вектору веса в boneWeights источник геометрии. Каждый компонент в векторе указывает индекс узла в bones массив для соответствующего компонента веса кости.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

    Доступный в iOS 8.0 и позже.