В SceneKit возможно ли сделать импортированную анимацию, исключая текущую позицию объекта в качестве источника? - PullRequest
0 голосов
/ 17 марта 2020

Мы импортировали анимацию из Blender в SceneKit. Анимация включает в себя очень простое движение на плоскости XY, потому что мы только что тестировали его в данный момент. Мы загрузили его следующим кодом:

    let importedDae = SCNScene(named: "animated.scn")!
    let node = importedDae.rootNode.childNode(
    withName: "Cube", recursively: true)!.clone()
    self.headAnimationPlayer = headNode.animationPlayer(forKey: "Cube_CubeAction_transform")!
    let animation = headAnimationPlayer.animation

Затем мы добавили его к нашему объекту с помощью

    ourObject.addAnimation(self.anime, forKey: "Cube_CubeAction_transform")

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

Мы создали анимацию в Blender вокруг позиции (0,0,0), это логично. Но наш объект - динамический c и может быть где угодно при добавлении анимации.

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

1 Ответ

0 голосов
/ 17 марта 2020

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

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

...