Das mit der Seitenlänge wurde schon genannt: die folgt der Formel 2^n mit n zwichen 2 und 10, d.h. Bilder können eine Seitenlänge zwischen 4 und 1024 Pixel haben.
Beim Hochladen wird das Bild über llimage.h bzw. llimage.cpp in ein 2^n Format gewandelt:
Wenn die Seitenlänge zwischen 2^(n-1) und 2^n liegt, dann wird erst dann auf 2^n skaliert, wenn die Seitenlänge > (2^(n-1) * 1,75) ist.
dabei wird bewusst nicht in der Mitte zwischen 2^(n-1) und 2^n gewechselt (also bei 1.5), sondern gezielt bei 1.75 um durch die vermehrt kleineren Bilder Bandbreite und Ressourcen zu sparen.
Beispiel: Seitenlänge sei 600 pixel.
Mit n = 10 ist 2^(10-1) = 2^9 = 512. 2^10 = 1024.
Erst ab 512*1.75 = 896 Pixel wird auf 1024 hochskaliert, also wird das Bild vermutlich wohl auf 512 Pixel Seitenlänge skaliert werden.
Ein Bid mit 240 Pixeln liegt zwischen 2^7 und 2^8. Da es größer als 2^7 * 1.75 = 224 Pixel ist wird es zu einem Bild mit Seitenlänge 256 Pixel.
Genrell reichen 512x512 Bilder in den meisten Fällen völlig aus, einen Unterschied zwischen einer 512x512 und einer 1024x1024
Textur sieht man nach dem Rendern erst, wenn man die
Textur auf wirklich große Flächen aufzieht, selbst wenn man Schrift usw. verwendet.
Dass die 5 einzelnen gerenderten
Texturen am Ava letztendlich selbst (Kopf, Augen, Oberkörper, Haare, Unterkörper, Rock) alle stets 512x512 haben, das hab ich oben erwähnt. Das ist so in llvoavatar.h festgelegt.
Wenn die
Texturen mit 1024x1024 hochgeladen werden dann schärfer aussehen auf den Kleidern, dann liegt das an den jpeg2000 bei der Skalierung von 1024 auf 512 Pixel, d.h. da wird unscharf maskiert. Pixelgenau arbeiten kann man bei Kleidung aber nur mit 512x512 Texturen.
Das liegt daran, dass der
Skin im Inventory möglicherweise zwar mit 5
Texturen mit bis zu 1024x1024 erstellt wird, aber intern werden daraus 5
Texturen mit 512x512 gemacht.
Anschließend wird aus den jeweiligen verschiedenen Lagen Kleidung (z.B. Unterkörper, Unterhose, Hose, Socken, Schuhe) eine neue
Textur "Unterkörper" im Format 512x512 zusammengebacken, die dann an die anderen Viewer gesendet wird.
D.h. da wird auch nicht jedes Kleidungsstück einzeln übertragen, jeder Ava sendet immer diese 5
Texturen mit 512x512, egal ob er nackt ist oder irgendwelche Klamotten anhat.
Eine 1024x1024
Textur benötigt eben 4 mal so viel Grafikspeicher wie eine 512x512 Textur. Deswegen wurde das am Ava auf 512x512 festgelegt, da dort bei jedem Kleidungswechsel bis zu 5
Texturen neu zusammengesetzt werden müssen...
Ausserdem verwendet
SL noch andere Seitenverhältnisse für mache Bilder, d.h. die Bilder, die man hochladen kann werden dort verzerrt.
Dabei werden folgende Seitenverhältnisse verwendet:
1:1
für Gruppeninsignien und 1st Life Bilder.
4:3
für 2nd Life Profil Pics
10:7
für die Bilder in der Suche und in den Landmarks
16:9
für die Profil Picks Bilder
Wenn man ein richtiges Seitenverhältnis will in diesen Bilden, dann muss man die eben entsprechend "Vorverzerren" so dass sie dann in
SL richtig dargestellt werden.