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

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

Разработчик

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

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

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

SCNMorpher

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


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


Swift

import SceneKit

Objective C

@import SceneKit;

Доступность


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

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

Рисунок 1Morphing между геометрией сферы и двумя целевыми конфигурациями image: ../Art/morpher.pdf

Вы управляете этими переходами путем соединения SCNMorpher объект с узлом с помощью morpher свойство. morpher поддерживает массив целевых конфигураций и ряда весов, связанных с каждым. Когда все веса являются нулем, поверхность принимает форму основной геометрии (от узла geometry свойство). Когда Вы используете setWeight:forTargetAtIndex: метод для увеличения веса до 1.0, поверхность принимает форму геометрии в соответствующем индексе в morpher’s targets массив. При использовании множества значений веса для нескольких целей поверхность принимает форму, пропорционально интерполирующую между целевыми конфигурациями.

Можно также анимировать веса неявно или явно использующий keypath анимации. Например, следующий код создает анимацию морфа, переходящую один целевой вес назад и вперед неоднократно:

Swift

  • let animation = CABasicAnimation(keyPath: "morpher.weights[0]")
  • animation.fromValue = 0.0;
  • animation.toValue = 1.0;
  • animation.autoreverses = true;
  • animation.repeatCount = Float.infinity;
  • animation.duration = 5;

Objective C

  • CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"morpher.weights[0]"];
  • animation.fromValue = @0.0;
  • animation.toValue = @1.0;
  • animation.autoreverses = YES;
  • animation.repeatCount = INFINITY;
  • animation.duration = 5;
  • [node addAnimation:animation forKey:nil];

morpher и его целевые конфигурации могут быть загружены из файла сцены или созданы программно. Основная геометрия и все целевые конфигурации должны быть топологически идентичными — т.е. они должны содержать то же число и структурное расположение вершин.

  • targets Свойство

    Массив целевых конфигураций для превращений между.

    Объявление

    Swift

    var targets: [AnyObject]?

    Objective C

    @property(nonatomic, copy) NSArray *targets

    Обсуждение

    Массив SCNGeometry объекты.

    morpher смешивается между основной геометрией, указанной в geometry свойство узла morpher присоединено, и один или несколько целевые конфигурации. Основная геометрия и все целевые конфигурации должны быть топологически идентичными — т.е. они должны содержать то же число и структурное расположение вершин.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

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

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

    Объявление

    Swift

    func weightForTargetAtIndex(_ targetIndex: Int) -> CGFloat

    Objective C

    - (CGFloat)weightForTargetAtIndex:(NSUInteger)targetIndex

    Параметры

    targetIndex

    Индекс геометрии в morpher’s targets массив.

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

    Число, указывающее вклад целевой геометрии на смешанную поверхность, обычно между 0.0 и 1.0.

    Обсуждение

    Конфигурации Target и их веса определяют текущую форму поверхности, произведенной morpher. Например, если morpher имеет одну цель, вес которой 0.5, форма получающейся поверхности будет промежуточной между теми из основной геометрии и целевой геометрии.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

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

  • Указывает значение веса в указанном целевом индексе.

    Объявление

    Swift

    func setWeight(_ weight: CGFloat, forTargetAtIndex targetIndex: Int)

    Objective C

    - (void)setWeight:(CGFloat)weight forTargetAtIndex:(NSUInteger)targetIndex

    Параметры

    weight

    Число, указывающее вклад целевой геометрии на смешанную поверхность, обычно между 0.0 и 1.0.

    targetIndex

    Индекс геометрии в morpher’s targets массив.

    Обсуждение

    Конфигурации Target и их веса определяют текущую форму поверхности, произведенной morpher. Например, если morpher имеет одну цель, вес которой 0.5, форма получающейся поверхности будет промежуточной между теми из основной геометрии и целевой геометрии.

    Можно также анимировать веса неявно или явно использование keypath weights[index], где index соответствует targetIndex параметр этого метода.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

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

  • calculationMode Свойство

    Интерполяционная формула для смешивания между целевыми конфигурациями.

    Объявление

    Swift

    var calculationMode: SCNMorpherCalculationMode

    Objective C

    @property(nonatomic) SCNMorpherCalculationMode calculationMode

    Обсуждение

    Значение по умолчанию этого свойства SCNMorpherCalculationModeNormalized. Посмотрите SCNMorpherCalculationMode для позволенных значений.

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

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

  • Интерполяционные формулы для смешивания между целевыми конфигурациями.

    Объявление

    Swift

    enum SCNMorpherCalculationMode : Int { case Normalized case Additive }

    Objective C

    typedef enum : NSInteger { SCNMorpherCalculationModeNormalized, SCNMorpherCalculationModeAdditive } SCNMorpherCalculationMode

    Константы

    • Normalized

      SCNMorpherCalculationModeNormalized

      Веса Target должны быть в диапазоне между 0.0 и 1.0, и вклад основной геометрии на превращенную поверхность связан с суммой целевых весов. Это - режим по умолчанию.

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

    • Additive

      SCNMorpherCalculationModeAdditive

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

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

    Обсуждение

    morpher вычисляет свою текущую поверхность путем подведения итогов взвешенных элементов геометрии от основной геометрии и всех целевых конфигураций. Позиция вершины на поверхности производится путем добавления радиус-вектора точки на основной геометрии к радиус-векторам соответствующих точек на всех целевых конфигурациях. morpher’s calculationMode свойство выбирает формулу, используемую для вычисления этой суммы.

    Если режим SCNMorpherCalculationModeNormalized, позиция от основной геометрии взвешивается одной минус сумма всех целевых весов, как в следующей формуле:

    • Position = (1 - weight0 - weight1 - ...) * Base + weight0 * Target0 + weight1 * Target1 + ...

    Если режим SCNMorpherCalculationModeAdditive, позиция от основной геометрии не взвешивается, и SceneKit использует следующую формулу вместо этого:

    • Position = Base + weight0 * Target0 + weight1 * Target1 + ...

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

    Objective C

    @import SceneKit;

    Swift

    import SceneKit

    Доступность

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