Swift / IOS: SCNNode, по-видимому, возвращается в исходное положение после завершения SCNAction, но его фактическое положение было изменено SCNAction - PullRequest
0 голосов
/ 04 марта 2019

Я очень новичок в разработке Swift и IOS, поэтому это может быть простой вопрос, но я изо всех сил пытаюсь найти ответ в Интернете.

Я пытался анимировать статическую модель DAE, запустив SCNActionна одном из его узлов.Однако после того, как SCNAction будет завершено (и узел будет перемещен), положение узла, по-видимому, немедленно вернется в исходное положение (то же положение, когда была загружена статическая модель DAE).Но когда я печатал положение узла, я заметил, что положение узла фактически изменилось из-за SCNAction.И когда я снова запустил SCNAction на том же узле, узел вернется к конечной позиции, полученной в результате последнего SCNAction, и начнет оттуда SCNAction.Интересно, почему существует такое несоответствие между фактическим положением узла и положением, появившимся в сцене.

Еще одна интересная вещь заключалась в том, что когда я помещал SCNActions в последовательность ([action1, action2]), узел не возвращался в исходное положение между действиями.Но если между ними был добавлен SCNAction.wait ([action1, SCNAction.wait, action2]), узел вернется в исходное положение во время ожидания и снова запустит action2 из конечной позиции action1.

Я пытаюсь сохранить позиции всех узлов в конце SCNActions.Можно ли как-нибудь помешать ему вернуться в исходное положение?

Не уверен, что вопрос достаточно ясен.Любые мысли и идеи приветствуются.

1 Ответ

0 голосов
/ 04 марта 2019

Вы убедились, что узел не поставляется с анимацией из файла Collada?Анимации и действия оцениваются одна за другой.Действия могут переопределять эффект анимации, пока они не будут выполнены (или приостановлены).

В отличие от действий, анимации записываются не в дерево модели (node.position), а только в дерево представления (node.presentationNode.position).

...