应用 3d 动画来查看

Posted

技术标签:

【中文标题】应用 3d 动画来查看【英文标题】:apply 3d animation to view 【发布时间】:2012-10-23 09:43:48 【问题描述】:

我在动画方面苦苦挣扎,找不到任何我想要的东西。我想对视图应用 3d 旋转。就像立方体旋转一样,视图应该有两个图像,并且像 iphone 通知动画一样从一个旋转到另一个。我想要的动画是这样的:http://www.youtube.com/watch?v=pBgVbzBJqDc

我什至没有一种方法可以做到这一点,所以任何帮助都将不胜感激!

提前致谢!

【问题讨论】:

【参考方案1】:

您可以通过在视图层上设置带有变换的 CATransform3D 来将 3D 动画应用到视图。没有任何透视,旋转看起来很平坦,因此您应该为变换矩阵的第三行和第四列设置适当的值。

ObjC:

CATransform3D rotation = CATransform3DIdentity;
rotation.m34 = -1.0/500.0;
rotation = CATransform3DRotate(rotation, M_PI, 1.0, 0.0, 0.0);
myView.layer.transform = rotation;

斯威夫特:

var rotation = CATransform3DMakeRotation(CGFloat(M_PI), 1.0, 0.0, 0.0);
rotation.m34 = CGFloat(-1.0/500.0)
firstView.layer.transform = rotation;

您可以为这两个视图提供合适的角度值,并将它们定位在它们应该在屏幕上的位置。

为了使它看起来像一个立方体旋转,您还可以在旋转变换矩阵之前将层平移到立方体侧面宽度的一半(这样它就不会围绕中心旋转)。

rotation = CATransform3DTranslate(rotation, 0.0, 0.0, sideOfCube/2.0);

【讨论】:

这很好!你知道如何改变旋转的方向吗? 要么动画成负角度,要么通过将最后一个参数从 1.0 更改为 -1.0 将动画轴从 z 更改为 -z 我试过这样,但这并没有改变任何东西。难道我做错了什么? CATransform3D rotation = CATransform3DIdentity; rotation.m34 = -1.0/500.0; rotation = CATransform3DRotate(rotation, M_PI, 0.0, -1.0, 0.0); _d3RightView.layer.transform = rotation; 该代码没有任何问题,但 π 的旋转对于两个方向(中途)是相同的。试试 3/4π 之类的东西,即3.0*M_PI_4 感谢所有帮助,这回答了我的问题。祝你好运!

以上是关于应用 3d 动画来查看的主要内容,如果未能解决你的问题,请参考以下文章

svg中不可以使用css 3d动画吗

初步了解3d关节动画的概念

使用 Plotly 绘制动画 3D 曲面图

如何使用CSS3来创建一个3D的动画效果?

在 android 应用程序上为 3d 角色设置动画

Unity3d 动画专题