首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应用于三维对象的iPhone旋转

应用于三维对象的iPhone旋转
EN

Stack Overflow用户
提问于 2017-06-17 12:28:35
回答 1查看 436关注 0票数 2

从CMAttitude获得的四元数似乎是有缺陷的。在“团结”中,我可以获得iPhone的旋转,将其应用到一个3d对象中,当您旋转iPhone时,该对象将旋转。在Xcode中,这似乎是不同的。

要建立一个快速测试项目,请执行以下步骤:

  1. 在Xcode中,从iOS > Game 创建一个新项目(这为我们提供了一个可以测试的3d对象)。
  2. GameViewController.h中添加#import <CoreMotion/CoreMotion.h>@property (strong, nonatomic) CMMotionManager *motionManager;
  3. GameViewController.m中,删除线上的动画:46 [ship runAction: etc..,不允许摄像机在线上控制:55(不需要)
  4. GameViewController.m中添加到ViewDidLoad的底部 startDeviceMotionUpdatesToQueue:NSOperationQueue self.motionManager = [CMMotionManager alloc init];self.motionManager.deviceMotionUpdateInterval = .1;[self.motionManager currentQueue withHandler:^(CMDeviceMotion *init,NSError *error) { CMQuaternion Q= motion.attitude.quaternion;ship.rotation = SCNVector4Make(q.x,q.y,q.z,q.w);if(error){ NSLog(@“%”,错误);}};
  5. 为了避免烦恼,在Project >Target> Project > Deployment >设备定向中,只允许配置(或者仅仅锁定iPhone的旋转)

当我把它建到我的iPhone上时,3d物体(飞机)不会跟随手机的旋转。投球类的作品。

这是故意的吗?我怎么用错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-18 11:03:39

在三维空间中,旋转有不同的表示形式。您使用的是rotation属性SCNNode

四分量旋转矢量在前三个分量中指定旋转轴的方向,第四个分量指定旋转角度(以弧度表示)。

但是,您将设备旋转指定为四元数

要么将四元数分配给SCNNodeSCNNode属性,要么使用CMAttitude的偏航、俯仰和滚角,然后将它们分配给SCNNodeeulerAngles属性。

节点的方向,表示为俯仰,偏航和滚角,每一个弧度。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44604662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档