Weltformat polyeder,polygone oder dreiecke



  • Wie ist eine 3d Welt datei eingentlich normalerweise gespeichert?

    Ich meine, baut man sie auf thetraeder, mehrere polygon, oder vielleicht sogar nur aus Dreiecken?

    Wenn man dan bsp. eine Haus will mach man ein polyeder, baut man sie aus 6 Vierecken oder aus 12 Dreiecken?

    und wenn man Kollisionen abfragt, macht man das dann mit jedem Dreieck einzeln oder mit dem Haus Polyeder?

    (nach vorselektiereung selbstverständlich)

    ich weiss das viele Wege nach rom führen, aber ich möchte doch gerne den beliebtesten weg wählen.



  • Alles! besteht am Schluss quasi immer nur aus Dreiecken!
    Warum? Weil du es zum rendern und zu Kollisionserkennung sowieso in Dreiecke zerlegen müsstest.

    Kollision macht man aber auch häufig nur gegen proxygeometrien (das ist eine vereinfachte Form der Geometrie, im einfachsten Fall eine Kugel)



  • okay, dann soll ich das Leveldateiformat also in Dreiecke aufteilen.

    Danke für die klare Antwort.



  • Das Datenformat kann am Ende beliebig sein. Du kannst natürlich auch quadrate speichern und diese dann beim einlesen in Dreiecke umwandeln. Wenn deine Welt durch eine Heightmap dargestellt werden kann, macht es sogar gar keinen Sinn, irgendwelche Polygone zu speichern.

    Wie immer kommt es auf deine (realistischen!) Anforderungen an.



  • okay, aber im programm besteht das ganze level aus Dreiecken.

    Danke



  • nur kurz als beispiel:
    Ich möcte das Level vor dem Schloss aus super mario 64(weil das jeder kennt) in einem Level Speichern:

    Dreiecke einzeln für boden und Levelgrenzen als einzelnes Dreieck.
    Schloss aus einzelnen Dreiecken.
    Kanone, Türen,Bäume werden als Objekte definiert, da sie im Prammcode selbst definiert sind.

    Boden evtl als heighmap

    für die Kollision werden die Objekte und der Boden in dreiecke unterteilt und mit allen anderen in ein Array gespeichert.

    Dieses Array wird für die Kollision verwenden.

    Ist das richtig so?



  • Anderes Beispiel: Du sagst OpenGl es soll ein Viereck malen. Geht mit GL_QUADS. Die Grafikkarte kann aber keine Vierecke malen, weil die viel zu kompliziert sind (Vierecke können verdreht sein und in einer Art Fünfeck enden oder nicht in einer Ebene liegen). Also wird der Befehl in zwei andere Befehle umgewandelt, nämlich 2 Dreiecke zu malen, kommt ja dasselbe raus. Den Unterschied sieht man, wenn man versucht, beschriebenes verdrehtes Viereck zu malen, denn da kommt bei 2 Dreiecken nicht dasselbe raus.

    Für dich heißt das, du kannst benutzen was du willst. Dreiecke, Vierecke, was auch immer. Dass am Ende alles in Dreiecke umgewandelt wird ist nur ein technisches Detail, was dein Leveldateiformat nicht zu interessieren braucht.



  • okay ich glaub ich habs, also beim rendern und Kollision alles in 3 ecke verwandeln



  • Fast. Nicht "alles in Dreiecke verwandeln" sondern "alles wird in Dreiecke verwandelt". Von der Grafikkarte, nicht von dir (außer du willst Objekte, die eine Grafikkarte nicht versteht).



  • aber die kolllision muss ja ich übernehemen, deshalb muss ich es eben in dreiecke verwandeln oder?



  • Ich meine Kollisionstests gehen mit Kugeln und Kreisen am einfachsten, da würde ich von Dreiecken abraten. Kollisionstests mit Vierecken/Polyedern funktionieren sicher schneller als mit mehreren Dreiecken.



  • ok, danke


Anmelden zum Antworten