Как изменить порядок вращения в cocos3d - PullRequest
0 голосов
/ 05 января 2012

Я новичок в cocos3d, теперь у меня проблема.

В cocos3d я хочу повернуть узел. Я получил углы по осям X, Y и Z, затем я использовал свойство: вращение для вращения, вот так:

theNodeToBeRotated.rotation = cc3v(x,y,z);

Но я обнаружил, что он не вращался, как я ожидал, потому что в документе сказано, что порядок поворота - y-x-z.

Я хочу изменить порядок на x-y-z. Кто-нибудь может дать мне знать, как?

1 Ответ

1 голос
/ 05 января 2012

Возможно, вам понадобится уточнить, что касается следующего: "он не вращался так, как я ожидал"

OpenGL ES (и, следовательно, cocos3D) использует ось Y как верхтаким образом, порядок вращения по-прежнему XYZ.Если вы импортируете модель, вам необходимо учесть систему координат 3D-редактора и соответствующим образом адаптировать ее.

Если вы не привыкли работать с трехмерными представлениями, переход от 2D к 3Dможет быть значительным препятствием.В Cocos3D:

  • ось x положительна справа и отрицательна слева
  • ось y положительна вверх и отрицательна вниз
  • zось положительна движется к вам, а отрицательная движется от вас

Предусмотрите эти три линии оси или, что еще лучше, кусок струны.

Если вы вращаетесь вокругОсь X, удерживайте строку горизонтально слева направо: объект будет вращаться к вам или от вас.

Если вы вращаетесь вокруг оси Y, удерживайте строку вертикально от ступней к голове:объект будет вращаться, как будто вращающаяся дверь.

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

- Обновление

Я бы настоятельно не рекомендовал изменять порядок вращения, поскольку использование YXZ является стандартом OpenGL.Если вы хотите изменить его, взгляните на CC3GLMatrixMath и найдите kmMat4RotationYXZ - также есть kmMat4RotationZYX .Если вы хотите иметь XYZ, вам нужно создать свою собственную матрицу вращения и соответственно обновить ее в CC3GLMatrix и CC3GLMatrixMath.

Для справки, у вас также есть OpenGL Красная книга - она ​​должнаесть несколько предложений для вас.

...