问题标签 [catransform3d]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1797 浏览

ios - 我可以做半个m34转换吗

我想做一个完整的旋转,但是图像交换到一半,我似乎无法做到这一点。完整的旋转可以在下面看到。除了漂亮的z轴东西,我怎么能做到一半呢?这是在 animateWithDuration 块(iOS4)

0 投票
1 回答
1327 浏览

ipad - 子层上的 CAlayer 变换随着手势闪烁(ipad)

我有一个包含很少其他子层的 CALayer(实际上是 CATextLayer)

当用户在 ipad 上做通常的手势时,我想在该层上应用一些转换,但它似乎不能正常工作。使用 CALayer 的目的是仅将转换应用于该层,以便我的所有子文本层将同时受到相同转换的影响。

正在发生的事情是转换似乎在先前位置和当前位置之间闪烁。我真的不明白可能是什么问题......例如,当我做一个 2 根手指平移手势时,CaTextLayer 位置在我的手势过程中一直闪烁,最后它们都正确放置在新的翻译位置。

所以一切似乎都很好,除了那个让我很困扰的闪烁的东西。

我需要设置一些我不知道的属性吗?我在想它可能也与边界和框架有关......

这是我创建 CATextLayer 的方法(仅在创建时完成一次,并且可以正常工作):

这就是我将它们添加到我的 Super CALayer 的方式

以下是我如何应用我的转换:

_layerMgr.transform = CATransform3DMakeAffineTransform(_transform);

0 投票
1 回答
4333 浏览

iphone - 两个 UIViewController 之间的 3D 开门动画

之前有人问过这个问题,但据我所知,在 stackoverflow 上找不到示例代码,也没有合适的解决方案。我有一个解决方案,但它看起来很糟糕。我将不胜感激任何输入和修​​改,以获得更逼真的 3D 开门/书籍封面动画。

目的是在 UIViewControllers 之间有一个动画,这样你就可以得到效果,就好像你在打开一扇门或一本书的封面一样。ViewController 2 是静态的并且在后台。在它上面放置 ViewController 1,它覆盖 ViewController 2。动画将打开 ViewController 1(就像一本精装书)并显示 ViewController 2(可以说是你的第一页,或者门后面的任何东西)。

首先要注意的是,您不能使用 UINavigationController 执行此操作,因为很难覆盖自定义动画。关于如何设置我们的两个 ViewController 的正确教程可以在这里找到:ViewController Animations

所以一旦一切都设置好了,这是我的自定义动画,看起来很糟糕。它基本上看起来好像你在向左挤压书的门/封面。恐怕没有3D的感觉。欢迎任何有关如何使其更好的建议:

我认为主要问题是我真的不知道如何处理CATransform3DTranslateCATransform3DRotate.

这里有一些关于此的帖子,但我真的不知道如何将它们应用于 3D 开门器:

3D 门 - 但轴在中间

3D展开

0 投票
1 回答
342 浏览

ios - CATransform3D 总是成为最顶层的视图

我正在使用 CATransform3D 转换一个 UIView 的图层。问题是我无法在其上方显示其他控件(不是此转换视图的子视图)。

例如这段代码:

不起作用-flippedCloseButton 总是在flippedImageView 后面。

flipTransitionFromView是一种仅进行所述3d变换的方法。

任何如何解决它的想法都非常感谢!

编辑:

我通过修改视图层的 zPosition 自己解决了这个问题:

但这是正确的方法吗?

安德里斯

0 投票
1 回答
5984 浏览

opencv - 如何将 4x4 矩阵转换为 3x3 矩阵?

我正在 iOS 上编写 AR 应用程序,并在 UIView 上使用 CATransform3D 转换。

通过OpenCV,我可以通过调用cvGetPerspectiveTransform()得到一个透视矩阵。这将返回一个 3x3 矩阵。

我不记得在哪里找到它了,但我有执行以下操作的示例代码:

