2D => "3D"

  • GM 6

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

  • Du kannst doch Polygone mit den Draw-Funktionen zeichnen.
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • vektor is genau das was du brauchst oo
    ////ergänzend will ich noch sagen das mir 3D zu kompliziert ist xD und von 4D fang garnich erst an *g*
    aber als not-fake-3D gäbs nur die möglichkeit entsprechend dreiecke und 4 ecke zu zeichnen xD bsp:
    Bilder
    • draws.gif

      2,01 kB, 200×100, 120 mal angesehen
  • @ mauge: Die draw_primitive_-Funktionen? Kenn ich, nur hilft mir das nicht viel weiter, wenn ich nicht weis, wie ich damit diese 3D Dinger hinbekomme.
    @ benny: "Fake-3D" reicht mir nicht...

    Also was will ich machen?
    Ich möchte versuchen eine Gitterstruktur einer Kugel hinzubekommen, die sich dreht...
    Also möchte ich aus einem Punkt im Raum einen Punkt auf einer Fläche bekommen (Vllt auch mit Tiefe?) ...
    Versteht ihr mich? :D
    Bilder
    • 3Dkugel.PNG

      31,88 kB, 285×223, 211 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von copyboy ()

  • Dann wirst du es nicht umgehen können, dich mit Vektoren zu beschäftigen.. Viel Spaß! ;)
    █████ ██ █ ████ everything ███ █████ is █████ ████ ████ fine ████ ███ █ ██████ love.
    █████ ███████ ███ your █████ ████ government.
  • Ja und wie bitteschön geht das? xD
    (Letzter Post hab ich ein Beispielbild angehängt (Winamp Visualisierung) )

    EDIT: Hab was... 64digits.com/games/index.php
    Naja, WIE es nun geht muss ich noch rausfinden ^^

    EDIT2: THX an Marv1 :D

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von copyboy ()

  • Ich hab auch mal was gemacht. Praktische Zwecke hat das aber eher weniger, denn wie gewohnt ist GML nicht sehr schnell und daher ist die Anzahl der Punkte sehr begrenzt.

    Wen die Theorie interessiert, hier mal eine kurze Erklärung:
    Zunächst mal besteht die Kamera aus 4 Vektoren: die Position (p), die Blickrichtung (v), ein Vektor der in Blickrichtung genau nach oben zeigt (u) und einer der genau nach rechts Zeigt (s). Die beiden letzten Vektoren beschreiben also die Drehung der Kamera um die Blickrichtung. Grundsätzlich wäre dafür zwar nur ein Vektor nötig, aber es bietet sich an den zweiten redundant abzuspeichern da er für spätere Berechnungen benötigt wird. Wir gehen davon aus bzw. sorgen dafür, dass v, u und s orthogonal aufeinander stehen und die Länge 1 haben. Die Hauptaufgabe die es jetzt zu lösen gilt ist ein Algorithmus zu finden, der einen Punkt im Raum auf die Kamera projiziert. Dazu folgende Überlegung: Jeder Punkt X im Raum lässt sich als Vektorzug aus v, u und s darstellen mit X = p + a * v + b * u + c * s. Da u und s immer fest zur Blickrichtung liegen, kann man sagen, dass b bzw. c die Abweichung von X auf unserem Bildschirm also der Kamera angeben. Also in gewisser Weise unsere gesuchten Koordinaten auf dem Bildschirm. Man muss also "nur" b und c in obiger Gleichung bestimmen. Das ist ein Gleichungssystem mit drei Gleichungen und lässt sich am besten mit dem Gauß-Algorithmus lösen. Das ist im Groben die Idee die dahinter steckt. Ich hoffe ich konnte es einigermaßen verständlich rüberbringen.
    Dateien
    • vector.rar

      (2,57 kB, 183 mal heruntergeladen, zuletzt: )
  • Jo, ich habs jetzt mit dem einen Script geschafft...
    Ist wirklich sehr lahm - falls ich mehr brauch muss ichs wohl oder übel noch verbessern (überflüssige Rechnungen wegmachen...).

    @ Bl@ckSp@rk: Jo, bis auf die Gleichung hab ich es noch verstanden ("Vektorzug"???) :D
    (a, b, und c sind die Raumkoordinaten, nicht wahr?)
    Eine Sache nur noch: Unschärfe der Zahlen im GM - musste deswegen von 5 auf 60 gehen. :(

    Naja, trotzdem danke - hoffentlich wird des uns noch irgendwann mal in der Schule beigebracht xD
  • Jo, bis auf die Gleichung hab ich es noch verstanden ("Vektorzug"???)

    OK, eigentlich heißt es Linearkombination, wollte es nur so verständlich wie möglich erklären.

    (a, b, und c sind die Raumkoordinaten, nicht wahr?)

    Kann man so sagen, nur in einer anderen Basis, nämlich welche v, u und s bilden. Sozusagen eine Verschiebung und Drehung des Koordinatensystems.

    Diese Ungenauigkeit der GM Zahlen hatte mich auch schon zum verzweifeln gebracht. Da wurden die Objekte teilweise total falsch dargestellt. Aber um dieses Problem und das Problem der Geschwindigkeit in den Griff zu bekommen könnte man auch einfach eine DLL schreiben, die die Berechnungen vornimmt. Aber warum nimmst du eigentlich nicht einfach die eingebauten GM 3D Funktionen für sowas?
  • Benutzer online 1

    1 Besucher