我试图使用平移和旋转来制作旋转立方体。我正在使用 Google 示例中提供的名为 Rotate3dAnimation.java 的类。旋转效果很好,我正在努力在立方体上制作深度错觉,同时旋转使其离屏幕越来越近。
为此,我正在修改方法applyTransformation(float interpolatedTime, Transformation t)
,但问题是,立方体的面(旋转时隐藏的面)必须在前半部分进一步移动,在后半部分再次靠近。
恢复:
Camera.translate(float x, float y, float z)
z 平移应该在前半部分减少并在后半部分增加。
这是我正在使用的代码:
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
final float fromDegrees = mFromDegrees;
float degrees = fromDegrees + ((mToDegrees - fromDegrees) * interpolatedTime);
final float centerX = mCenterX;
final float centerY = mCenterY;
final String orientation = mOrientation;
final Camera camera = mCamera;
final Matrix matrix = t.getMatrix();
camera.save();
float midTime = getDuration()/2;
if (mReverse) {
camera.translate(0.0f, 0.0f, (interpolatedTime<midTime)?
(mDepthZ * interpolatedTime): (mDepthZ * (1.0f - interpolatedTime)));
} else {
camera.translate(0.0f, 0.0f, (interpolatedTime<midTime)?
(mDepthZ * (1.0f - interpolatedTime)): (mDepthZ * interpolatedTime));
}
if(orientation.equals("horizontal"))
camera.rotateY(degrees);
else
camera.rotateX(degrees);
camera.getMatrix(matrix);
camera.restore();
matrix.preTranslate(-centerX, -centerY);
matrix.postTranslate(centerX, centerY);
}
但我认为这不是很好......有什么建议吗?
谢谢!