问题标签 [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 回答
889 浏览

iphone - CMAttitude 和 CATransform3D 是否与旋转矩阵相关?

我正在查看核心运动类CMAttitude,它可以将设备的方向表示为 3x3 旋转矩阵。同时,我查看了CATransform3D,它封装了视图的态度以及缩放。是CATransform3D一个 4x4 矩阵。

我已经看到 OpenGL 旋转矩阵是 4x4 并且只是在第 4 行和第 4 列中填充了 0001。

如果 CMAttitude 的旋转矩阵与 CATransform 的矩阵有关,我在徘徊?

我可以使用通过旋转矩阵获得的设备在空间中的旋转来转换 UIViewCATransform3D吗?我的意图是让用户移动手机并将相同的转换应用于屏幕上的 UIView。

额外的问题:如果它们是相关的,我如何将 CMAttitude 的旋转矩阵转换为 CATransform3D?

0 投票
1 回答
3695 浏览

ios - 在 iOS 上,为什么设置图层的 sublayerTransform 会变成像 CATranformLayer 一样的行为?

众所周知,zPosition层数只决定了哪一层覆盖哪一层。无论是zPosition10 还是 1000 都不会影响其位置。

也就是说,除非我们使用CATransformLayer包含那些图层,否则zPosition这些图层的 将影响图层的位置。

但是,在 iOS 5.1.1 中运行的以下代码确实会zPosition改变图层的位置...您可以在新的 Single View App 中尝试,并将以下代码添加到ViewController.m. 如果 的zPositionlayer2变为88188我们可以看到图层相应地移动。所以CATransformLayer代码中没有;为什么会这样?(请引用 Apple 文档或任何参考资料)。

同样相关的是,如果将线self.view.layer.sublayerTransform = transform3D;更改为,self.view.layer.transform = transform3D;zPosition将不会影响位置。但根据 Apple 文档,transformsublayerTransform在 self 是否被转换方面有所不同

两个层属性指定变换矩阵:transformsublayerTransform。由 指定的矩阵transform property应用于层及其相对于层的子层 anchorPoint。[...]该 sublayerTransform属性指定的矩阵仅应用于图层的子图层,而不是图层本身。

所以奇怪的是,为什么改变它会导致表现self.view.layer得像CATransformLayer.

0 投票
1 回答
2407 浏览

iphone - CATransform3DTranslate 之后的 CATransform3DRotate

我正在尝试制作一个折叠式 facebook 菜单,就像您在这里看到的那样:http ://www.mobileinc.co.uk/2012/05/folding-iphone-sidebar-menu/

目前,我正在研究“折叠”部分。我有 2 层: - 左层在 {1,.5} 有一个锚点 - 右层在 {0,.5} 有一个锚点

我可以让它们在我的主视图中间折叠而不会出现这样的问题:CGFloat width = self.view.frame.size.width; CGFloat destinationWidth = slider.value * width;

这完美地工作。当我尝试像这样在 x 轴上平移我的图层时,问题就来了: CATransform3DTranslate(transform,-marginLeft,0,-opposite)

图层仍然以良好的 z 平移折叠,但它以一个尴尬的角度结束,就好像整个视图已经旋转了一样。

这显然与视角有关(当我不设置 m34 时,它“有效”)但我不知道如何补偿它......

先感谢您!

干杯,

TeuBeu2

0 投票
1 回答
267 浏览

iphone - 应用始终相对于屏幕的透视

我想问一个关于通过CATransform3D. 我知道如果你有一个 320x480 的视图,然后应用这个:

您创建了一个透视图,使观察者看起来像是直视屏幕中心,因此相同的转换看起来会有所不同,具体取决于正在转换的子视图在屏幕上的位置。例如,当视图位于屏幕中间时,倾斜视图如下所示:

如果它在左下角,它看起来像这样:

现在,我的问题是,仅当我正在转换的视图是另一个 320x480px 大视图的子视图时,才能使相对于屏幕的透视图起作用。但是,如果我要转换的视图是只有 100x100px 的视图的子视图怎么办?如果超级视图不是屏幕大小,有没有办法使透视相对于整个屏幕?提前致谢

0 投票
0 回答
144 浏览

ios - iOS:如何创建 3D 倾斜视图

可能重复:
如何将透视变换应用于 UIView?

嗨,我正在尝试UIView像这样倾斜:在此处输入图像描述

我想使用CATransform3DRotate其他核心功能来做到这一点。可能吗?

到目前为止我所做的:我有一个方法可以创建一个名为 LowerTable 的橙色视图。

setAnchorPoint 方法如下:

设置锚点和视图后,我将在点击按钮时调用以下方法以应用变换:

它所做的是简单地降低 的高度UIView,这很明显,通过角度变换,视图需要被塑造成我给定的图片。但是我做不到,我尝试了很多方法。请帮助我提供一些示例和清晰的解释。

提前致谢。

0 投票
1 回答
6208 浏览

iphone - CATransform3DRotate 旋转 360 度

我最近开始使用 CATransform3D,它看起来很不错。不过,我对轮换只有 1 个问题。我正在尝试将我的视图向右旋转 360˚,但如果我只是将 360 度传递给 CATransform3DRotate 它不起作用(它根本不会移动。)

这是我的代码:

有谁知道如何解决这个问题?提前致谢!:)

