Verschwommene Texturen - Warum? [erledigt]
Übersicht

Weazle25Betreff: Verschwommene Texturen - Warum? [erledigt] |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leutz,
ich habe mal wieder ein Problem für das ich keine Lösung finde: Ich habe ein Quad erstellt das wie jedes andere auch aus 4 Vex und 2 Tris besteht und diesem dann eine Textur zugewiesen. Bisher eigentlich nichts besonderes. Aber leider wird meine Textur sehr unscharf dargestellt. ![]() 1. Bild: UV-Koords betragen 0.0 bzw. 1.0 dennoch wird die Textur sehr unscharf angezeigt. 2. Bild: Hier habe ich die UV-Koords um 0.005 erhöht. 3. Bild: Hier habe ich die UV-Koords um 0.005 verringert. Wenn ich wie bei Bild 2 und 3 die UV-Koords um 0.005 erhöhe oder verringere wird die Textur scharfkantig dargestellt. Nur befindet sie sich jetzt nicht mehr an der richtigen Position. Solange ich die gesamte Textur auf 1 Quad darstelle ist diese Lösung akzeptabel aber wenn ich beliebigen Text darstellen will wären durch die Texturverschiebung bei jedem Zeichen Teile der nebenstehenden Zeichen zu sehen. Hier die Function mit der das Quad erstellt wird: BlitzBasic: [AUSKLAPPEN]
Kennt jemand dieses Problem und hat vielleicht eine Lösung dafür? Gruss Weazle |
||
- Zuletzt bearbeitet von Weazle25 am Fr, Dez 02, 2005 21:05, insgesamt einmal bearbeitet
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuche mal für jedes Dreieck eigene Vertexpunkte zu erstellen,
Blitz3D macht das intern für seine Meshes so hab ich erst vor ein paar Tagen wo gelesen. Es soll die Schattierung verbessern, vieleicht hilft es auch bei der Schärfe der Textur. In dem Fall wären es 2 Punkte extra. |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Besteht die Chance, dass deine Textur keine 2^x Seitenlängen hat? In diesem Falle wird sie nämlich gestreckt, was zu diesem unschönen Effekt führt. | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Besteht die Chance, dass deine Textur keine 2^x Seitenlängen hat? In diesem Falle wird sie nämlich gestreckt, was zu diesem unschönen Effekt führt.
Die Kantenlängen der Textur entspricht immer einer 2er Potenz. Allerdings ist die Textur nicht immer quadratisch. Ich habe es auch mit quadratischen Texturen probiert mit dem gleichen Ergebnis. An der Textur kann es auch nicht liegen denn wenn ich die UV-Koords um 0.005 verschiebe wird die Textur scharf angezeigt egal ob sie quadratisch ist oder nicht. Gruss Weazle |
||
- Zuletzt bearbeitet von Weazle25 am Sa, Nov 26, 2005 18:33, insgesamt einmal bearbeitet
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
antome hat Folgendes geschrieben: Versuche mal für jedes Dreieck eigene Vertexpunkte zu erstellen,
Blitz3D macht das intern für seine Meshes so hab ich erst vor ein paar Tagen wo gelesen. Es soll die Schattierung verbessern, vieleicht hilft es auch bei der Schärfe der Textur. In dem Fall wären es 2 Punkte extra. Hab ich auch schon ausprobiert. Ändert aber nichts. Gruss Weazle |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mir kam gerade die Idee das die Pixel genau zwischen den Monitorzeilen liegen und die Texturen deshalb so verschwommen sind.
Also habe ich zur Abwechslung mal nicht die Textur sondern das Mesh verschoben. Ändert aber nichts an der Darstellung. Es muss also an den UV-Koordinaten liegen denn wenn ich die um 0.005 verschiebe wird die Textur ja scharf dargestellt. Wäre es vielleicht möglich das B3D keine 0.0 bzw. 1.0 sondern etwas ungenauere Werte (Rundungsfehler?) benutzt? Gruss Weazle |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab grad nochma dein erstes Posting gelesen.
Dabei ist mir aufgefallen, dass 0.0 -> 1.0 nicht sein darf eigentlich, da 1.0 = 0.0. In diesem Falle wird von DX versucht einen Übergang zu erzeugen, wenn ich mich recht erinnere. Deswegen muss um diese "Interpolation" zu verhindern, die UV reingezogen werden, so dass es nicht zu dieser Repetition kommt. Alternativ könntest du auch mal versuchen, ob es etwas bringt, wenn du die beiden Texture Clamp Flags benutzt bei LoadTexture sowie vielleicht die VRAM (die wäre für Bitmap Font eh zu empfehlen, da du die immer brauchst und sie so nicht immer wieder vom RAM zum VRAM geschickt wird. Wird dadurch schneller oder sollte es zumindest werden wenn das System nicht eh viel zu schnell ist ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Hab grad nochma dein erstes Posting gelesen.
Dabei ist mir aufgefallen, dass 0.0 -> 1.0 nicht sein darf eigentlich, da 1.0 = 0.0. In diesem Falle wird von DX versucht einen Übergang zu erzeugen, wenn ich mich recht erinnere. Deswegen muss um diese "Interpolation" zu verhindern, die UV reingezogen werden, so dass es nicht zu dieser Repetition kommt. Hä? Ich verstehe nicht was Du meinst. Dreamora hat Folgendes geschrieben: Alternativ könntest du auch mal versuchen, ob es etwas bringt, wenn du die beiden Texture Clamp Flags benutzt bei LoadTexture sowie vielleicht die VRAM (die wäre für Bitmap Font eh zu empfehlen, da du die immer brauchst und sie so nicht immer wieder vom RAM zum VRAM geschickt wird. Wird dadurch schneller oder sollte es zumindest werden wenn das System nicht eh viel zu schnell ist
![]() Hab ich gerade ausprobiert und bringt keine Veränderungen. Gruss Weazle |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe es gerade mit verschiedenen UV-Koordinaten versucht aber ich muss die Textur um exakt 0.005 verschieben damit sie scharfkantig dargestellt wird.
Eine Verschiebung um 0.001 bringt z.b. nur eine geringfügige Verbesserung. Eine Lösung habe ich aber immer noch nicht. ![]() Gruss Weazle |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kann mir denn niemand helfen? ![]() Gruss Weazle |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kannst Du einen Beispielcode und die entsprechende Textur zur Verfügung stellen? Dann könnte man das evtl. nachvollziehen.
Hast Du auch Flag 256 ausprobiert? |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok die Dateien sind HIER.
Es muss aber die beiliegende BlitzUI.bb verwendet werden da die normale nicht funktioniert. Der Fontmaker erstellt die Fontbitmap jedes mal neu. Es hat sich gestern Abend aber noch ein Bug eingeschlichen. Der Fontmaker funktioniert zwar aber die Fontbitmap wird nur beim ersten mal aktualisiert also nicht wundern. Gruss Weazle |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dreamora hat Folgendes geschrieben: Dabei ist mir aufgefallen, dass 0.0 -> 1.0 nicht sein darf eigentlich, da 1.0 = 0.0.
Damit hat es devinitiv nichts zu tun denn mittler Weile ist meine "Fontengine" in der Lage beliebigen 3D-Text darzustellen und der ist genauso unscharf. Gruss Weazle |
||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Könnte auch daran liegen, das texturen, die weiter weg sind, unschärfer dargestellt werden.
Noch was, die texture muss nicht nur beide längen gleich haben, sondern auch nur in diesen maßen : 1*1 2*2 4*4 8*8 16*16 32*32 64*64 128*128 256*256 512*512 1024*1024 Must dir aber auch sicher sein,. das die GraKa die du oder der benutzer usen auch die jeweilige texture-größe untertützen. |
||
[size=9]Pro|gram|mier|er: Ein Organismus, der Koffein in Software umwandelt.
Geben Sie eine beliebige 11-stellige Primzahl ein, um fortzusetzen... |
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
JunkProgger hat Folgendes geschrieben: Könnte auch daran liegen, das texturen, die weiter weg sind, unschärfer dargestellt werden.
Noch was, die texture muss nicht nur beide längen gleich haben, sondern auch nur in diesen maßen : [..] Die Kantenlängen der von mir verwendeten Texturen entsprechen IMMER einer 2er Potenz - daran kanns also nicht liegen. Die Texturen sind nicht immer quadratisch - macht aber keinen Unterschied da B3D auch nichtquadratische Texturen (ohne interne Anpassung) verwenden und anzeigen kann - daran kanns also auch nicht liegen. (ich habe es mit quadratischen und nichtquadratischen Texturen versucht was die Darstellung nicht im geringsten verändert) Habs auch mit und ohne Alphamap und ganz ohne Transparenz versucht bringt aber nichts - also kann es auch nicht daran liegen. Das einzige was eine Verbesserung brachte war die UV-Koordinaten einheitlich um 0.005 zu erhöhen oder zu verringern. Dadurch wird die Textur auf dem Mesh um 0.005 verschoben aber dafür scharfkantig dargestellt. Schiebe ich die Textur nun wieder an ihre ursprüngliche (richtige) Position zurück wird sie wieder unscharf angezeigt. Dabei macht es keinen Unterschied ob ich die gesamte Textur oder nur einen Teil auf dem Mesh anzeige. Es kann also weder an der Textur noch am Mesh liegen und die UV-Koordinaten können auch nicht falsch sein (die Textur wird nachweisslich nicht verzerrt, gestaucht oder gedehnt). Im wesentlichen ist alles so wie es sein soll. Es wird alles korrekt geladen, hat die richtige Grösse und ist am richtigen Platz. Nur wird die Textur erst nach einer Verschiebung um 0.005 scharf dargestellt. Mittler Weile glaube ich das es ein B3D- oder DX-Bug sein muss. Gruss Weazle |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hier ein Miniprogramm das das Problem verdeutlicht.
DOWNLOAD (3 kb) Bei mir wird die Textur erst scharf dargestellt nach dem sie verschoben wurde (Leertaste). ![]() Wenn dies nur an meinem Rechner liegt müsste die Textur schon bei Programmstart scharfkantig sein. ![]() Könnt ihr das mal ausprobieren? Gruss Weazle PS: Hab B3D-Patch 1.90 installiert. |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab alles mögliche ausprobiert aber es ist anscheinend so, wenn
die Texturränder genau auf den Vertexpunkten liegen, ist die Textur verschwommen. Bei Modellen welche ich z.B. in Wings3D texturiere ist ja normalerweise eine Skalierung in irend einer Weise vorhanden so das die Texturen automatisch scharf sind. Wenn du in deinem Programm eine Cube erstellst und die Textur mit PositionTexture um 0.005 verschiebst hast du auch den Effekt das die Textur schärfer aussieht. Du kannst deine Texturen evtl. so erstellen, das du einen größeren Rand erstellst und dann minimal scalierst. |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
antome hat Folgendes geschrieben: Du kannst deine Texturen evtl. so erstellen, das du einen größeren Rand
erstellst und dann minimal scalierst. Da wird mir wohl nichts anderes übrig bleiben nur werden dadurch auch die Abstände zwischen den Zeichen grössen was nicht unbedingt schön aussieht. Bei Fonts wäre diese Lösung vielleicht noch akzeptabel aber bei 3D-Modellen? Da kann man die Textur nicht verschieben. Das würde dann ja extrem hässlich aussehen. Wenigstens weiss ich jetzt das es nicht an mir oder meinem Rechner liegt. Gruss Weazle |
||
Weazle25 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab die Lösung gefunden.
Offenbar hat B3D ein kleines Problem mit den Textur-Koordinaten. Die U-Koordinate einer Textur geht nicht von 0.0 bis 1.0 sondern von 0.001 bis 1.001. Bei der V-Koordinate wird die Textur zusätzlich noch geringfügig gedehnt. Hier geht die V-Koordinate nicht von 0.0 bis 1.0 sondern von 0.005 bis 1.01. Ich musste mein Texturtest-Programm bei 640x480 im Vollbildmodus laufen lassen um diese Verzerrungen und Verschiebungen genauer erkennen zu können. Aber es funktioniert. Die Textur wird jetzt scharfkantig und an der richtigen Position angezeigt. Gruss Weazle |
||
antome!!! gesperrt !!! |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Super werd ich mir sofort notiern ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group