我正在學習3D模型和libgdx。我試圖在3個座標軸上旋轉我的模型,具體取決於按鍵。我的問題是,我可以在一個軸上旋轉,但不能在另一個軸上旋轉。libgdx在3軸中的2軸上旋轉3D模型的問題
的問題行爲的視頻是在這裏:https://www.youtube.com/watch?v=IIVDB0DCWNk&feature=youtu.be
代碼是JRuby的,但應該很容易神交。這裏是我的模型實例:
def setup_3d_models
@modelBatch = ModelBatch.new
jsonReader = UBJsonReader.new
modelLoader = G3dModelLoader.new(jsonReader)
model = modelLoader.loadModel(fh('models3d/space_cruiser_4.g3db'))
$cruiser = ModelInstance.new(model)
end
我管我的inputprocessor模型的旋轉現在:
class InputMuxer < InputAdapter
INCREMENT = 15
def keyDown(keycode)
puts "keyDown: #{keycode}"
if $desktop
case keycode
when Input::Keys::J
$cruiser.transform.rotate(1, 0, 0, -INCREMENT);
when Input::Keys::K
puts 'pressed K'
$cruiser.transform.rotate(1, 0, 0, INCREMENT);
when Input::Keys::U
puts 'pressed U'
$cruiser.transform.rotate(1, 0, -INCREMENT, 0);
when Input::Keys::I
puts 'pressed I'
$cruiser.transform.rotate(1, 0, INCREMENT, 0);
when Input::Keys::N
puts 'pressed N'
$cruiser.transform.rotate(1, INCREMENT, 0, 0);
when Input::Keys::M
puts 'pressed M'
$cruiser.transform.rotate(1, -INCREMENT, 0, 0);
end
end
我也有一些代碼以沿三個軸的視覺指南。這裏是最終結果:
但是,我只能通過一個軸旋轉。我會盡快上傳一個視頻,以當前的行爲。
爲什麼model.transform.rotate調用會被搞亂?我想我誤解了matrix4幾何。
編輯:好吧,我絕對處理矩陣4不正確。無論我點擊什麼鍵,16個單元格中只有兩個正在修改。這似乎baaaaad。
def keyDown(keycode)
puts "keyDown: #{keycode}"
if $desktop
print $cruiser.transform
keyDown: 41
[1.0|0.0|0.0|0.0]
[0.0|5.6177378E-6|0.9999998|0.0]
[0.0|-0.9999998|5.6177378E-6|0.0]
[0.0|0.0|0.0|1.0]
pressed M
keyDown: 39
[1.0|0.0|0.0|0.0]
[0.0|5.6177378E-6|0.9999998|0.0]
[0.0|-0.9999998|5.6177378E-6|0.0]
[0.0|0.0|0.0|1.0]
pressed K
keyDown: 39
[1.0|0.0|0.0|0.0]
[0.0|0.25882444|0.9659242|0.0]
[0.0|-0.9659242|0.25882444|0.0]
[0.0|0.0|0.0|1.0]