0 投票
1 回答
2072 浏览

objective-c - CATransform3D 动画的 CAKeyframeAnimation 上的平滑动画

我在视图之间创建了自己的过渡动画。我为两个属性(位置和变换)设置动画,以在视图之间提供类似立方体的过渡。框架使用CABasicAnimation,而变换使用“2-stage” CAKeyframeAnimation。一切都很好,除了一个我似乎无法弄清楚的小细节。在我的过渡中,我CATransform3DScale在中间关键帧上应用 a 来创建放大/缩小效果。效果很好,只是动画看起来有点生涩。它以线性方式对关键帧之间的动画进行动画处理,我想对其进行平滑处理。现在CAKeyframeAnimation有一种方法可以使用calculationMode,但它似乎不适用于转换。我已经尝试将其设置为但kCAAnimationCubic没有kCAAnimationCubicPaced任何效果。

这是动画一个视图的变换的代码(类似的代码块动画另一个视图):

注意:RotateOnX(UIView *, CGFloat)是一个块,它为在 X 上按所需弧度旋转的视图返回变换。

如您所见,我只在中间关键帧上设置了缩放变换。此外,视图的旋转非常平滑,只有缩放在改变方向时才会出现“混蛋”。

有人对如何平滑缩放/缩放有任何想法吗?

0 投票
2 回答
446 浏览

iphone - 旋转图层的图形上下文忽略任何变换

我正在由几个图层组成一个视图,其中一些是旋转的。这些图层的显示效果很好,但是当我尝试制作图像时,所有的旋转/变换都被忽略了。

例如,如果我有一个包含指向左侧的箭头图像的 CALayer,则在围绕 z 轴旋转(使用 CATransform3DMakeRotation)后,它指向顶部,并且图层正确显示。但是,如果我得到该层的图像(使用 renderInContext),箭头仍然指向左侧,忽略任何转换。

任何人都知道为什么,我该怎么做才能得到我想要的结果?:-)

示例代码:

0 投票
3 回答
2733 浏览

xcode - 如何计算矩形到四边形的 3D 变换矩阵

希望有人可以提供帮助,我正在尝试研究如何将图像从矩形转换为四边形,每个角都有给定的 x,y 屏幕坐标。

到目前为止,我已将图像放在 CALayer 上,但需要计算出 CATransform3D 以将矩形扭曲为所需的四边形。下面是我想要实现的一个示例(从 a 到 b)。

矩形到四边形图像的示例

如果我错了并且不能使用 CATransform3D 来完成,是否有任何其他方式可以通过示例来实现。

我认为 KennyTM 的答案与我在这里所需要的很接近。

iPhone 图像拉伸(倾斜)

我已经尝试过了,但运气不佳,他确实提到“您可能需要转置”,但如果是这种情况,我不知道该怎么做。

0 投票
1 回答
173 浏览

c# - MonoTouch 缺少成员?

我只是将一个 objc 视频播放器示例转换为 MonoTouch 并来到这一部分:

在 Monotouch 中,我可以进行“缩放”或“旋转”变换:

但即使在对象浏览器等效项中搜索后,也看不到透视选项。这是否是我在某处读到的 API 的“策划”的一部分,没有将较少使用的项目带到 MonoTouch ?

我将如何使用此功能?会员以这种方式失踪是否很常见?我认为一个自动化工具会生成绑定,所以我认为所有元素都是可用的,除非冗余或不推荐使用。