【发布时间】:2014-08-16 16:43:43
【问题描述】:
我从外部设备以 10 倍/秒的速度获取加速度计数据,我希望将其反映在 3-D SceneKit 模型上。也就是说,我希望模型旋转以响应加速度计数据。 3-D 模型是在 SketchUp 中构建的 .dae 文件,我正在将其加载到 SceneKit 场景中。
我目前正在尝试在 SceneKit 场景的根节点上进行旋转(这里 self 指的是自定义 SCNView 类):
self.scene.rootNode.transform = CATransform3DMakeRotation(angle, x, y, z);
这有几个问题:
- 不是沿每个轴旋转特定的量,而是沿某个向量旋转固定的量。是否可以通过更改相对向量值来控制某个轴旋转多少度?用三个
CATransform3DRotates 实现转换是否有意义,每个轴一个? - 它每次都会创建一个新的旋转,而不是仅旋转与上次读数的角度差。例如,如果加速度数据是上次读数
x: 60˚, y: 40˚, y: -30˚而现在是x: 65˚, y: 45˚, y: -35˚,则模型将沿 x 轴旋转整个 65˚,而不仅仅是与上次相差 5˚(应该如此)。这似乎很容易通过从当前读数中减去最后一个读数来解决,但我不确定数学如何与旋转有关。
【问题讨论】:
标签: objective-c macos matrix collada scenekit