после создания очень простой анимации с использованием libGDX у меня есть некоторые вопросы, которые я хотел бы уточнить, чтобы убедиться, что я все понимаю, прежде чем начинать с любой другой разработки с большей сложностью.Сомнения о значениях libgdx для 3D-анимации
У меня есть ящик, созданный, как это:
public void createBaseCube(Model modelCube) {
ModelBuilder modelBuilder = new ModelBuilder();
modelCube = modelBuilder.createBox(1f, 1f, 1f,
new Material(ColorAttribute.createDiffuse(Color.GREEN)),
VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
this.cubeInstance.transform.translate(0.5f, 0.5f, 0.5f);
}
Как центрируется в положении (0,0,0) и хотите его углу, чтобы выделить в (0, 0, 0) Я применил перевод в последней строке.
Вот как это выглядит (я добавил набор плитки, чтобы иметь некоторые ссылки):
Затем я создаю анимацию. Я хочу, чтобы опрокинуть окно, поэтому он будет расположен над белой плиткой, и вращающимся над ее нижним правым краем
public class CubeAnimation {
...
<<definition of attributes>>
...
public CubeAnimation (ModelInstance cubeModel, float fromAngle, float toAngle, float speed, float alpha){
this.cubeInstance = cubeModel;
this.fromAngle = fromAngle; //value set to 0
this.toAngle = toAngle; //value set to 90f
this.speed = speed; //value set to 1f
this.alpha = alpha; //value set to 0
}
public void update(float delta) {
alpha += delta * speed;
if (alpha >= 1f) {
finished =true;
return;
}
float angle = alpha * (toAngle - fromAngle);
fromAngle = angle;
Vector3 t = new Vector3(0.5f, -0.5f, 0);
cubeInstance.transform.idt().translate(t).rotate(Vector3.Z, -angle).translate(t.scl(-1));
}
Все вроде бы хорошо, и коды достаточно просты, но (и здесь являются проблемы) при применении анимации окно снова переводится в центр (поэтому первый перевод, когда был создан флажок, был отменен), и -surprise- хотя я передаю 90f как параметр анимации, куб поворачивается только на 45 градусов (когда Я установил 180, он повернулся так, как ожидалось: 90).
Вот как это выглядит после анимации:
Что здесь не так? Заранее спасибо за вашу помощь!
Попробуйте удалить строку 'fromAngle = angle;' У меня есть подозрение, что для этого нужно правильно менять только «альфа». – flakes
Thumbs up !! Это решило вопрос о настройке 90f, но только вращение 45f! Благодаря!! : D –
Он все еще ожидает, что один о переводе, который отменен ...: _ ( –