Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

botlin

Treue Seele

  • »botlin« ist der Autor dieses Themas

Beiträge: 139

Wohnort: Berlin

Beruf: Fachinformatiker für Anwendungsentwicklung, Student Internationale Medieninformatik

  • Private Nachricht senden

1

07.02.2012, 09:35

Geländedarstellung mit C# OpenCL und OpenGL

Hi Leute,
momentan mache ich mir Gedanken über das darstellen von Landschaften.
Mein Ansatz sieht so aus das ich eine Rasterlandschaft verwende.
Diese ist in immer gleichgroße Quadrate eingeteilt welche die Geometrie beinhalten.
Jedes Quadrat kann in verschiedenen LOD-Stuffen angezeigt werden.
2 benachbarte Quadrate unterscheiden sich aber in maximal einer Stuffe.
Die Daten werden in Arrays gehalten.
Ein Index Array deffiniert die Dreiecke.

Mein Problem ist die Kante zwischen zwei verschiedenen LOD- Stuffen.
Mein erster Versuch hat beim Ändern der LOD-Stuffe das Indexarray den Rand einer Kachel neu zusammen gesetzt um Brüche zu vermeiden.

Nun habe ich mir überlegt die Punkte am Rand einfach auf die Höhe der der benachbarten Fläche anzupassen
und anschliessend die Normale für die betroffenen Flächen neu zu errechnen.

Für die Berechnung hatte ich an OpenCL gedacht um diese auf der GPU ausführen zu lassen.

Der Ablauf ist etwa so gedacht:

Frame-Start:

- Durchlauf der Spiellogik
- ermitteln der LOD-Stuffen des Geländes
- starten der Berechnung auf GPU
- Durchlauf der Spiellogik
- einsortieren von Objekten die gezeichnet werden müssen
- stop der Berechnung des Geländes und zwischenspeichern des Arbeitstands
- Objekte Rendern

Frame-Ende:

Da ich alle Objekte eh zum schluss Zeichne habe ich mir gedacht die GPU zu nutzen wen die Spiellogik abgearbeitet wird.
Ist dieser Ansatz so möglich?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

07.02.2012, 10:25

Die Punkte am Rand der Höhe anzupassen wird nicht fehlerfrei funktionieren. Du wirst damit immer Fehler-Pixel erhalten, weil die Kanten nicht überein stimmen.

Das ist generell ein Problem bei einer Polygon-Verteilung bei der ein Vertex eins Polygons auf einer Edge eines anderen Polygons liegt (zwischen den Vertices dieser Edge).

Beispiel Polygone:
A = { (0,0), (100,0), (100, 100) }
B = { (100,0), (150,50), (100,50) }
Die teilweise gemeinsame Kante zwischen (100,0) und (100,50) wird irgendwann unter irgendeinem Blickwinkel fehlerhafte Pixel zeigen, das liegt an der Art der Rasterisierung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

07.02.2012, 10:37

Das ist ein recht häufiges Problem, du solltest dazu eine Menge im Internet finden können. Z.B.:
http://www.cs.virginia.edu/johntran/TerrainLOD.ppt
(Da wird unter anderem auch das Problem mit den T-Junctions angesprochen). Ich hab jetzt nur kurz drüber geschaut, guck einfach mal weiter, was du sonst noch so findest.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige