Frage Vertexproblem

Dieses Thema im Forum "Offtopic" wurde erstellt von Thalion, 8. April 2015.

  1. Thalion
    Offline

    Thalion

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Ort:
    Berlin
    Minecraft:
    Spartaner_v1
    Hallöchen,

    da ich zur Zeit an einem eigenen Game programmiere und auch angefangen habe den Server zu schreiben, wollte ich einmal eine Frage stellen.
    Zur Zeit werden die Vertex ( 3D-Punkte ) 1 zu 1 im File gespeichert. Das heißt bei 800x800 Vertexpunkten pro Terrain ca. 12MB Dateigröße. Der Spaß ist wie man denke ich bemerk viel zu groß. Nun habe ich viel probiert um eine sparsamere Methode zu entwickeln. Das Ergebnis ist eine Fließzahlenkomponente für X und Z. Nun ist die Frage, wie ich aus 3 Vertex einen beliebigen Punkt auf der Dreiecksfläche der drei Punkte berechnen kann? Für die Punkte ABC wären dann x,y und z bekannt.

    http://puu.sh/h0hR7/113fee021f.jpg

    Für den gesuchten Punkt wären x und z bekannt. y wäre die gesuchte Größe.

    freue mich auf die Lösung oder vielleicht auch andere Vorschläge.

    Mfg,
    Thalion
     
    #1
  2. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Terraindaten speichert man normalerweise nicht als Mesh. Es gibt mehrere Ansätze um das Terrain zu speichern, die einfachste ist eine Höhenmap auf der man ein Raster hat (800x800) und dann für jedes Feld in diesem Raster die Höhendaten speichert. Daraus kann man dann zur Laufzeit das Terrain erzeugen. Nachteil dieser Methode ist, dass man nur eine Terrainschicht hat und z.B. keine Höhlen machen kann, wobei es hierfür auch Lösungen gibt, hängt aber sehr stark von den Anforderungen ab. Damit löst sich auch das Problem, dass du den Punkt im Dreieck finden musst, weil du Quadrate hast. Sieht so aus: https://en.wikipedia.org/wiki/Heightmap

    Wenn dir das nicht genau genug ist, weil du stellenweise detailiertere Terraindeformierungen umsetzten willst kannst du das Terrain mittels Space Partitioning unterteilen: https://en.wikipedia.org/wiki/Space_partitioning#Types_of_space_partitioning_data_structures

    Ansonsten ist es noch üblich, dass man in einem gewissen Radius um den Spieler das Terrain glättet, damit es nicht so kantig wirkt. Das sind dann allerdings renderoptimierungen, die sehr schnell ausarten können. Sofern man das lernen will ist das ein interessantes Thema, aber wenn man eigentlich nur ein Spiel entwickeln will würde ich Unity empfehlen.
     
    #2
    Thalion gefällt das.
  3. Thalion
    Offline

    Thalion

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Ort:
    Berlin
    Minecraft:
    Spartaner_v1
    Erstmal danke für die Antwort,

    Ich benutze keine vordefinierten Umgebungen wie Unity bzw. hab es nicht vor. Die Glättung beim Rendern lässt sich relativ einfach lösen, von daher sollte das keine Probleme geben. Joa, werde mal sehen, wie weit ich mit dem Space partitioning komme.

    Mfg,
    Thalion
     
    #3
  4. 可愛い
    Offline

    可愛い

    Registriert seit:
    19. Mai 2014
    Beiträge:
    654
    Naja, ich denk als erstes solltest du eine Datenstruktur überlegen, mir scheint, dass du da etwas falsch machst. Das Space Partitioning wird eigentlich erst später interessant, anfangs solltest du vielleicht die Höhenmap mit einem Array fester größe implementieren, das hängt aber, wie schon gesagt, davon ab, was du eigentlich machen willst. Je nach Spiel kommt man mit ganz unterschiedlichen Implementierungen davon und hat absolut keine Probleme.
     
    #4
  5. Thalion
    Offline

    Thalion

    Registriert seit:
    22. Juli 2014
    Beiträge:
    25
    Ort:
    Berlin
    Minecraft:
    Spartaner_v1
    Da ich mit mehreren Ebenen arbeite, bzw. arbeiten möchte, werden die Heightmaps ein bisschen schwierig zu machen sein. Ich werde auch weiterhin noch nach anderen Ideen suchen. Ich möchte nicht die "perfekte" Methode benutzen, sondern eine, welche ich nachvollziehen kann. Kann auch sein, dass ich hier etwas komplett missverstehe, falls es das sein sollte, bitte ich um Aufklärung.

    Mfg,
    Das Spiel ist als First Person, MMO RPG mit Sandboxelementen angesiedelt.
     
    #5