gpt4 book ai didi

ios - CALayer压力变形效果

转载 作者:行者123 更新时间:2023-11-29 10:41:46 25 4
gpt4 key购买 nike

我正在尝试在 CALayer 上创建一种效果,这样当用户触摸并按住给定点时,整个图层会变形,从而产生该点被“向下”推的错觉( View 是二维的)。数学对我来说似乎相对简单:CALayer 上的每个点都将向压力点进行平移,与其到该点的距离成反比(在这个阶段,我忽略了框架对这种变形的影响)。想一想在 2D 平面上显示广义相对论的经典模型,质量导致平面变形到第三空间维度,只能从平面上方观察。

在这一点上,我已经确定我不能用仿射变换来做到这一点,因为原始层中的平行线在变换后的层中将不再如此。

假设这是正确的,有没有办法做到这一点?我并不觉得 CATransform3D 也可以做到这一点,因为简单地改变 3D 空间内的视角似乎也无法实现这种效果。

我对转换矩阵很陌生,所以我可能会遗漏一些基本知识。或者这可能超出了您使用 Core Animation 或 Core Graphics 中的内置选项所能做的(也许它需要 OpenGL?)。

最佳答案

你是对的,仿射变换不会做你想做的事。 OpenGL 可以工作,但您也许可以使用更简单的东西——SpriteKit 提供了一个 SKEffectNode类,它允许您使用 Core Image filter渲染它的 child (应该包括你想要扭曲的图像)。 iOS 上可用的过滤器集因版本而异,并且与 OS X 上可用的过滤器集并不完全重叠,但是 CIPinchDistortion看起来它可能会满足您的需求。

关于ios - CALayer压力变形效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24224271/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com