Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 15:47

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Heightmap Textureblending
BeitragVerfasst: Do Jun 08, 2006 12:30 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Hi,
Ich habe ein Problem mit den Texturstages meiner Heightmap, welches zwar schon gelöst war,
jetzt aber neue größere Probleme mit sich bringt.

Wie der Titel schon erkennen lässt, such ich eine Methode um einen schönen Übergang von der
einen Stage zur Nächsten zu machen. (zB von Sand auf Gras). Möglichst ohne Shader.

Meine umgesetzte Idee war, dass ich dass alles über die glColor4f-Funktion mache und dann blende.
Die Entsprechenden Vertices an der Grenze zwischen zwei Stages mit alpha Value 1 und die restlichen des Qauds mit 0.

So macht OGL den Übergang ja (fast) von alleine.
Meine Heightmap wird mit Qauds gerendert (macht alles ein wenig einfacher).
Bekanntlich teilt OGL das Quad beim Rendern automatisch in zwei dreiecke auf, die je nach

umlaufsinn entweder
LinksUnten und RechtsOben ODER LinksOben und RechtsUnten liegen.
So rendere ich das Quad (also wird OGL es so aufteilen):

[0] -- [3]
|.. \ ... |
|.... \ . |
[1] -- [2]

Wenn jetzt aber nur die Ecke RechtsUnten (Also Vertex 2) ein Punkt der Grenzlinie zwischen
Gras und Sand ist sieht das Ergebnis aber net so doll aus. Mit ein bisschen Vorstellungskraft kann man sich folgendes
Bild anschauen und man sieht das Problem:

(die grüne Farbe wäre hier mein Alphaverlauf. Eckig :? )
Wenn nur Vertex 3 ein Punkt der Grenzlinie ist, sieht es ja schön aus. (Blaue Farbe)

Also dachte ich, drehe ich diese Problem-Qauds einfach um...

[3] -- [2]
|.... /.. |
|.. /.... |
[0] -- [1]

Nach langem probieren hat es dann geklappt.
Es ergeben sich jetzt nun Probleme mit der Kollisionsabfrage. Lösbar wäre es, es wird aber
alles sehr unschön und es gibt sehr verwirrenden Code.



So, das musste ich jetzt mal loswerden. :roll:
Zu meiner eigentlichen Frage: Kann ich dieses Blending auch anders realisieren ?
Für jedes Quad benutze ich zusätzlich Multitexturing für die Detailmap.

Gruß, MatReno.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jun 08, 2006 20:41 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Häufig macht man sowas mit zusätzlichen Alphatexturen, wo diese Probleme weniger auftreten ... aber ich nehme an du hast deine Gründe das mit glColor zu lösen.

Mit deiner Vorgehensweise sehe ich 2 Möglichkeiten das ganze zu lösen:

1. Du machst einen weicheren Übergang, also nicht von 0 auf 100 (bzw. 1.0) sondern dass du bei deinem (ersten) Beispiel Werte in folgenden Größenordnungen verwendest:
Punkt 0: 1.0
Punkt 1 und 3: 0.8
Punkt 2: 0.0

2. Du änderst die Geometrie, was du ja auch schon getan hast. Wenn du willst dass die Geometrie zwecks Kollisionsabfragen gleich bleibt, dann bleibt nur noch die Möglichkeit zusätzliche Punkte einzuführen. In deinem Fall sollte ein zusätzlicher Punkt reichen, so dass es dann etwa so aussieht:
Code:
  1.  
  2. 1---2
  3. |\ /|
  4. |-0-|
  5. |/ \|
  6. 4---3
  7.  

Also ein Triangle Fan. Und den Alphawert für Punkt 0 kannst du nun nach belieben wählen. Der Punkt 0 liegt hierbei genau in der Mitte (sowohl Höhe als auch x und y Koordinate) zwischen den Punkten 1 und 3.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 09, 2006 10:06 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Jan 31, 2005 11:02
Beiträge: 432
Wohnort: Rheinlandpfalz
Alphatexturen wollte ich nicht verwenden, da man da ja auch mehrere brauch, glaub ich... :roll:
Außerdem weiß ich net so genau wie ich das dann anstellen soll, weil ich ja zusätzlich noch Multitexturing verwende.

Dein zweiter Vorschlag gefällt mir sehr gut.
Er ist einfach zu realisieren und das wichtigste: Die Geometrie bleibt erhalten!
Das ich da net selbst drauf gekommen bin...muss jetzt nur noch gut aussehen. :wink:

Wenn ich die Problem-Quads in trianglefan habe sollte das aber keine größeren Performance einbußen haben, oder?
Bei einer HMap von 32x32 sind es bei 3 Stages erfahrungsgemäß so ca. 20 Quads.

Vielen Dank, du hast mir sehr geholfen.

_________________
http://texelviews.delphigl.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Jun 09, 2006 11:12 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Wenn du Füllratengebunden bist, was durchaus wahrscheinlich ist, dann sollte ein bisschen zusätzliche Geometrie und ein Punkt mehr bei ein paar Quads nahezu keine Auswirkungen auf die Performance haben.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 16 Queries | GZIP : On ]