SceneKit получает позицию узла после поворота

Например, у меня есть два SCNNode с геометрией SCNBox, расположенные один за другим, увеличивая свойство позиции x:

SCNBox(width: 0, height: 0, length: 0.02, chamferRadius: 0)

Затем я хочу повернуть первый, используя свойство rotation с SCNVector4, но когда происходит поворот, я хочу, чтобы мой второй узел следовал за первым и изменял его положение в соответствии с поворотом первого.

Я нашел это в Интернете и попытался распечатать узлы position, worldPosition и presentation.position, но все они имеют одно и то же значение.

Может ли кто-нибудь помочь мне узнать, как я могу получить положение узла после вращения?


person mkz    schedule 22.05.2018    source источник
comment
Вы хотите, чтобы второй узел вращался вокруг первого? Как на орбите?   -  person SWAT    schedule 22.05.2018
comment
@SWAT да, как если бы они были только одним узлом   -  person mkz    schedule 22.05.2018
comment
Вы сделали второй узел дочерним по отношению к первому?   -  person SWAT    schedule 22.05.2018
comment
Если у вас одинаковые значения для position и worldPosition, то ваши узлы должны быть дочерними узлами rootNode. Сделайте второй узел дочерним по отношению к первому. Ваш второй узел должен затем вращаться вокруг первого узла, когда вы поворачиваете первый узел.   -  person SWAT    schedule 22.05.2018
comment
@SWAT большое спасибо, я действительно решил эту проблему, следуя вашему совету. Я добавил второй узел в качестве подпредставления к первому, а затем изменил его положение SCNVector3Zero на x смещение.   -  person mkz    schedule 30.05.2018


Ответы (1)


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

введите описание изображения здесь

http://lepetit-prince.net/ios/?p=3540

Другой пример:

введите описание изображения здесь

http://appleengine.hatenablog.com/entry/2017/08/17/154852

person Oskar    schedule 22.05.2018