Rajawali RotateAnimation3D

Используя основную ветку Rajawali, я могу заставить свою камеру вращаться вокруг оси, используя

mRotateAnimation = new RotateAnimation3D(axis, angle);
mRotateAnimation.setDuration(4000);
mRotateAnimation.setTransformable3D(getCurrentCamera());
mRotateAnimation.setInterpolator(new DecelerateInterpolator(5f));
registerAnimation(mRotateAnimation);
mRotateAnimation.play();

при условии, что я НЕ установил getCurrentCamera().setLookAt(0,0,0). Если я делаю setLookAt, я вообще не получаю вращения.

Использование версии 0.9 эквивалентно

mRotateAnimation = new RotateAnimation3D(axis, angle);
mRotateAnimation.setDuration(4000);
mRotateAnimation.setTransformable3D(getCamera());
mRotateAnimation.setInterpolator(new DecelerateInterpolator(5f));
mRotateAnimation.start();

но это, похоже, не работает независимо от setLookAt(). У меня вообще нет вращения. Если я изменю getCamera() на другой объект, вращение будет работать так, как я и ожидал.

Что мне не хватает с этим? Любая помощь очень ценится.

Спасибо.


person jFort    schedule 19.02.2014    source источник


Ответы (1)


Я использовал RotateAnimation3D для поворота моего объекта в моем классе с приведенным ниже кодом в новой версии rajawali:

mAnim = new RotateAnimation3D(Axis.Y, 360);
mAnim.setDuration(16000);
mAnim.setRepeatMode(RepeatMode.INFINITE);
getCurrentScene().registerAnimation(mAnim);
mAnim.setTransformable3D(mObject);
mAnim.play();

и это работает для меня! Я думаю, вы должны изменить mObject, чтобы получить currentCamera() для желаемого результата.

person Shima    schedule 12.04.2014