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

Aktuelle Zeit: Fr Jul 18, 2025 15:55

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



Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
BeitragVerfasst: Sa Feb 11, 2006 19:15 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Hallo Leute,

ich bin ganz neu hier, und möchte mich erstmal bei der Community bedanken,
Eure Tutorials sind einfach wunderbar, ich hab extrem viel Wissen da raus gezogen.
Vielen Dank and keep up the good work!

Nun aber zu meinem Problem:
Ich rendere ein Terrain (Heightfield) und verwende dabei
-> eine Grundtextur, welche ich über das komplette Feld lege, ohne Repeat, welche vorher von der CPU noch mit einer Lightmap angereichert wird
-> und dann ziehe ich in 5x5 Patterns noch ein paar Detailtexturen darüber

Meine Anforderungen sind: das Feld muss editierbar sein, das heisst, ich möchte die Detailtexturen überall gemischt haben können,
also nicht einfach nur nach Höhe.

Hierfür möchte ich nun weiche Übergänge zwischen den Texturen erzeugen, allerdings möchte ich dafür keinen Shader verwenden. Ein Shader sollte vielleicht später mal optional sein, aber erstmal wollte ich das ohne Shader lösen.

Blah Blah Blah, naja jedenfalls mache ich das im Moment so, das ich die Grundtextur sowie eine Detailtextur per Multitexturing rendere.
Danach wollte ich in einem zweiten Pass dann die Übergänge bzw. die anderen Texturen per Blending realisieren.
Also schalte ich für den 2. Pass die Texture Unit 0 ein und aktiviere Blending.

Aber irgendwie scheint das mit dem Blending nicht zu funktionieren. In den Tutorials wird ein Polygon einfach zweimal gezeichnet, mit genau den gleichen Koordinaten. Bei mir sehe ich vom Blending überhaupt nur dann etwas, wenn ich das zu Blendende Polygon tatsächlich etwas höher zeichne (also z.B. z+0.005). Woran liegt das? Schalte ich den Tiefenpuffer ab, funktionierts. Ich verstehe nur nicht, es sollte doch eigentlich auch funktionieren indem ich ein Polygon nochmal "draufklatsche", oder? Hängt das vielleicht mit dem Multitexturing zusammen? Oder hab ich da jetzt nen ganz blöden Denkfehler?

Gruss
MadOs


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 11, 2006 20:39 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Deine Beobachtungen sind absolut korrekt. Stell mal den Depthtestmode auf GL_LEQUAL. Dann wird auch überzeichnet, wenn das aktuelle Fragment den gleichen Tiefenwert hat wie das alte. Das könnte dabei helfen. Ansonsten weiß ich auch nicht weiter. Hatte nämlich auch mal das gleiche Problem und habe es bis heute nicht weiter verfolgt :)

BTW: Willkommen im Forum ;)

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 11, 2006 22:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 06, 2003 15:27
Beiträge: 281
Wohnort: Bochum
wird das terrain statisch ? dann würde ich eher die textur komplett vorberechnen(in berücksichtigung der heightmap) und nichts blenden...

_________________
www.extrawurst.org


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 11, 2006 22:54 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Frase hat geschrieben:
Deine Beobachtungen sind absolut korrekt. Stell mal den Depthtestmode auf GL_LEQUAL. Dann wird auch überzeichnet, wenn das aktuelle Fragment den gleichen Tiefenwert hat wie das alte. Das könnte dabei helfen. Ansonsten weiß ich auch nicht weiter. Hatte nämlich auch mal das gleiche Problem und habe es bis heute nicht weiter verfolgt :)

BTW: Willkommen im Forum ;)


Das hat geholfen! Danke!

Damit bin ich dann schon beim nächsten Problem :D

Verstehe ich das richtig, das man während Multitexturing auch noch glBlend anwenden kann? Mein Multitexturing-Pass läuft nähmlich ohne aktiviertes glBlend durch. Wenn ich jetzt später Blende, macht er das korrekt (ich meine ich bekomme die von mir gewünschten Verläufe), aber er moduliert den Farbwert um einiges heller als das was ich beim Multitexturing Pass gezeichnet habe.




Danke!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 11, 2006 22:59 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Extrawurst hat geschrieben:
wird das terrain statisch ? dann würde ich eher die textur komplett vorberechnen(in berücksichtigung der heightmap) und nichts blenden...


Jein :D

Also man soll die Hoehen während des Programms schon verändern können. Das kann man jetzt schon. Aber das braucht nicht mit Echtzeitansprüchen zu laufen.
Es reicht vollkommen, wenn er sich da mal ne halbe Sekunde Zeit lässt, nachdem man mit der Maus ein Berg hochgezogen hat. Ich habe vor das so zu machen, das wenn man etwas an der Landschaft verändert, man die Änderung erstmal als "Preview" mit nem Drahtgitter sieht. Wenn es ok ist, dann quittiert man das und er baut die Heightmap neu auf.
Da ich die Endboxen meines Octree's als Displaylisten speichere, bau ich den da jedesmal wieder neu auf. Aber auch das geht apzektabel schnell.

Die meiste Zeit wird man während des Programmlaufs aber mit einer statischen Heightmap verbringen.


Zuletzt geändert von Mados am Sa Feb 11, 2006 23:07, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Feb 11, 2006 23:04 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Extrawurst hat geschrieben:
wird das terrain statisch ? dann würde ich eher die textur komplett vorberechnen(in berücksichtigung der heightmap) und nichts blenden...


Davon abgesehen ist mir nicht ganz klar wie du das meinst. Ich meine ich rendere ja die Detailtexturen auf 5x5 Quads (aus Triangle-strips). Ich bräuchte dann doch eine große Textur die diese Auflösung bietet? Oder sehe ich das jetzt komplett falsch?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 12:18 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
So mittlerweile läuft es nicht schlecht. Ich hatte lediglich vergessen beide Texture Units auf Blending zu schalten.

Jetzt kann der Code
-> beliebig viele Texturen verwenden
-> durch einfaches Ändern des "Groundtypes" an einem Heightpoint kann man jederzeit die dortige Base-Texture ändern
-> das Ganze bei akzeptablen Framerates durchziehen, weil nur dort nachgezeichnet sind, wo Verläufe nötig sind, und dann
auch nur so oft nachgezeichnet wird, wie es dort Mischtexturen gibt. D.h. in 90% der Fälle muss er nur einmal drüber,
im schlechtesten (und seltensten) Fall so oft, wie es Texturen gibt.
-> und bei all dem auf neumodische Shader verzichten :D

Wenn der User bzw. eine Sanddüne in eien Grasfläche reinmalt, werden nur die Aussenseiten nachgezeichnet, in einem 2. Pass.

Wunderbar!

Vielen Dank für Eure Hilfe, ohne die hätt ichs erstmal nicht soweit geschafft.
Ich hätte gern mal einen Screenshot gepostet, hab aber keinen Upload Platz, naja egal.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 12:40 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Kannst doch hier auch was uploaden ;)
Unten einfach auf Attachment hinzufügen klicken ^^

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 12:48 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Frase hat geschrieben:
Kannst doch hier auch was uploaden ;)
Unten einfach auf Attachment hinzufügen klicken ^^


ok, ich probiers mal
meine Skysphere is noch im A*sch, also da drüber mal hinwegsehen.
In diesem Screen sind per randomizer 4 Texturen (Gras, Sand, Schnee, Fels) gesetzt, bis zu einer gewissen Grenze, wo dann nur noch Gras ist.


Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 14:39 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Du hast den Klassischen Berg quasi auf den Kopf gestellt, oder? Beim Alpenpanorama war das Gras immer unten, und der Fels und Schnee immer oben... Aber vielleicht bin ich einfach zu konservativ... ;)

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 14:44 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Flash hat geschrieben:
Du hast den Klassischen Berg quasi auf den Kopf gestellt, oder? Beim Alpenpanorama war das Gras immer unten, und der Fels und Schnee immer oben... Aber vielleicht bin ich einfach zu konservativ... ;)


lol, naja der screen soll ja nur die Möglichkeiten des Codes zeigen :D


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 14:50 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Mados hat geschrieben:
meine Skysphere is noch im A*sch, also da drüber mal hinwegsehen.

Du verwendest Pathfinding, um deine Skybox zu generieren? Interessant. Ich hab mich mit A* noch nie wirklich auseinandergesetzt, aber ich wäre interessiert, das Ergebnis von einer Implementation dieses Pathfindings als Skybox zu sehen ;)

:mrgreen:

€dit:
Was mich verwirrt ist dein Nick. MadOs klingt nach krankem Betriebsystem. Wieso hast du dann nen Screenshot geposted mit einer Linux-Anwendung drauf? ^^

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 15:38 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Frase hat geschrieben:
Mados hat geschrieben:
meine Skysphere is noch im A*sch, also da drüber mal hinwegsehen.

Du verwendest Pathfinding, um deine Skybox zu generieren? Interessant. Ich hab mich mit A* noch nie wirklich auseinandergesetzt, aber ich wäre interessiert, das Ergebnis von einer Implementation dieses Pathfindings als Skybox zu sehen ;)

:mrgreen:

€dit:
Was mich verwirrt ist dein Nick. MadOs klingt nach krankem Betriebsystem. Wieso hast du dann nen Screenshot geposted mit einer Linux-Anwendung drauf? ^^


Hat nix mit dem Betriebssystem zu tun. Nix besseres is mir halt grad net einfallen :)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 16:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Mär 06, 2003 15:27
Beiträge: 281
Wohnort: Bochum
Mados hat geschrieben:
Davon abgesehen ist mir nicht ganz klar wie du das meinst. Ich meine ich rendere ja die Detailtexturen auf 5x5 Quads (aus Triangle-strips). Ich bräuchte dann doch eine große Textur die diese Auflösung bietet? Oder sehe ich das jetzt komplett falsch?


Nunja eigentlich sind Detailtexturen Greyscale-tex die halt durch blending dem terrain detail hinzuzufügen sollen, da man um die eigentliche farbgebung des terrains zu erreichen im einfachsten falle eine textur (meinetwegen gras) drüber zeiht. dabei wird jene ja sehr gestreckt weshalb eben detail verloren geht.
nur eine textur zur färbung zu nehmen nimmt einem ja die möglichkeit der höhe entsprechend verschiedene texturen zu verwenden, deshalb würde ich für meinetwegen 2x2quads des terrains(bestehend aus zum beispiel 10x10quads) eine textur erstellen, die du procedural aus den color-tex zusammen mixt abhängig von dem teil der heigtmap an der stelle... hoffe das war nachvollziehbar.
was ich meinte war: bei der methode müsste jedesmal wenn sich die heightmap ändert die texur an der stelle neu berechnet werden.

siehe dazu: http://wiki.delphigl.com/index.php/Tuto ... p_Texturen

_________________
www.extrawurst.org


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Feb 12, 2006 16:57 
Offline
DGL Member

Registriert: Sa Feb 11, 2006 18:55
Beiträge: 24
Extrawurst hat geschrieben:
Mados hat geschrieben:
Davon abgesehen ist mir nicht ganz klar wie du das meinst. Ich meine ich rendere ja die Detailtexturen auf 5x5 Quads (aus Triangle-strips). Ich bräuchte dann doch eine große Textur die diese Auflösung bietet? Oder sehe ich das jetzt komplett falsch?


Nunja eigentlich sind Detailtexturen Greyscale-tex die halt durch blending dem terrain detail hinzuzufügen sollen, da man um die eigentliche farbgebung des terrains zu erreichen im einfachsten falle eine textur (meinetwegen gras) drüber zeiht. dabei wird jene ja sehr gestreckt weshalb eben detail verloren geht.
nur eine textur zur färbung zu nehmen nimmt einem ja die möglichkeit der höhe entsprechend verschiedene texturen zu verwenden, deshalb würde ich für meinetwegen 2x2quads des terrains(bestehend aus zum beispiel 10x10quads) eine textur erstellen, die du procedural aus den color-tex zusammen mixt abhängig von dem teil der heigtmap an der stelle... hoffe das war nachvollziehbar.
was ich meinte war: bei der methode müsste jedesmal wenn sich die heightmap ändert die texur an der stelle neu berechnet werden.

siehe dazu: http://wiki.delphigl.com/index.php/Tuto ... p_Texturen


Ja, so habe ich das am Anfang auch gemacht. Aber schnell wurde mir klar, das ich keine Prozedurale Textur welche mit der Hoehe arbeitet brauche. Der Anwendungsfall ist der, das man egal wohin, auch wenn es geologisch keinen Sinn macht, Geländetypen frei platzieren kann. Tatsächlich ist es so, das meine Detailtexturen die wesentliche Farbinformation enthalten. Es wird noch eine große Textur benutzt, um global übers Gelände ein wenig Varianz rein zu bringen, welche grayscaled ist.

So rendere ich im Moment:
Erstmal interpoliert die CPU die
Varianztextur (grayscale, gestreckt) und die
Lightmap (grayscale, gestreckt),
danach rendere ich darauf die
Detailtexturen multitextured.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 23 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 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.014s | 15 Queries | GZIP : On ]