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

Aktuelle Zeit: Do Jul 10, 2025 10:21

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Texturieren von Landschaften
BeitragVerfasst: So Jan 14, 2007 13:52 
Offline
DGL Member

Registriert: Sa Okt 28, 2006 14:44
Beiträge: 39
Hi,

Ich verwende derzeit, um meine Außenlandschaften (Heightmaps) zu Texturieren den Algorhytmus aus dem Tutorial_Terrain2 im Wiki, bin aber aus verschiedenen Gründen unzufrieden mit dem Ergebnis. Der gravierenste ist, dass die Textur am Ende total 'matschig' ist, will heißen schlecht aufgelöst.
Man könnte zwar einfach die Landschaft mit mehr Polygonen rendern, dass würde die Auflösung vergrößern; aber das hat zur Folge, dass zum Einen die Landschaft sehr viel mehr Performance verschlingt, zweitens die große Textur drastische Mengen an Speicher verbraucht und drittens meine Heightmap-Bitmap unnötig viel Festplattenspeicher einnimmt.

Die ganzen kommerziellen Titel (oder wenigstens viele) bekommen ja auch eine sehr detailreiche Texturierung der nächsten Umgebung bei immer noch ordentlichen Ergebnissen in der Entfernung hin, ohne dass man viel von einer Kachelung der Textur sehen kann.

Gibt es noch andere schöne und effektive Möglichkeiten, eine Heightmap zu Texturieren? Wie mach ihr das denn?

Danke für alle Antworten im Voraus.


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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 14:31 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Du musst halt einerseits die Auflösungen entwas anpassen und vielleicht auch aussagekräftigere Texturen einsetzen. Man kann auch die Auflösung der Textur höher rechnen, als die Auflösung der Heightmap. Detail-Texturen kommen auch ganz gut - wenn man will kann man das dann auch mit Texture Splatting kombinieren. Besonders Texture Splatting ist momentan das, was sehr häufig eingesetzt wird. http://wiki.delphigl.com/index.php/Texture_Splatting Aber du solltest nicht gleich auf die Tutorias schimpfen - man kann vieles was man dort lernt auch heute noch gut gebrauchen, man muss halt evtl. die Sache etwas an die heutigen Gegebenheiten anpassen. Das Tutorial stammt immerhin aus einer Zeit, da waren 600 MHz Prozessoren und 32 MByte Grafikspeicher das Maß der Dinge. Daß man, um die Momentanten Möglichkeiten auszuschöpfen die Dinge etwas anpassen muss, ist denke ich klar - man kann die Sache dann halt nicht so ohne weiteres mit den momentanten kommerziellen Spielen vergleichen, sondern muss halt sehen, daß es nicht ganz aktuell ist, aber man immerhin soviel draus lernen kann, daß man es ohne Schwierigkeiten auf das momentante Niveau heben kann - auf den zum Tutorial gehörenden Screens sieht man ja auch, wie die Dinge sich ansehen und braucht dann nicht enttäsucht sein, wenn es tatsächlich so ähnlich aussieht ;-)
Wenn man die Spiechermenge klein halten will, dann legt man übrigens große Texturen Stückweise erstmal auf die Platte und nur die Stücke, die man demnächst bzw. momentan benötigt hat man tatsächlich im Speicher.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 21:29 
Offline
DGL Member

Registriert: Sa Okt 28, 2006 14:44
Beiträge: 39
Sorry wenn ich da das Tut schlecht gemacht hab, das lag nicht in meiner Absicht.
Was das Splatting angeht, das ist zwar das was ich bräuchte, aber mit Blending wird es wohl zu langsam sein und mit Shadern kenn ich mich noch nicht im geringsten aus...
Übrigens, die Landschaft im Screenshot hat eine Detailtextur, nur sieht man die bei der Entfernung nicht mehr. Außerdem handelt es sich bei der nur um eine neutrale Körnung, d.h. die Detail-Textur ist für Sand,Wasser,Laub,Fels und Schnee die gleiche. Wenn ich da verschiedene nehmen wollte, würde doch wieder kein Weg am Blending oder Pixelshader vorbeiführen, um sie ineinander überfließen zu lassen, oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 21:37 
Offline
DGL Member

Registriert: Sa Okt 28, 2006 14:44
Beiträge: 39
Noch eine Frage: Wenn ich mich an das Thema Shader heranarbeiten will, über welche Themen/ in welchen Quellen sollte ich vorher gelesen haben bzw. wovon sollte ich eine Ahnung haben, bevor ich das glSlang-Tut im Wiki durcharbeite?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 22:29 
Offline
DGL Member

Registriert: Do Mai 30, 2002 18:48
Beiträge: 1617
Im wesentlichen kann man das Tutorial direkt hernehmen. Ich hatte damals das Problem, daß ich irgendwie nicht gleich verstanden habe, wo die Shader denn eigentlich einhaken - wenn du selbigs Problem hast, dann lies doch mal die Einführung in die Thematik für die RenderMan shader - mir hat das sehr geholfen - allzuweit sollte man allerdings nicht lesen - diese Beschreibung ist halt für einen Raytracer ;-)
https://renderman.pixar.com/products/ri ... tion9.html
Aber fang ruhig erstmal mit unserem Tutorial an und wenn Dir die Sache anfangs etwas unheimlich erscheint, dann lies diese Einführung durch - die weiteren Seiten dürften Dir allerdings nicht weiter nützen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 22:51 
Offline
DGL Member

Registriert: Sa Okt 28, 2006 14:44
Beiträge: 39
Zitat:
Aber fang ruhig erstmal mit unserem Tutorial an und wenn Dir die Sache anfangs etwas unheimlich erscheint, dann lies diese Einführung durch.

Unheimlich trifft den Kern.

Ich habe das Tuturial heute nur noch mal kurz überflogen, aber kann es sein, dass es gar nicht auf Pixel-Shader, die beim Texture Splatting erwähnt werden, eingeht?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 23:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 02, 2002 15:41
Beiträge: 867
Wohnort: nahe Stuttgart
Josua hat geschrieben:
Ich habe das Tuturial heute nur noch mal kurz überflogen, aber kann es sein, dass es gar nicht auf Pixel-Shader, die beim Texture Splatting erwähnt werden, eingeht?

Das Problem ist wahrscheinlich, dass du bisher nicht wusstest, dass DirectX und OpenGL unterschiedliche Namen für die gleichen Dinge haben:
Unter DirectX heißt es "Vertex Shader" und "Pixel Shader",
unter OpenGL "Vertex Program" und "Fragment Program".

Zudem muss ich sagen, das erste glSlang-Tutorial ist zwar ziemlich umfassend, aber mir kam es mehr wie eine Befehlsauflistung und nicht wie ein Tutorial vor. Es wirkt mehr wie eine Liste oder ein Glossar, denn es wird zwar jedes Einzelteil gezeigt und meist auch erklärt, aber nicht grade, wie man die Einzelteile sinnvoll kombinieren kann. Das macht in meinem Verständnis grade ein Tutorial aus, dass aus vielen Einzelteilen etwas Großes geschaffen wird, was dann Stück für Stück in Funktionsweise erklärt wird. Also kurzum, meiner Meinung nach lohnt es sich auf jedenfall beim Lesen nebenher auch einen Blick auf andere Res oder aufs zweite Tut zu werfen, das mehr in die Richtung erklärt.

Eventuell lohnt sich auch das learning by doing mit nem Shadereditor, mit dem du schnell und einfach mit Shadern Ergebnisse erzielen kannst.

MfG


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Jan 14, 2007 23:50 
Offline
DGL Member

Registriert: So Sep 26, 2004 05:57
Beiträge: 190
Wohnort: Linz
Nur so nebenbei aber ...

Zitat:
Was das Splatting angeht, das ist zwar das was ich bräuchte, aber mit Blending wird es wohl zu langsam sein und mit Shadern kenn ich mich noch nicht im geringsten aus...


... Multitexturing sollte auf alle Fälle etwas schneller sein als Shader (zumindest wenn du die gleiche Texturanzahl hast).

[edit]
Ich seh grad, dass beim Texture-Splatting Artikel extra drinnen steht dass man durch Pixel-Shader in eine Textur mehr Alphakanäle rein packen kann ... dann ist mein voriger Satz natürlich nichtig wenn du dir durch die geringere Texturanzahl bei Pixel-Shadern genug Renderpasses ersparst um die höheren Rechenanforderungen wieder wett zu machen ... müsste man aber im Endeffekt wohl ausprobieren wie es unter welchen Bedingungen schneller geht. Hast du da konkrete Werte / Benchmarks Nico?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 15, 2007 00:49 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Ein einfacher Shader, der vier Texturen jeweils mit RGBA von glColor gewichtet sieht so aus.
Vielleicht ist für den Anfang ARB_fragment_program einfacher, weil da das Binden über den Namen entfällt.

Code:
  1. !!ARBfp1.0
  2. TEMP c,r;
  3. TEX c, fragment.texcoord[0], texture[0], 2D;
  4. MUL r, c, fragment.color.r;
  5.  
  6. TEX c, fragment.texcoord[0], texture[1], 2D;
  7. MAD r, c, fragment.color.g,r;
  8.  
  9. TEX c, fragment.texcoord[0], texture[2], 2D;
  10. MAD r, c, fragment.color.b,r;
  11.  
  12. TEX c, fragment.texcoord[0], texture[3], 2D;
  13. MAD result.color, c, fragment.color.a, r;
  14.  
  15. END


Laden:
glBindProgramARB(GL_FRAGMENT_PROGRAM_ARB,1);
glProgramStringARB(GL_FRAGMENT_PROGRAM_ARB,PROGRAM_FORMAT_ASCII_ARB,length(text),pchar(text));

Aktivieren und deaktivieren wie bei Texturen.
glEnable(GL_FRAGMENT_PROGRAM_ARB).


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 15, 2007 16:18 
Offline
DGL Member

Registriert: Sa Okt 28, 2006 14:44
Beiträge: 39
Macht es eigentlich Sinn, solche Daten wie "wo auf der Heightmap ist welche grundtextur wie stark?" für den Verlauf in einer weiteren bitmap zu speichern?
Oder gibt es da eine schönere Methode?

Und mal ganz nebenbei eine andere Frage, nur weils mir grad so einfällt: (Wie) kann man denn Landschaften alternativ zur Heightmap speichern, so dass man aber immer noch leicht so was wie Kollision berechnen kann?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Jan 15, 2007 16:27 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jun 20, 2003 13:59
Beiträge: 134
Zitat:
Und mal ganz nebenbei eine andere Frage, nur weils mir grad so einfällt: (Wie) kann man denn Landschaften alternativ zur Heightmap speichern, so dass man aber immer noch leicht so was wie Kollision berechnen kann?


ich denkte das ist vollkommen deiner fantasie überlassen wie du deine landschaften, modells, texturen, etc. speicherst sollange du sie nachher wieder laden kannst :wink:

_________________
ghost-site.de


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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 ]