Texturen

Previous topic - Next topic

Baggi

Hi Gernot,

ich habe mal eine Frage zu Texturen fuer 3D Objekte. Wenn man eine Bitmap Textur auf ein 3D Objekt abbildet, und das Bitmap und das 3D Objekt nicht die gleiche Groesse haben, wird die Textur gestreckt und/oder gestaucht, auf jedenfall skaliert. Dadurch bekommt man besonders dann Schwierigkeiten, wenn die Textur zB. 1024x1024 px gross ist, und das 3D Objekt zB. 10000x10000 px gross ist. Das Bitmap wird also gestreckt und die Textur verliert an Aufloesung.

Jetzt meine Frage : Gibt es eine Moeglichkeit die "kleine" Textur auf das "grosse" Objekt zu mappen ohne Aufloesungsverluste zu haben ?

Also wenn Bitmap und Objekt gleich gross sind, ist es denke ich kein Problem, aber eine 10000x10000 Bitmap ist ein Problem.

Danke und Gruss
Baggi

Kitty Hello

Ähhh... Wenn das Objekt 1000x1000x1000 ist, dann wird es (3D) an der Seite nur 300x1000 sein, weil ja durch die Tiefenwirkung was weggeht. Man wird also ein 3D Objekt nie pixelgenau mit seinen Texturen hinbekommen. Also: Textur 512x512 oder 256x256 machen und einfach draufpappen. Wenn's zu bröslig wird, einfach die Kamera weiter weg ;)

Die Textur-Pixel (Texel) werden ja weich verschmolzen.

Baggi

Hmmmm, verstehe. Kamera weiter weg loest das Problem, aber in folgender Spielszene bleibt das Problem :  

Die Spielfigur (der Held der Geschichte ;) ) ist 200px hoch, 40px breit und 40px tief. Also 40,200,40. Der Knabe bewegt sich auf einem Fussballfeld der Groesse 10000px breit, 10000px lang und da das Fussballfeld ein 3D Objekt ist, ist es auch noch 100px tief und schwebt schwerelos im Raum. Jeztzt mappe ich eine 512x512 Textur (ein Foto von einem echten Fussballfeld) auf das 3D Fussballfeld. Die Spielfigur laeuft also ueber das Fussballfeld und die Kamera befindet sich dicht hinter der Figur zB. bei einer Hoehe von 300px. Dann ist die Kamera sehr nahe am Fussballfeld und man kann die Pixel der Textur erkennen und es sieht nicht schoen aus.

Klar, wenn ich soweit mit der Kamera weggehe, dass das Feld auf dem Bildschirm nur noch etwa die Groesse von 512x512 hat, dann sieht es gut aus. Aber da sich meine Figur, die klein ist, nahe an einem Objekt befindet , welches gross ist, bekomme ich solche Aufloesungsprobleme.

Also ich denke es gibt da keine Loesung.  Es ist halt einfach so, je naeher man einem Pixelobjekt kommt, desto pixeliger wird es.

Gruss
Baggi

Kitty Hello

Ach so: Das macht man oft so, dass man die Texturkoordinate vom Fussballfeld nicht mit 1.0, sondern mit 100.0 angibt -> Damit wird die 512x512 Textur eben 100x100 auf das Spielfeld gezerrt. Das kann man bei 3D Programmen auch so angeben. Bei AC3D gibt's eine Option "Textur kacheln" oder so (Tile texture)

Baggi

Aha, unter Tile Textur kann ich mir was vorstellen. Das hoert sich ja ganz gut an. Kann GLBasic das auch ?

Baggi

Kitty Hello

klar. Bei 3D Objekten werden die Texturen weitergeführt, wenn die Tex-Coords >1  oder <0 sind.