Texturkoordinaten Pixelgenau angeben

Status
Nicht offen für weitere Antworten.
D

DiniM

Gast
Hallo,
Ich habe das Problem dass ich auf einer fläche der masse 1*1 eine Textur aufkleben will, welche genau 32 pixel lang und breit ist. Dabei soll die Textur diese fläche weder über- noch unterschreiten, d.h. sie soll genau draufpassen. Wie genau kann ich das anstellen?

Ausserdem: angeblich sind die masseinheiten in Java3D ja in metern (?). Ist es möglich, diese masseinheit umzuwandeln, also in Pixel?
 

Evil-Devil

Top Contributor
Ich vermute mal das es in Java3D auch eine Orthogonale Perspektive gibt bzw. man sie selbst erzeugen kann. In dem Fall hättest du Pixelgenaue Angaben für dein Objekt.

Aber wozu brauchst du bei einem regulären Objekt pixelgenaue Werte? Einfach 0/0 für links oben, 0/1 für rechts oben, 1/0 für links unten und 1/1 für rechts unten. Eventuell die Werte noch austauschen im Falle einer geflippten Texture.
 
D

DiniM

Gast
Code:
 SAp.setTexCoordGeneration(new TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR,
	    						  						 TexCoordGeneration.TEXTURE_COORDINATE_2,  
	    						  						 new Vector4f(1,0,0,0), 
	    						  						 new Vector4f(0,1,0,0)));

Ja das mache ich ja hier eigentlich auch, aber die Textur wird dann einfach so lange wiederholt bis das objekt vollgezeichnet ist, und nicht auf das Objekt "gespannt"
 

Lutherion

Mitglied
Man kann die Texturen skalieren mit nem Transform3D Objekt in den TextureAttributes des Appearance.

Hoffe das hilft,

mfG
 
D

DiniM

Gast
@Evil-Devil

Wenn ich das so mache wie im Tutorial krieg ich Fehlermeldungen in der Konsole und eine "deprecated"-meldung in eclipse. Scheinbar ist diese Variante schon veraltet...
Es gibt eine Klasse namens TexCoordGeneration, in der man Vector4f-Daten angeben kann. Ich weiss jedoch nicht, wie ich diese Daten anwenden muss, damit es nicht einfach die Textur kachelt, sondern die Textur auf das Objekt spannt.

Kennt sich jemand damit aus?
 
M

madman907

Gast
experimentier mal mit den Werten die Du dem Vector3f übergibst und aktuell den Wert (float)1 bei dir habem. Laut Specs sind hier 0.0f bis 1.0f zugelassen, aber dieses Limit besteht eigentich garnicht, mit den übrigen Werten definierst Du die Position wenn ich mich recht entsinne.
HTH!
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben