gpt4 book ai didi

iphone - 在iPhone上使用CoreMotion/DeviceMotion模拟图像 float 效果

转载 作者:行者123 更新时间:2023-12-03 18:33:04 25 4
gpt4 key购买 nike

我在 ViewController 中有一系列图像。

我通过改变它们各自的层来“ float ”它们:

img.layer.transform = CATransform3DMakeTranslation(0.0f, 0.0f, myZ);

这给出了使图层漂浮在屏幕上方的效果 - 在模拟器中,不会有可见的效果(这是正确的)。

我想做的是产生一种效果,向左/向右/向前/或向后移动设备会使其看起来微妙地像是 float 的。当您向左倾斜设备时,整个 View 应该向右倾斜。这会让你感觉移动设备可以让你看到角落周围——也就是说,它会给人一种图像确实漂浮在屏幕上方的感觉,因为它们会以不同的速率移动(基于它们的 z-index)。

我制作了一个测试项目 ( project file here ),其中有一个演示此项目的示例项目。

我的问题是我不是数学家,所以我正在努力寻找模拟微妙 float 效果的最佳方法。现在,我有一个 DeviceMotion 监听器,它会执行以下操作:

self.view.layer.sublayerTransform = CATransform3DMakeRotation(20.0f * M_PI / 180.0f, 2*motion.attitude.pitch, -2*motion.attitude.roll, 0);

这非常接近我想要的,但并不完全正确。

我认为这种效果可以用于许多不同的应用程序。我希望将其扩展到我和 friend 正在研究的面部检测方面(这样它就会根据人脸的运动来移动 parent 的 View - 即使他们保持手机/设备完全静止)。

我意识到人们会回答“只使用 OpenGL”。这不是我需要的答案 - 除非您发布一段代码来展示如何将其集成到该项目中。 (我不是在寻找新问题来解决。:-)

再说一遍,完整的项目在这里 ( iphone floating views ),供任何想要查看现在效果的人使用。 (当它起作用时,我将把完整的(工作)项目链接到这里供后代使用。)

最佳答案

我想我已经明白了!使用这个:

    [appDelegate.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
withHandler:
^(CMDeviceMotion *motion, NSError *error) {

CATransform3D transform;
transform = CATransform3DMakeRotation(motion.attitude.pitch, 1, 0, 0);
transform = CATransform3DRotate(transform, motion.attitude.roll, 0, 1, 0);

self.view.layer.sublayerTransform = transform;
}];

对我来说就像魅力一样,如果你想翻转轴,只需在这些 1 前面添加减号即可。

关于iphone - 在iPhone上使用CoreMotion/DeviceMotion模拟图像 float 效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5328848/

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