然而,应用这种形式会使我的观点变得疯狂并到处乱跳。通过一些试验,我发现只有这三个映射有点工作:

我一直在阅读 3d 图形和变换数学,但这是一项艰巨的任务。

从 3x3 矩阵到 4x4 矩阵的正确映射是什么?

谢谢!

0 投票
1 回答
3309 浏览

iphone - 将逆 CATransform3D 应用于已转换的 CALayer 的子层

我正在使用 CATransform3D 转换将伪 3D 透视效果应用于视图。

我正在使用 iPhone 4 中的陀螺仪来控制变换的参数。

我正在转换的视图有一些子视图:

带有子视图的视图

结果是这样的:

3D 变换在行动

我的下一个任务是防止子视图在主视图被转换时被转换,或者应用逆变换以使子视图不受影响。

我的目标是让每个子视图垂直于父视图,给人一种它们是“站立”的印象。

我用于转换的代码:

我尝试了以下代码,试图通过围绕 Y 轴对子视图应用 90 度透视旋转来反转变换:

但是所有这一切都成功地使子视图消失了。如果我尝试使用图层中的现有变换[sublayer transform]并对其应用 3d 旋转,则子视图会闪烁,但不会旋转。

我对矩阵数学的了解不是很好,所以我不知道这是否是正确的方法。

如何使子视图垂直于超级视图?

0 投票
3 回答
2402 浏览

ios - 旋转时,layer.border 上的线条不平滑

我需要旋转 UIImageView:

问题是边界根本不平滑:

模拟器的屏幕截图

0 投票
1 回答
720 浏览

ipad - 使用 CATransform3DMakeRotation 左右旋转 UIView

在我的应用程序中,我使用 CATransform3DMakeRotation 来旋转 UIView,在其上移动手指,试着想象一个旋钮。我的问题是一切运行良好,移动随心所欲,但是当我触摸它时,它开始旋转,它在中心旋转了 180 度,我不明白为什么。

我给你看我的代码:

编辑:这里我如何解决问题

问题出在我在视图中触摸的地方。

现在我需要了解如何锁定两个角度之间的旋转。我不需要 360° 旋转。

0 投票
1 回答
1449 浏览

iphone - CATransform3DRotate 方法中的角度是什么?

我正在开发一个应用程序,显示我的航向和我想去的位置的方位。我想显示一个箭头方向,指向用户应该有他的方向来丰富期望的位置。没有什么可担心的。我想做的是我有学位.. 0-360。

当我以波纹管方法将这些度数传递到角度时,这反应很奇怪。图像不止一次得到totate。我试图从度数中获取弧度,然后尝试但没有成功。

我想要的只是我的浮点值范围在 0-360 之间,并且我只想将图像旋转 369 度。

我也通过了弧度。为了将度数转换为弧度,我使用了:

但这也有同样的问题。我想要的只是图像显示工作,就像所有 360 度的指南针一样。

如何获得此方法的角度:

先感谢您

0 投票
1 回答
1156 浏览

ios - 玩转 UIView 动画和 UIView 翻转

(我为长篇道歉)为了让我的 AQGridView 更加活跃,附加的代码将选定的单元格复制到 UIView 中,然后动画该视图以扩展以填充屏幕,然后将视图转换为看起来像全屏封面动画。随意重用,但这不是我的问题。我的问题是风景的动画,它一定是不同的。我希望将我的单元格视图动画到屏幕的右半部分并展开以填充屏幕的右半部分(已经完成),然后让它在屏幕上翻转旋转到左侧。CGPointMake(0.5, 0.5) 处的锚点;不起作用,也不会将平移 x 值设置为屏幕的一半并再次返回,它只是执行,然后飞出屏幕!帮助!!

编辑:(由于我没有意识到我一直在将新UIView'sself.navigationController.view属性添加到属性中,代码现在可以正常工作,所以只需要渲染并翻转它,不需要翻译!)工作代码: