目前,我有我顯示,將永遠是在原點的對象。我有我的遞增x和y的角度,然後計算出新的X,Y的函數,Z爲攝像機座標:
Public Sub update_rotation()
If cam.manual_lookat = True Then
If camangley >= 360 Then
camangley = camangley - 360
End If
If camanglex >= 360 Then
camanglex = camanglex - 360
End If
If camangley < 0 Then
camangley = 360 + camangley
End If
If camanglex < 0 Then
camanglex = 360 + camanglex
End If
If camangley > 90 And camangley <= 270 Then
cam.invert_y = True
Else
cam.invert_y = False
End If
camx = distance * -Sin(camanglex * (PI/180)) * Cos((camangley) * (PI/180))
camy = distance * -Sin((camangley) * (PI/180))
camz = distance * Cos((camanglex) * (PI/180)) * Cos((camangley) * (PI/180))
cam.Position.X = camx
cam.Position.Y = camy
cam.Position.Z = camz
cam.lookat.X = 0
cam.lookat.Y = 0
cam.lookat.Z = 0
' Label2.Text = camanglex & "," & camangley
End If
End Sub
我有這樣的設置爲使用鍵盤事件.. X按鈕添加到camanglex變量,Y按鈕添加到camangley變量,Z按鈕添加到距離變量。
一切正常,這樣做,使用鍵盤。
問題
我想現在使用鼠標來處理旋轉,而不是鍵盤。我相信這只是一個數學問題,但我該如何計算新的camanglex和camangley變量,或者直接計算新的camx,camy,camz以建立我的相機新位置?
我有一個鼠標功能,它將捕捉鼠標座標,但我有計算部分的麻煩。
這不是一個真正的數學問題,因爲你已經完成了繁重的工作。你需要知道的是鼠標從一幀到另一幀的移動量,並將這些值用作「camanglex」和「camangley」的修飾符,這與您對鍵盤輸入的操作非常相似。 –