1
我正在使用現代OpenGL(3.3+)在Jogl中重寫我的應用程序。隨着鼠標移動相機的目標位置
我使用所有的常規基質,即objectToWorld,WorldToCamera和CameraToClip(或模型,視圖和投影)
我創建了一個類來處理所有的鼠標移動麥克森確實在其「學習現代3D圖形化編程」用的方法來抵消相機目標位置
private void offsetTargetPosition(MouseEvent mouseEvent){
Mat4 currMat = calcMatrix();
Quat orientation = currMat.toQuaternion();
Quat invOrientation = orientation.conjugate();
Vec2 current = new Vec2(mouseEvent.getX(), mouseEvent.getY());
Vec2 diff = current.minus(startDragMouseLoc);
Vec3 worldOffset = invOrientation.mult(new Vec3(-diff.x*10, diff.y*10, 0.0f));
currView.setTargetPos(currView.getTargetPos().plus(worldOffset));
startDragMouseLoc = current;
}
calcMatrix()返回相機矩陣,其餘應明確
我想與鼠標一起移動我的對象,右鍵現在鼠標移動和對象翻譯不對應,也就是它們不是線性的,因爲我正在處理不同的空間,我猜...
我瞭解到,如果我想在空間O中應用變換T,但相關在空間C,我應該做的,p作爲頂點以下
C *(C * T * C^-1)*○* p
我應該做同樣的事情?