我在Qt中使用OpenGL,通過QGLWidget
,我試圖實現一些基本的鼠標和鍵盤驅動的交互。OpenGL - 如何使用gluLookAt移動場景以響應鼠標輸入
因此,例如,鍵盤上的箭頭鍵將用於「平移」場景,鼠標滾輪放大場景,鼠標應該用於旋轉模型。
我已經想出瞭如何實現平移和縮放,但是我在實現旋轉時遇到了問題。
這是我到目前爲止有:
void MyGLWidget::paintGL() {
glLoadIdentity();
gluLookAt(0+camDelta[0],0+camDelta[1],-100+camDelta[2],centerCoords[0]+lookAtDelta[0],centerCoords[1]+lookAtDelta[1],centerCoords[2]+lookAtDelta[2],0,1,0);
// draw stuff here
}
所以基本上我設置初始gluLookAt
參數,然後我加了兩個數組,float camDelta[3]
和float lookAtDelta[3]
,跟蹤攝像機位置的變化,它是響應於用戶與場景交互而進行觀看。
鼠標滾輪,我做的:
void MyGLWidget::wheelEvent(QWheelEvent *event) {
camDelta[2] += (event->delta()/8.0/15.0) * WHEEL_DELTA;
lookAtDelta[2] += (event->delta()/8.0/15.0) * WHEEL_DELTA;
updateGL();
}
同樣在MyGLWidget::keyPressEvent
,我修改三角洲[0]
場進行平左右,而增量進行平上下[1]
。
所以我的問題是,我如何實現類似的支持鼠標旋轉的東西?我有點困惑,因爲我猜測我不得不以某種方式改變攝像頭在哪裏看,而且還要改變向上的矢量,但我並不清楚如何做到這一點。
Houbysoft嗨,我也希望在Android的平移功能[我需要使用觸摸事件來移動GLSurfaceview。如果你現在有任何想法,請給出任何示例代碼。這將有助於我完成我的工作..我的示例代碼在這裏.http://www.mediafire.com/?09f9q51xnqhq2l7.which – harikrishnan