通过鼠标/触摸显示和旋转3-D网格?

问题描述:

想象一下,瞄准一个球体的相机,它可以围绕它的中心自由旋转。通过鼠标/触摸显示和旋转3-D网格?

想象一下,用户可以通过从相机伸出触摸此球体上最近的点并旋转它来旋转此球体。

这就是我想在iOS中实现的。

OpenGl ES on Iphone - Displaying and rotating 3D objects < - 在这个链接的问题我试图找出一个合适的框架。

我已经选择了http://nineveh.gl/(它仍处于测试阶段,但工作正常,有点微晃动),并得到了它的旋转演示工作。

每次用户的手指在触摸屏上移动时,代码捕获那个瞬时向量,这将抛出在整体速度矢量每次更新(@ 60赫兹):

- (void) drawView 
{ 
    static CGPoint v = { 0.0, 0.0 }; 

    v.x += _vel.x; 
    v.y += _vel.y; 

    // resetting to 0 makes sure each touch movement only gets fed in once 
    _vel.x = _vel.y = 0.0; 

    float decay = 0.93; 
    v.x *= decay; 
    v.y *= decay; 

    // this is wrong... 
    [_mesh rotateRelativeToX: v.y 
         toY: v.x 
         toZ: 0.0 ]; 


    [_camera drawCamera]; 
} 

此合力应该然后应用于网格。

我以上最初似乎工作。如果我水平滑动,它完美的作品。类似地垂直。但只有当我开始合并它不同步的旋转时。说我水平旋转10°,然后垂直旋转10°。现在它没有正确响应。

有谁能说明问题吗?

从阅读起来,我怀疑的解决方案将涉及到四元......

任何人都可以建议我怎么能解决这个问题?这是我必须玩的API参考:http://nineveh.gl/docs/Classes/NGLObject3D.html

我注意到有一个旋转空间属性可能派上用场,也是一个rotateRelativeWithQuaternion方法。

我希望可能有人在那里熟悉这个问题,并可以看到如何运用这个API来杀死它。