Oberflächenzeichnung in 3D

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

  • Oberflächenzeichnung in 3D

    Hallo miteinander

    Ich will mittels GML eine Oberfläche (Bestehend aus Teilbildchen und Text) eine Textur erstellen, welche nachher in 3D angezeigt wird.

    Verwenden tu ich dies in einem 3D Raum, in welchem Chatnachrichten ober den Köpfen der Spieler angezeigt wird.

    Leider funktionieren Surfaces nicht im 3D Modus :/

    Folgendes habe ich bereits versucht:
    Im Begin-Step auf 2D Modus umschalten, das Surface zeichnen und in eine Textur umwandeln. Dann in 3D Modus wechseln und in 3D auf einen Wall zeichnen. (geht nicht)
    Im Begin-Step Event ein Sprite erstellen, welches aus Text und Teilsprites besteht und dann im Draw-Event in eine Textur umgewandelt wird (geht nicht)

    Habt ihr womöglich noch eine Idee?
  • Du kannst keine Surface benutzen aber den Hintergrund mit den ganzen "screen" Funktionen.

    Ich bin aber nich ganz sicher, was du jetzt genau machen willst, sonst könntest du gucken ob d3d_set_projection_ortho dir hilft.

    Um etwas als Textur zu speichern, versuch mal background_create_from_screen oder selbiges mit surface.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Hmm.. also momentan habe ich folgende Ideen:

    Chattnachrichten in 2D Anzeige (Wobei ich die Koordinaten eines 3D Objektes in 2D Koordinaten auf dem Screen berechnen muss)

    oder in einem weiteren View als 2D zu zeichnen und *_from_screen Funktionen verwenden.

    Nun wäre mir das erste natürlich lieber :)

    Hat jemand eine Ahnung wie man solch eine Rechnung berechnet :D?
  • Du kannst dafür die normalen draw_... Befehle verwenden, diese sprechen auch auf jede Art von Transformation im 3 dimensionalen Raum an. Du musst nur noch für jeden Text die Transformationen berechen und dann kannst du normal zeichen. Das könnte z.B. so aussehen:

    GML-Quellcode

    1. draw_set_halign(fa_center);
    2. draw_set_valign(fa_middle);
    3. draw_set_font(font0); //Schriftgrösse 24
    4. d3d_transform_set_identity();
    5. d3d_transform_add_scaling(0.1,0.1,0.1);
    6. d3d_transform_add_rotation_x(90);
    7. d3d_transform_add_rotation_z(90+point_direction(x,y,camera.x,camera.y));
    8. d3d_transform_add_translation(x,y,z);
    9. draw_text(0,0,"BLA BLA BLA");
    10. d3d_transform_set_identity();
    int (*x(*x(int))[5])(int*);
    Confused? Yes, it's C!