Ich lerne über 3D-Modelle und libgdx. Ich versuche, mein Modell in 3 Achsen je nach Tastendruck zu drehen. Mein Problem ist, dass ich in einer Achse drehen kann, aber nicht in den anderen beiden.libgdx trouble rotierende 3D-Modell in 2 von 3 Achsen
Video des problematischen Verhaltens ist hier: https://www.youtube.com/watch?v=IIVDB0DCWNk&feature=youtu.be
-Code jruby ist, sollte aber leicht grok sein. Hier ist mein Modell Instanziierung:
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
Ich bin Umgang mit der Rotation des Modells in meiner inputprocessor jetzt:
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
ich auch einige Code haben visuelle Führungen entlang der drei Achsen zu drucken. Hier ist das Endergebnis:
Allerdings bekomme ich nur die Rotation über eine Achse. Ich werde in Kürze ein Video mit dem aktuellen Verhalten hochladen.
Warum ist der Aufruf von model.transform.rotate durcheinander? Ich glaube, ich verstehe die Matrix4-Geometrie nicht.
EDIT: Nun, ich bin auf jeden Fall die Matrix4 falsch behandelt. Egal, welche Schlüssel ich treffe, nur zwei der 16 Zellen werden modifiziert. Das scheint 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]