从Projection和ModelView矩阵中获取CATransform3D

时间:2012-06-07 14:24:02

标签: opengl-es core-animation qcar-sdk

How to get CATransform3D from Projection and ModelView matrices

我之前浏览过这个问题,网址;但这并不是绝对精确的;我想知道为什么它不准确;

我发现x轴和y轴的旋转是相反的(我不能发布图像);梯形(当旋转calayer时,它就像一个梯形)是相反的,剂量calayer旋转不是喜欢opengl?但是当你按z轴旋转时它是正确的。

我想获得角度,然后相反地旋转两次;如何通过opengl矩阵获得角度?

我想通过QCAR播放电影;我可以获得opengl矩阵,我想使用UIView来播放电影和其他(熟悉UIView),并使UIview像Texture一样。

1 个答案:

答案 0 :(得分:0)

我刚刚在QCAR论坛上发布了一个示例,您可以查看详细信息here

这个想法很简单。

1.我不使用avassetreader来读取视频像素,而是使用可以播放远程视频文件的AVPlayer和AVPlayerLayer。

2.我需要将opengl模型视图矩阵转换为CATransform3D,以便AVPlayerLayer将附加到可跟踪图像上。感谢stackoverflow上的Hammer,他分享了一个如何实现此目的的示例。

3.我试图同时渲染相机背景使用opengl和AVPlayerLayer,但性能不够好,所以我使用另一个calayer来渲染相机背景。在获取相机框架时,1.5.8中存在一个错误,感谢andersfrank这里解决了问题。

我将代码放在pastebin上:

http://pastebin.com/kmeVZ7jy

仍有一些问题需要解决,但我认为这是一种正确的方法。

PS。对于原始帖子中的问题3,您可以通过设置

进行修复
        cameraLayer.contentsGravity = kCAGravityResizeAspectFill;

这将解决相机图像的宽高比与iphone屏幕不同的问题。

更新

所有问题都解决了,请查看我在vuforia和pastebin上的原帖。