schon eine ganze weile arbeite ich an effizentem und gut aussehenden Terrain rendering aber heute ist mir was aufgefallen was mir so gar nicht gefällt
wenn man näher rangeht an das terrain bemerkt man das es wie aus kleinen treppen aufgebaut ist, das sieht aber wirklich doof aus und überhaupt nicht natürlich
im wikki hab ich was gelesen um formen zu krümmen, würde es damit gehen? meine sorge ist das ich adlig werde vor berechnungen die zu erledigen sind.
lg
Dateianhang:
nah drann.jpg
Dateianhang:
weit weg.jpg
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Du benutzt in deiner Heightmap sicher 256 Graustufen um die Höhe zu festzulegen. Damit hast du folglich auch nur 256 mögliche Höhenstufen was sich in dem beobachteten Treppeneffekt äußert. Abhilfe schafft da mehr Auflösung, z.B. eine 16bit Graustufen-Textur.
ich erstelle meine heigthmaps alle mit L3DT ich dachte das macht sowas, kennst du ein prog das mir sowas erstellt? weil selbst mit photoshop(cs4) hab ich ja nur 255 farbstufen
Nun, auch wenn L3DT das kann musst du die Heightmap auch in einem Format speichern was 16bit Graustufen kann. Das wäre z.B. PNG. Des weiteren muss natürlich auch dein Texturlader damit klar kommen, hier hilft libpng weiter.
Registriert: Do Jun 28, 2007 17:58 Beiträge: 193
Programmiersprache: Pascal, C
Problem scheint mir eher, dass du beim Zugriff auf die Heightmap nicht linear zwischen den Pixelwerten interpolierst oder hier den Fehler machst und wieder auf Bytes rundest: Erst hierdurch machen sich die 255 Abstufungen bemerkbar.
mein Texturzugriff erfolgt über die Textures.pas mit der ich meine bilder normalerweise aus einer TGA lade es ist aber auch kein problem auf png umzusteigen wenn das notwendig ist.
das bild dann intern verarbeiten erfolgt über den Terrainshader Coolcat
ich bin egrade noch in der schule werde mir aber heute abend das mal ansehen mit der png
Wenn ich den Wikipedia-Artikel richtig interpretiere kann TGA nur 8bit pro Farbkanal. Wenn es sich um diese Textures.pas handelt, dann kann diese nur GL_RGB oder GL_RGBA mit 8bit pro Farbkanal als interne Formate benutzen. Selbst wenn du bei 8bit bleibst ist das schlecht für Graustufenbilder, weil du drei mal mehr Grafikspeicher brauchst als eigentlich nötig. Du solltest z.B. GL_ALPHA16 als internes Format benutzen.
Des weiteren wird auch gluBuild2DMipmaps benutzt, was im OpenGL.org FAQ als "Never use this." markiert ist
och man ich hatte mich doch gerade damit angefreundet die unit war einfach, und hat verdammt nochmal genau das gemacht was sie sollte "gibt mir das bild als textur" -> "da" -> "danke"
ok aber zu gunsten der speicherreduzierung und weil wir ja bisschen mit der zeit gehen wollen werd ich wohl umsteigen, ich hab mir jetzt erstmal die heigthmap als png erstellen lassen und auch überprüft ob es wirklich 16 bit sind jetzt gugg ich mir noch an wie ich das reinlade
€: ich hab weder die erweiterung für glbitmap.pas gefunden noch die libpng, die wenn dann nur als c++ code
ich hab auch schonmal von dem format .dds gehört was die glbitmat.pas ja auch laden kann, weiß einer was darüber ist das gut? lohnt das?
€2: hab mir gerade das plugin für photoshop gezogen aber dummerweise macht das einen komischen fehler beim speichern als .dds, schade eine 128bit textur wäre interressant gewesen^^
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Dropye hat geschrieben:
weil selbst mit photoshop(cs4) hab ich ja nur 255 farbstufen
Dazu nur etwas am Rande. Selbst das abgespeckte 80€ teure Photoshop Elements kann mit 16 Bit Pro Kanal umgehen. Und die Versionen von Photoshop die ich von sehr viel Früher (12-14 Jahren) kenne konnten schon mit 32 Bits Pro Kanal umgehen. Ich weiß natürlich nicht wie das mit den Schülerversionen aktueller Software aussieht ob die viel beschnittener sind als die "großen". Meines Wissens nach unterscheiden die sich in solchen Dingen aber nicht. Und ich kann mir nur schwer vorstellen, dass die so etwas ausgebaut haben.
Zu den Treppchen. Vielleicht ist die Höhe nicht zu gering aufgelöst sondern die Heightmap von den Ausmaßen zu groß aufgelöst? Durch diese extremen Ausmaße würde die begrenzte Höhenauflösung (0-255) dafür sorgen, dass sich einige Werte wiederholen. Weil runde Flächen durchs Runden auf die gleichen Höhenwerte gezogen würden. Ich weiß ja nicht was du damit machen willst. Aber alternativ könnte es auch reichen die Auflösung der Heightmap um die Hälfte zu reduzieren. Dann hättest du zwar auch weniger Punkte aber je nach Ansicht (also was du damit plannst) würde es optisch keinen Unterschied machen. Die entstandenen Treppchen wären dann vermutlich auch verschwunden. Natürlich sollte auch 16 Bit Farbtiefe beim Generieren funktionieren. Wenn denn die Verarbeitung der Daten lückenlos funktioniert. Also ich meine wirklich jede Station (generieren, speichern, bearbeiten, speichern, laden, textur, shader) an der die Daten durchkommen.
Zum Texturenloader. glBitmap brauchst du gar nicht versuchen. Der kann auch keine 16 Bit Texturformate. Abgesehen davon verstehe ich deinen Satz überhaupt nicht. Total wirr für mich. Also wenn 16 Bit dann musst du selber hergehen und die Textur von Hand laden.
Nicht das ich das jetzt probiert hätte, aber: http://www.freepascal.org/packages/libpng.html Übrigens hat libpng ein absolut hässliches imperatives C-Interface....kein objektorientiertes C++
Hier mein C++-Texturlader für PNG-Dateien mit libpng:
ich hab keine schülerversion sondern ne vollwertige und nein die is nicht illegal geklaut gezogen oder sonstwas
und dann zu den 16 bit, ich hab immer das problem sobald ich die 16bit datei die ich ja als png gespeichert habe irgendwo reinlade (photoshop, xnview) wird sie immer auf 8bit reduziert, keine ahnung warum
und du meinst wenn ich kleinere texturen nutze also Mosaik dann gehen die treppen auch weg?
@ Coolcat
auch auf der seite die du gepostet hast ann ich nicht die lib laden sondern nur komplett freepascal in der dann die lib denke ich enthalten ist, aber naja was tut man nicht alles ich werd mir das wohl im ganzen ziehen nd dann das raussuchen was ich benötige
aber naja was tut man nicht alles ich werd mir das wohl im ganzen ziehen nd dann das raussuchen was ich benötige
Das war einfach nur der erste Google-Treffer zu "libpng pascal". Bevor du da zu viel Zeit reinsteckst, ggf. erstmal was genauer suchen, z.B. hier: http://www.libpng.org/pub/png/pngaptk.html
Zitat:
Delphi [Borland] (Win32) - version 6 and later; read/write; commercial/freeware. (Delphi's native PNG support is available via CLX only; the older VCL component library doesn't support it.) ... GraphicEx [Mike Lischke] (Win32) - version 8.0 and later; read-only; includes a Pascal port of zlib; freeware for non-commercial use, with source. (This is a Delphi [Pascal] extension to load various image formats, including PNG.)
Ob das jetzt 16bit Farbkanäle einschließt steht da natürlich nicht.
Übrigens eine alternative Lösung wäre noch die 16bit einfach in zwei 8bit Kanäle zu codieren.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Was war nochmal der Grund gegen glBitmap.pas …?
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
Coolcat hat geschrieben:
@Lord Horazont:
Lossy eX hat geschrieben:
glBitmap brauchst du gar nicht versuchen. Der kann auch keine 16 Bit Texturformate
Verdammt, nichts für ungut …
Du benutzt nicht zufällig FreePascal? Dann könntest du die langsame, aber fähige, fpImage-Bibliothek ausprobieren.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Mitglieder in diesem Forum: Bing [Bot] 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.