3D立方体使用画布。 需要一点点的改进(3d cube using canvas. Need a

2019-07-31 07:07发布

我用下面的代码使这个3D立方体

Matrix mMatrix = canvas.getMatrix();

canvas.save();
camera.save();
camera.rotateY(-angle);
camera.getMatrix(mMatrix);
mMatrix.preTranslate(-width, 0);
mMatrix.postTranslate(width, 0);
canvas.concat(mMatrix);
canvas.drawBitmap(bmp1, 0, 0, null);
camera.restore();
canvas.restore();

camera.rotateY(90 - angle);
camera.getMatrix(mMatrix);
mMatrix.preTranslate(-width, 0);
mMatrix.postTranslate(width2, 0);
canvas.concat(mMatrix);
canvas.drawBitmap(bmp2, width, 0, null);

这是它给

但我需要的是

这是因为,当摄像机旋转图像,图像的某些部分被隐藏。 像这样

但我认为这是可以做到。

Answer 1:

这是很容易实际。 图像必须被翻译的一半它是沿着它被旋转轴宽度/高度。

所以下面的变化做了

mMatrix.preTranslate(-width, -height / 2);
mMatrix.postTranslate(width, height / 2);


文章来源: 3d cube using canvas. Need a little improvement