.obj Model Animation Problem

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • .obj Model Animation Problem

      Soooo, abend leute, mal wieder ne 3d bezogene frage :D!

      Da ich bisher keinen anderen Lösungsweg gefunden habe, animiere ich ein .obj model in dem ich jeden frame einzeln lade und naher nacheinander abspielen lasse!
      Nun habe ich das problem dass DAS bei rauskommt:

      Ihr seht.. 3 arme, iwie 2 modelle in einem.
      Hab dafür momentan en Modell ausm Internet um rum zutesten(Nich wundern wegen dem modell namen :3)!

      Hier mal den Code:
      :event_create:

      GML-Quellcode

      1. ani1=scr_createFromObj('haruhi\Haruhi_rigStart_000000.obj',true)
      2. ani2=scr_createFromObj('haruhi\Haruhi_rigStart_000001.obj',true)
      3. ani3=scr_createFromObj('haruhi\Haruhi_rigStart_000002.obj',true)
      4. ani4=scr_createFromObj('haruhi\Haruhi_rigStart_000003.obj',true)
      5. ani5=scr_createFromObj('haruhi\Haruhi_rigStart_000004.obj',true)
      6. ani6=scr_createFromObj('haruhi\Haruhi_rigStart_000005.obj',true)
      7. z = 1
      8. depth = 100
      9. direction = 0
      10. friction = 0.5;
      11. alarm[0]=15
      12. zaehler=0
      Alles anzeigen

      :event_timer:

      GML-Quellcode

      1. if zaehler<5
      2. {
      3. zaehler+=1
      4. }
      5. else
      6. {
      7. zaehler=0
      8. }
      9. alarm[0]=60

      :event_draw:

      GML-Quellcode

      1. d3d_transform_set_identity();
      2. d3d_transform_add_rotation_z(direction+360); //270
      3. d3d_transform_add_translation(x,y,0);
      4. switch zaehler
      5. {
      6. case 0:{d3d_model_draw(ani1,0,0,z,-1)}
      7. case 1:{d3d_model_draw(ani2,0,0,z,-1)}
      8. case 2:{d3d_model_draw(ani3,0,0,z,-1)}
      9. case 3:{d3d_model_draw(ani4,0,0,z,-1)}
      10. case 4:{d3d_model_draw(ani5,0,0,z,-1)}
      11. case 5:{d3d_model_draw(ani6,0,0,z,-1)}
      12. }
      13. d3d_transform_set_identity();
      Alles anzeigen


      Wieso macht das wohl nu macken?
    • Ähnliches passiert mir auch manchmal x-x Glaube Einsteins Spruch stimmt wirklich: "Probleme können nie durch die selbe Denkweise gelöst werden durch die sie entsstanden sind."
      Darum ist es sehr hilfreich wen jemand anders einen Blick auf seinen Code wirft :)

      Btw. wieso ist die "Expertenrunde" fast so aktiv wie das Technische Forum, in letzter Zeit? o-o

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • DragonGamer schrieb:

      Ähnliches passiert mir auch manchmal x-x Glaube Einsteins Spruch stimmt wirklich: "Probleme können nie durch die selbe Denkweise gelöst werden durch die sie entsstanden sind."
      Darum ist es sehr hilfreich wen jemand anders einen Blick auf seinen Code wirft :)

      Btw. wieso ist die "Expertenrunde" fast so aktiv wie das Technische Forum, in letzter Zeit? o-o

      Ja damit hatte er echt recht!
      Also ich werd wohl öfters was hier Posten, nich das am Schluss an jeder frage mein Name steht :D
    • Da muss ich Einspruch erheben :D

      Das break bewirkt ja lediglich dass bei der Ausführung eines Statements die anderen übersprungen werden, überprüft wird jedesmal trotzdem...
      Also sorgt break für das unnötige ausführen von Überprüfungen, aber in diesem Fall müsste doch der Fehler woanders liegen ?(

      Ich bin aber etwas verwirrt, weil eigentlich alles passen müsste. Hast du dir das Modell schon mal in z.B. Blender angeschaut? Vielleicht hat sie ja wirklich 3 Arme?
    • Chaos Creator schrieb:

      Da muss ich Einspruch erheben :D

      Das break bewirkt ja lediglich dass bei der Ausführung eines Statements die anderen übersprungen werden, überprüft wird jedesmal trotzdem...
      Also sorgt break für das unnötige ausführen von Überprüfungen, aber in diesem Fall müsste doch der Fehler woanders liegen ?(

      Ich bin aber etwas verwirrt, weil eigentlich alles passen müsste. Hast du dir das Modell schon mal in z.B. Blender angeschaut? Vielleicht hat sie ja wirklich 3 Arme?

      Jop, habse In Blender ja bissi animiert dann!
      ja das ja auch der sinn das die anderen übersprungen werden, sonst würden ja immer mehrere angezeigt werden!
    • Und genau da wunder ich mich: Wenn die anderen nicht übersprungen werden, heißt dass ja nicht, dass sie gleich ausgeführt werden müssen.

      wenn zum Beispiel "Zähler == 2" ist, wird die Liste ja durchgegangen, es ist nicht 0, nicht 1, ist 2, das wird ausgeführt. Wenn man kein "break" hat, wird weiter überprüft: Ist nicht 3, nicht 4, nicht 5. Das wird mit break übersprungen.
      Die logische Folgerung wäre dass es so oder so nur "case 2" ausführt...

      Aber anscheinend klappts ja bei dir, dann würde ich nur gerne meinen Denkfehler wissen.
    • Ambesten ladest du die Animationen/Model in einem Array

      GML-Quellcode

      1. ani[0]=scr_createFromObj('haruhi\Haruhi_rigStart_000000.obj',true)
      2. ani[1]=scr_createFromObj('haruhi\Haruhi_rigStart_000001.obj',true)
      3. ani[2]=scr_createFromObj('haruhi\Haruhi_rigStart_000002.obj',true)
      4. ani[3]=scr_createFromObj('haruhi\Haruhi_rigStart_000003.obj',true)
      5. ani[4]=scr_createFromObj('haruhi\Haruhi_rigStart_000004.obj',true)
      6. ani[5]=scr_createFromObj('haruhi\Haruhi_rigStart_000005.obj',true)

      und beim zeichnen

      GML-Quellcode

      1. d3d_transform_set_identity();
      2. d3d_transform_add_rotation_z(direction+360); //270
      3. d3d_transform_add_translation(x,y,0);
      4. d3d_model_draw(ani[zaehler],0,0,z,-1)
      5. d3d_transform_set_identity();
      :saint:
    • Chaos Creator schrieb:

      Wenn man kein "break" hat, wird weiter überprüft: Ist nicht 3, nicht 4, nicht 5. Das wird mit break übersprungen.

      Das ist eben nicht so. Sobald ein case zutrifft, wird alles, was danach kommt, ausgeführt, unabhängig anderer case labels. Man kann sich das switch-Statement als eine Art bedingtes goto vorstellen und was man mit case definiert sind labels die angesprungen werden. So funktioniert das switch-Statement übrigens in den meisten mir bekannten Programmiersprachen. Nützlich kann diese Eigenschaft sein, wenn man z.B. mehrere Werte hat, die eine Aktion auslösen sollen. Dann schreibt man

      GML-Quellcode

      1. switch (...) {
      2. case 2:
      3. case 3:
      4. case 5:
      5. case 7:
      6. case 11:
      7. case 13:
      8. case 17:
      9. case 19:
      10. show_message("Primzahl unter 20.");
      11. }
      Alles anzeigen