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

Aktuelle Zeit: Mi Jul 16, 2025 21:20

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Texturen strecken (GUI)
BeitragVerfasst: Do Feb 02, 2006 20:05 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Hi,
ich will meine Texturen strecken, bekomme aber immer nur verpixelte Ergebnisse. Wie kann ich das umgehen?

Ich hab z.B. eine Textur mit den Ausmaßen 128*128. Strecke ich diese auf eine Fläche von z.B. 640*480 dann ist das Ergebnis eine stark verpixelte Textur. Ich hätte aber gerne das die Inhalte gleich bleiben und z.B. eine Linie die auf der Texture 2 Pixel breit ist auf dem Bildschirm nachher auch 2 Pixel breit ist und nur die Elemente wie die ebene Fläche in der Mitte der Texture sich wiederholen.

Wie geht das?

Benny

EDIT by Flash: Überschrift deutlicher gemacht


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 20:16 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
hm. Aus deiner Beschreibung kann man so ohne weiteres keine eindeutigen Schlüsse ziehen.

Gehe aber davon aus, dass du bei der Generierung deiner Texturen nicht angegeben hast, dass sie linear interpoliert werden sollen, falls ein Texel nicht einem Pixel entspricht.

Siehe dazu auch: http://wiki.delphigl.com/index.php/Tutorial_TexFilter

Ansonsten, wenn du Texturen skalieren willst, könntest du gluScaleImage verwenden. Ist zwar nicht das schnellste, lässt sich aber leicht implementieren.

Zu deinem Beispiel muss ich sagen: Was hast du erwartet? Wenn du eine 128er Textur auf 640 hochskalierst, wird das Ergebnis immer verpixelt sein. Da helfen nur Vektorgrafiken. Und die kann OpenGL nicht verarbeiten. Sprich: Du musst die Vektorgrafik vorher laden und in der gewünschten Größe rastern. Das kannst du dann als Textur verwenden.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 20:21 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Naja, ich bin halt davon ausgegangen das es mit relativ wenig Aufwand zu bewerkstelligen ist.

Zb. in UT2004 sind einige Menugrafiken nur 128*128 groß. Später im Spiel sind diese aber nicht verpixelt wenn man sie bei 1024*768 gestreckt darstellt.

@Link: Werds mir mal reinziehn.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:12 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Öhö... Ah jetzt weiß ich, was du meinst.

Also bei UT2004 besteht das Menü ja nicht aus einer einzigen Textur, sondern aus verschiedenen Texturen. Von diesen Texturen werden manche gestreckt (z.B. der Hintergrund), manche werden aber in ihrer ursprünglichen Größe belassen und dank glOrtho pixelgenau und absolut scharf gezeichnet.

Du suchst also eigentlich eine GUI und keine Möglichkeit, Texturen zu skalieren ;)

Man kann übrigens diese Menütexturen auch ganz gut in einer einzigen unterbringen. Nur muss man dann die Texturkoordinaten entsprechend setzen.

Was du als erstes suchtest wäre eine perfekte Skalierung. Sowas gibt es nicht und wird es in näherer Zukunft auch nicht geben. Denn da müsste der Computer wissen, welcher Teil der Textur für was zuständig ist. Du bräuchtest also eine Datenbank mit gespeicherten Mustern und eine Bilderkennung. Außerdem noch ein Modul, was die daraus gewonnenen Daten in OpenGL richtig umsetzt. Ich kann dir versichern, das ist kein geringer Aufwand ^^

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:17 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Doch, ich suche eine Möglichkeit meine Texturen zu strecken, da ich derzeit an einer GUI Lib für mein Projekt arbeite.

Sonst kann ich ja zb. keine Grafiken nutzen die einen Bevel Effekt habe. Das würde ja derbst daneben aussehen wenn aus einem 2px Bevel plötzlich 20 oder mehr werden würden.

@UT2004: ja, das sind verschiedene Texturen, aber wie schon gesagt sind einige halt gestreckt. Und diese ist eben nur 128*128 groß im Original Format. Ansonsten könnte ich genauso gut eine große Textur erstellen und die runterscalieren, aber in dem Falle wäre sie nur nutzbar sofern sie wieder groß scaliert genutzt wird.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:25 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Also wieso nimmst du nicht einfach von einer Textur verschiedene Teil? Den Rand der Textur zeichnest du unskaliert, den Mittelteil dagegen skalierst du so, wie du ihn brauchst. Das ist eigentlich die gängige Methode, um sowas zu machen.

Stichwort: Texturkoordinaten

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Das Problem ist dabei bloß das ich im Vorfelde nicht weiß wie die Texture aussieht. Es soll nach möglichkeit generisch sein. Spätestens dann funktioniert es nicht mehr. Ich hatte schon daran gedacht das ich Pixel für Pixel durchgehe und dann den aktuellen mit dem letzen Vergleiche und entscheiden lasse wie dann weiter gezeichnet wird, aber scheint mir nicht der richtige Ansatz zu sein. Es muss doch eine generische Möglichkeit geben, oder nicht?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:38 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Du musst vorher aber wissen, wo in der Textur die einzelnen Elemente sind. Du kannst doch nicht erwarten, dass der Algorithmus selbstständig erkennt, wo in der Textur z.B. ein Button ist und wo dessen Begrenzungen sind bzw. wie breit sein Rand ist etc... Sowas definiert man selbst. Entweder in ner seperaten Datei oder hardgecodet im Programm. Schau dir mal Lossy eX GUI an. (Gut, die ist noch nicht fertig, aber es gibt schon ne Demo)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:40 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Doch das erwarte ich. Irgendwie muss es doch gehen. Sonst würde die UnrealEngine sowas ja nicht unterstützen.

Ich nehm Texture X übergeb in den GUI Optionen "STRETCHED" und dann ist die Tex auch gestreckt und nicht verpixelt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:43 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Die Unreal Engine unterstützt das nicht. Bei der sind die Abmessungen und die Positionen der GUI-Elemente auch extra definiert.

Mach mal ein Bild von dem, was du meinst. Wir reden nämlich, glaub ich, aneinander vorbei.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:44 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Die der GUI Elemente schon. Aber wie schon gesagt. Nehme Texture x und lass sie als Background oder ein andere großes ELement anzeigen und sie wird im Stretched Mode nicht verpixeln.
//edit: @bild machen: ich versuch eins aufzutreiben. hier an diesem PC hab ich kein UT -.-


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:47 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Was meinst du mit verpixelt? Jedes digitale Bild, was du vergrößerst, wird verpixeln. Ob du willst oder nicht. Das lässt sich nicht verhindern. Nur die Ausmaße, wie stark man das sieht, lassen sich mit aufwändigen Algorithmen teils stark beschränken und dadurch lässt sich die Qualität steigern. Perfekt ist das aber nicht ;) Aber fast ^^

Nebenbei: Ich hab ja hier auch den UnrealED 3.0. Ist ja nicht so, dass ich mich damit nicht auskennen würde ;) Ich schau mal, was du mit dem stretched meinst ^^

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
ah gut. Dann öffne diesen mal. Öffne den Texture Editor und wähle das Package mit den GUI Texturen aus. Unter NewDesign oder so ähnlich gibt es eine Texture namen Design99.
Die hat die Maße 128*128 und man sieht diese oft im GUI menu von UT.

Das Stretched Attribute ist nur innerhalb von UnrealScript verfügbar.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:55 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Evil-Devil hat geschrieben:
ah gut. Dann öffne diesen mal. Öffne den Texture Editor und wähle das Package mit den GUI Texturen aus. Unter NewDesign oder so ähnlich gibt es eine Texture namen Design99.
Die hat die Maße 128*128 und man sieht diese oft im GUI menu von UT.

Das Stretched Attribute ist nur innerhalb von UnrealScript verfügbar.

Boah... Weißt du eigentlich, was du da von mir verlangst? Mein Rechner ist saulahm ^^ Das dauert ein paar Minuten, bis der UnrealED hochgefahren ist ;) Hab ihn gerade offen gehabt und nach der erfolglosen Suche nach dieser stretched-Property wieder zugemacht ^^ Mach ich's halt nochmal ;)

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Feb 02, 2006 21:58 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 03, 2002 15:08
Beiträge: 662
Wohnort: Hamburg
Programmiersprache: Java, C# (,PhP)
Sodelle, nach langem SUchen in Google hab ich nen Screenie gefunden das ein Stretched Image nutzt.

http://www.mbnet.fi/pelihalli/kuvat/uut ... 04-ban.jpg
Die Texture als solches ist soviel ich weiß auch nur 128*128.


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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.011s | 16 Queries | GZIP : On ]