2012-04-27 62 views
0

想象一下,瞄準一個球體的相機,它可以圍繞它的中心自由旋轉。通過鼠標/觸摸顯示和旋轉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來殺死它。

回答