• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - iPhone 旋转应用于 3d 对象

[复制链接]
菜鸟教程小白 发表于 2022-12-13 01:40:17 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

您从 CMAttitude 获得的四元数似乎有缺陷。在 Unity 中,我可以获取 iPhone 的旋转,将其应用于 3d 对象,并且当您旋转 iPhone 时,该对象将旋转。在 Xcode 中似乎有所不同。

要设置快速测试项目,请按以下步骤操作:

  1. 在 Xcode 中,从 iOS > 游戏模板 创建一个新项目(这为我们提供了一个 3d 对象进行测试)。

  2. GameViewController.h 中添加 #import @property (strong, nonatomic) CMMotionManager *motionManager;

  3. GameViewController.m 中删除第 46 行的动画 [ship runAction: etc.. 并且不允许在第 55 行进行相机控制(没必要)

  4. GameViewController.m添加到ViewDidLoad的底部

    self.motionManager = [[CMMotionManager alloc] init];
    self.motionManager.deviceMotionUpdateInterval = .1;
    
    [self.motionManager startDeviceMotionUpdatesToQueue:[NSOperationQueue currentQueue]
         withHandler:^(CMDeviceMotion *motion, NSError *error) {
    
             CMQuaternion q = motion.attitude.quaternion;
             ship.rotation = SCNVector4Make(q.x, q.y, q.z, q.w);
    
             if(error){ NSLog(@"%@", error); }
    } ];
    
  5. 为避免麻烦,在项目 > 目标 > 项目名称> 部署信息 > 设备方向中,仅允许纵向(或仅锁定 iPhone 的旋转)

当我将它构建到我的 iPhone 时,3d 对象(飞机)不会跟随手机的旋转。投球类作品。

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



Best Answer-推荐答案


在 3D 空间中有不同的旋转表示。 您正在使用 SCNNoderotation 属性:

The four-component rotation vector specifies the direction of the rotation axis in the first three components and the angle of rotation (in radians) in the fourth.

但您将设备旋转指定为 quaternion .

将四元数分配给 orientation SCNNode 的属性或使用 CMAttitude 的偏航角、俯仰角和滚动角并将这些分配给 eulerAngles SCNNode的属性:

The node’s orientation, expressed as pitch, yaw, and roll angles, each in radians.

关于ios - iPhone 旋转应用于 3d 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44604662/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap