SCNMorpher
SCNMorpher
объект деформирует поверхность геометрии узла, гладко переходящей между основной геометрией и один или несколько целевыми конфигурациями.
Вы управляете этими переходами путем соединения 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 и его целевые конфигурации могут быть загружены из файла сцены или созданы программно. Основная геометрия и все целевые конфигурации должны быть топологически идентичными — т.е. они должны содержать то же число и структурное расположение вершин.
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
NSSecureCoding
-
Печатаемый
-
SCNAnimatable
-
NSObject
-
NSSecureCoding
-
SCNAnimatable
Оператор импорта
Swift
import SceneKit
Objective C
@import SceneKit;
Доступность
Доступный в OS X v10.9 и позже.
-
Массив целевых конфигураций для превращений между.
Обсуждение
Массив
SCNGeometry
объекты.morpher смешивается между основной геометрией, указанной в
geometry
свойство узла morpher присоединено, и один или несколько целевые конфигурации. Основная геометрия и все целевые конфигурации должны быть топологически идентичными — т.е. они должны содержать то же число и структурное расположение вершин.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает значение веса для указанного целевого индекса.
Объявление
Swift
func weightForTargetAtIndex(_
targetIndex
: Int) -> CGFloatObjective 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
Доступность
Доступный в OS X v10.9 и позже.
-
Указывает значение веса в указанном целевом индексе.
Объявление
Swift
func setWeight(_
weight
: CGFloat, forTargetAtIndextargetIndex
: 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
Доступность
Доступный в OS X v10.9 и позже.
-
calculationMode calculationMode
СвойствоИнтерполяционная формула для смешивания между целевыми конфигурациями.
Объявление
Swift
var calculationMode: SCNMorpherCalculationMode
Objective C
@property(nonatomic) SCNMorpherCalculationMode calculationMode
Обсуждение
Значение по умолчанию этого свойства
SCNMorpherCalculationModeNormalized
. ПосмотритеSCNMorpherCalculationMode
для позволенных значений.Оператор импорта
Objective C
@import SceneKit;
Swift
import SceneKit
Доступность
Доступный в OS X v10.9 и позже.
-
Интерполяционные формулы для смешивания между целевыми конфигурациями.
Объявление
Swift
enum SCNMorpherCalculationMode : Int { case Normalized case Additive }
Objective C
typedef enum : NSInteger { SCNMorpherCalculationModeNormalized, SCNMorpherCalculationModeAdditive } SCNMorpherCalculationMode
Константы
-
Normalized
SCNMorpherCalculationModeNormalized
Веса Target должны быть в диапазоне между
0.0
и1.0
, и вклад основной геометрии на превращенную поверхность связан с суммой целевых весов. Это - режим по умолчанию.Доступный в OS X v10.9 и позже.
-
Additive
SCNMorpherCalculationModeAdditive
Веса Target могут взять любое значение, и взвешенные вклады для каждой цели добавляются к основной геометрии,
Доступный в OS X v10.9 и позже.
Обсуждение
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
Доступность
Доступный в OS X v10.9 и позже.
-