|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
[Java3d] Pavimenti con texture
Codice:
private TransformGroup creaPavimento() {
Texture texture = (new TextureLoader("textures/autobloccanti.jpg", this))
.getTexture();
float l = 60f; // (float) lato;
texture.setMagFilter(Texture.NICEST);
texture.setMipMapMode(Texture.BASE_LEVEL);
Appearance apparence = new Appearance();
apparence.setTexture(texture);
Box pavimento = new Box(l, 0.1f, l, Box.GENERATE_TEXTURE_COORDS, apparence);
GeometryArray g = (GeometryArray) pavimento.getShape(Box.TOP)
.getGeometry();
TexCoord2f[] tx = new TexCoord2f[g.getVertexCount()];
for (int k = 0; k < tx.length; k++) {
tx[k] = new TexCoord2f();
}
g.getTextureCoordinates(0, 0, tx);
for (TexCoord2f t : tx) {
t.scale(2f);
}
g.setTextureCoordinates(0, 0, tx);
pavimento.getShape(Box.TOP).setAppearance(apparence);
Transform3D transf = new Transform3D();
TransformGroup tg = new TransformGroup();
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Vector3f posizione = new Vector3f(0, -2.5f, 0);
transf.setTranslation(posizione);
tg.setTransform(transf);
tg.addChild(pavimento);
return tg;
}
solo che non riesco a trovare il codice per "replicare" questa texture, ovvero me ne crea una ma poi tutto il resto è vuoto. considerando che bene o male io sò la dimensione massima del mio "mondo", come faccio a fargliela replicaer?
__________________
My gaming placement |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
allora gho trovato qeusta vecchia discussione:
http://www.hwupgrade.it/forum/showthread.php?t=1952043 (P.S.: tramite google, con la ricerca interna non l'aveva trovata O_O) solo che non riesco a fare quello che voglio praticamente io creo un box 1000x1000 e voglio replicare su di lui la stessa texture. non riesco e ci sto sbattendo abbastanza
__________________
My gaming placement |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
continuando a spulciare ho trovato questo....
apparence.setTexCoordGeneration(new TexCoordGeneration()); però ora la texture la restringe troppo e sembra una immagine "diversa"...
__________________
My gaming placement |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
up
__________________
My gaming placement |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
Puoi replicare un'immagine su una superficie usando WRAP come valore per i metodi setBoundary S e T di un oggetto Texture E avendo un set di coordinate per le texture che ecceda il range [0,1]. Vale a dire che se ho un quadrato le cui coordinate texture vanno da (0,0) per un estremo a (4,4) per l'altro e uso un oggetto Texture in modalità "WRAP" l'immagine della texture sarà replicata 4 volte (lungo il lato, quindi 16 tile sulla superficie).
TexCoordGeneration "replica troppo" perch produce un set di coodinate usando una formula tipo: u = x + z v = y che genera valori eccedenti il range [0,1] per una superficie piana sufficientemente estesa.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
Quote:
__________________
My gaming placement |
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
|
La dimensione dell'immagine non contribuisce alla dimensione della sua proiezione sulla superficie 3d ma stabilisce la risoluzione di quella proiezione.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me! Ultima modifica di PGI-Bis : 18-03-2010 alle 15:31. Motivo: ei ie... |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
|
ok, dopo provo a fare come mi hai suggerito
__________________
My gaming placement |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:55.




















