26.06.2015, 09:56
Huhu Manni,
dann mal für die 19 verbleibenden hyperventilierenden Anfänger ^^
egal in welchem Grafikformat man seine Texturen erstellt und wie groß sie auf der eigenen Festplatte sind: der Viewer skaliert die Grafik so, dass die Kantenlänge des Bildes 8, 16, 32, 64, 128, 256, 512 oder 1024 Pixel beträgt. Anschließend konvertiert der Viewer das Bild in das JPEG2000 Format und lädt die Datei dann auf den Server, wo sie als Asset vorliegt (Regions-Cache usw. lasse ich gerade mal außen vor). Ein Betrachter dieses Bildes muss natürlich diese Datei erst herunterladen (das macht der Viewer schon für ihn). Dabei wird eine gewisse Bandbreite benötigt - um so mehr, je größer die Datei ist. Es wird aber nicht die Originaldatei übertragen, sondern nur die komprimierte JPEG2000-Datei. Um die Datei anzeigen zu können muss der Viewer die Datei wieder entpacken und im Grafikspeicher vorrätig halten. Die entpackte Datei kann dabei vergleichsweise groß werden:
1024x1024 => 3 MiByte ohne Transparenz, 4 MiByte mit Transparenz
256x256 => 0,8MiByte / 1 MiByte
64x64 => 12 kiByte/ 16 kiByte
Da nur max. 512 MiByte Texturspeicher zur Verfügung stehen, können die also mit 128 vollformatigen Grafiken bereits ausgeschöpft sein! Ab dann müssen die Texturen immer wieder neugeladen werden, weil zwischendurch der Platz für andere Grafiken benötigt wird. Das dürfte sich dann bemerkbar machen u.A. durch einen ständigen unscharf/scharf-Wechsel der Texturen und allgemein durch "Lag"...
Möglicherweise verwendet die Grafikbearbeitungssoftware bessere Algorithmen für die Skalierung der Grafiken als der Viewer, daher lasse ich diese Arbeiten üblicherweise durch Gimp erledigen. Um weiteren Qualitätsverlusten vorzubeugen, erstelle ich meine Grafiken in einem verlustfreien Format (meist TGA, aber auch BMP und - mit entsprechender Einstellung - PNG) und lasse diese Dateien dann durch den Viewer in das JPEG2000-Format konvertieren und hochladen.
Außerdem behaupte ich mal, dass nicht die Qualitätseinstellung beim Speichern der Grafik entscheidend ist, sondern die Größe der Textur. Wenn ich auf Details verzichten kann verwende ich also lieber eine kleinere Textur mit hoher Qualität als dass ich die große Textur mit einem höheren Kompressionsgrad abspeichere, denn dadurch spare ich der Grafikkarte unnötige Speichermengen ein.
Gerade bei den Meshes, die ja bis zu acht Texturen verwenden können kommt da einiges zusammen. Außerdem können Mesh-Kleidungsstücke die volle Auflösung nutzen, während die Systemklamotten auf 512x512 Pixel begrenzt sind. Daher sehen Meshes - richtig gemacht - sehr viel besser aus, können aber die Grafikkarte deutlich stärker belasten. Es hängt eben stark davon ab, wie der Ersteller mit den Möglichkeiten umgeht.
Ich hoffe, dass ich das nun halbwegs verständlich und dennoch zutreffend darstellen konnte...
Ciaoo
Sheera
dann mal für die 19 verbleibenden hyperventilierenden Anfänger ^^
egal in welchem Grafikformat man seine Texturen erstellt und wie groß sie auf der eigenen Festplatte sind: der Viewer skaliert die Grafik so, dass die Kantenlänge des Bildes 8, 16, 32, 64, 128, 256, 512 oder 1024 Pixel beträgt. Anschließend konvertiert der Viewer das Bild in das JPEG2000 Format und lädt die Datei dann auf den Server, wo sie als Asset vorliegt (Regions-Cache usw. lasse ich gerade mal außen vor). Ein Betrachter dieses Bildes muss natürlich diese Datei erst herunterladen (das macht der Viewer schon für ihn). Dabei wird eine gewisse Bandbreite benötigt - um so mehr, je größer die Datei ist. Es wird aber nicht die Originaldatei übertragen, sondern nur die komprimierte JPEG2000-Datei. Um die Datei anzeigen zu können muss der Viewer die Datei wieder entpacken und im Grafikspeicher vorrätig halten. Die entpackte Datei kann dabei vergleichsweise groß werden:
1024x1024 => 3 MiByte ohne Transparenz, 4 MiByte mit Transparenz
256x256 => 0,8MiByte / 1 MiByte
64x64 => 12 kiByte/ 16 kiByte
Da nur max. 512 MiByte Texturspeicher zur Verfügung stehen, können die also mit 128 vollformatigen Grafiken bereits ausgeschöpft sein! Ab dann müssen die Texturen immer wieder neugeladen werden, weil zwischendurch der Platz für andere Grafiken benötigt wird. Das dürfte sich dann bemerkbar machen u.A. durch einen ständigen unscharf/scharf-Wechsel der Texturen und allgemein durch "Lag"...
Möglicherweise verwendet die Grafikbearbeitungssoftware bessere Algorithmen für die Skalierung der Grafiken als der Viewer, daher lasse ich diese Arbeiten üblicherweise durch Gimp erledigen. Um weiteren Qualitätsverlusten vorzubeugen, erstelle ich meine Grafiken in einem verlustfreien Format (meist TGA, aber auch BMP und - mit entsprechender Einstellung - PNG) und lasse diese Dateien dann durch den Viewer in das JPEG2000-Format konvertieren und hochladen.
Außerdem behaupte ich mal, dass nicht die Qualitätseinstellung beim Speichern der Grafik entscheidend ist, sondern die Größe der Textur. Wenn ich auf Details verzichten kann verwende ich also lieber eine kleinere Textur mit hoher Qualität als dass ich die große Textur mit einem höheren Kompressionsgrad abspeichere, denn dadurch spare ich der Grafikkarte unnötige Speichermengen ein.
Gerade bei den Meshes, die ja bis zu acht Texturen verwenden können kommt da einiges zusammen. Außerdem können Mesh-Kleidungsstücke die volle Auflösung nutzen, während die Systemklamotten auf 512x512 Pixel begrenzt sind. Daher sehen Meshes - richtig gemacht - sehr viel besser aus, können aber die Grafikkarte deutlich stärker belasten. Es hängt eben stark davon ab, wie der Ersteller mit den Möglichkeiten umgeht.
Ich hoffe, dass ich das nun halbwegs verständlich und dennoch zutreffend darstellen konnte...
Ciaoo
Sheera