3d

  • Nachdem ich erste Erfolge mit 3D hatte, bin ich doch neugierig geworden..

    2. Kann ich einen einfachen, aber GEDREHTEN Zylinder (um die eigene y-Achse) zu einem Model hinzufügen?

    Mir geht es dabei um folgendes: Ich will einen KUKA Industrieroboter simulieren (siehe Bild). Den Code für die Transformationen der Arme hab ich schon, aber so wie ich das verstanden habe soll man mit d3d_transformation_stack arbeiten, wenn man innerhalb dieser Konstruktion wieder etwas gedreht haben will. Diese Drehung muß man doch ins Model packen können? (daneben die Skizze für die Elemente EINES Armes)

    Das Zweite Bild zeigt meinen ersten KUKA Roboter
    Bilder
    • KR150_2_.jpg

      17,01 kB, 250×350, 220 mal angesehen
    • Neu GIMP image.gif

      11,5 kB, 723×568, 231 mal angesehen
  • Nein, das ist nicht möglich die Transformationsdaten mit in die Modelldatei zu stecken. Aber du könntest z.B. alle Teile des Roboters in einzelne Modelldateien speichern und dann noch eine weitere Datei anlegen in der du die Transformationen speicherst. Du musst dich also um die Transformationen selber bemühen und da dein eigenes System entwickeln.
  • Das dachte ich mir. Ich hab auch schon mit so einem System angefangen... Also eine Liste, in der die Summe aller hierarchischen Transformationen für jedes 3D-Objekt gespeichert sind (genauer gesagt, ein Set von ds_lists - für jeden Wert eine)
    Wenns fertig ist und nicht funktoniert, meld ich mich wieder ...


    EDIT (2 Tage später) : es ist fertig und es funktioniert :D

    @ nobody: Stimmt schon, ich hatte das LIMBS-Example von The Games Guy (siehe LInk im Thread zum 3D-FPS) genommen.
    Spoiler anzeigen

    GML-Quellcode

    1. //stand
    2. d3d_transform_set_identity(); //begin transformation
    3. d3d_transform_add_rotation_z(zrot[0]); //spin around z axis
    4. d3d_transform_add_translation(x,y,0); //move to location in the room
    5. //parts
    6. for (p=1;p<7;p+=1;)
    7. {
    8. d3d_transform_set_identity(); //reset transformation
    9. for (q=p;q>1;q-=1;)
    10. {
    11. d3d_transform_add_rotation_x(xrot[q]); //spin around x axis
    12. d3d_transform_add_rotation_y(yrot[q]); //spin around y axis
    13. d3d_transform_add_rotation_z(zrot[q]); //spin around z axis
    14. d3d_transform_add_translation(0,0,limb_len[q-1]); //move to location along z length of limb #1
    15. }
    16. d3d_transform_add_rotation_x(xrot[0]); //spin around x axis
    17. d3d_transform_add_rotation_y(yrot[0]); //spin around y axis
    18. d3d_transform_add_rotation_z(zrot[0]); //spin around z axis
    19. d3d_transform_add_translation(x,y,z); //move to location in the room
    20. d3d_model_draw(mo[p],0,0,0,tex_limb)
    21. }
    22. d3d_transform_set_identity(); //end ALL transformations
    Alles anzeigen

    Bilder
    • Neu GIMP image.gif

      14,99 kB, 391×483, 109 mal angesehen

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von Melancor ()