Pages: [1]   Go Down
Print
Author Topic: Pavimento con Texture  (Read 912 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Rebel
Matricola
*
Offline Offline

Gender: Male
Posts: 75



« on: 23-03-2009, 16:19:34 »

Salve a tutti,
come da oggetto mi interesserebbe realizzare un pavimento con texture. L'effetto "desiderato" mi riesce soltanto se  posiziono il quadarray da texturizzare in verticale, tramite il seguente codice:

Code:
    public Floor (float xPos, float yPos, float zPos, float width, float depth, String texturePath) {
        // * Creating Quad Array Texturized Object *
        QuadArray qa = new QuadArray(4, GeometryArray.COORDINATES | GeometryArray.TEXTURE_COORDINATE_2);
        // Setting Vertex Coordinates
qa.setCoordinate(0, new Point3f(xPos, zPos, yPos));
qa.setCoordinate(1, new Point3f(xPos+width*2, zPos, yPos));
qa.setCoordinate(2, new Point3f(xPos+width*2, zPos+depth*2, yPos));
qa.setCoordinate(3, new Point3f(xPos, zPos+depth*2, yPos));

        // * Mapping Texture Coordinates On Geometry QuadArray *
        TexCoord2f coordinate = new TexCoord2f();
        // Coordinate Range [0.0f, 1.0f]
coordinate.set(0.0f, 0.0f);
qa.setTextureCoordinate(0, 0, coordinate);  // 1st Point Assigned to QuadArray Vertex 0
coordinate.set(1.0f, 0.0f);
qa.setTextureCoordinate(0, 1, coordinate);  // 2nd Point Assigned to QuadArray Vertex 1
coordinate.set(1.0f, 1.0f);
qa.setTextureCoordinate(0, 2, coordinate);  // 1st Point Assigned to QuadArray Vertex 2
coordinate.set(0.0f, 1.0f);
qa.setTextureCoordinate(0, 3, coordinate);  // 1st Point Assigned to QuadArray Vertex 3

        // * Create New Appearance - Culling Disabled *
        Appearance a = new Appearance();
        a.setPolygonAttributes(new PolygonAttributes(PolygonAttributes.POLYGON_FILL, PolygonAttributes.CULL_NONE, 0.0f));
// Loading texture
TextureLoader TL = new TextureLoader(texturePath, null);
ImageComponent2D tImage;
        tImage = TL.getImage();

Texture2D texture = new Texture2D(Texture.BASE_LEVEL, Texture.RGBA, tImage.getWidth(), tImage.getHeight());
texture.setImage(0, tImage);

TexCoordGeneration mioTCG = new TexCoordGeneration(TexCoordGeneration.OBJECT_LINEAR, TexCoordGeneration.TEXTURE_COORDINATE_2);
// Imposto il TexCoordGeneration nell'Appearance
a.setTexCoordGeneration(mioTCG);

texture.setBoundaryModeS(Texture2D.WRAP);
texture.setBoundaryModeT(Texture2D.WRAP);
//texture.setBoundaryModeR(Texture2D.WRAP);

// Setting texture in the Appearance
a.setTexture(texture);
// Creating Shape By Geometry and Setting Appearance
        land = new Shape3D(qa);
land.setAppearance(a);
    }

mentre se sistemo le coordinate dei vertici in maniera "corretta" (in modo che il piano sia orizzontale sugli assi x, z) la texture non viene applicata come serve a me (ovvero nel modo più "classico", con "wrap boundary mode", ponendo le immagini una affiancata all'altra). Forse è questione che dovrei usare una texture 3d dato che mi serve estendere la mia immagine / texture sull'asse delle z?

Spero che qualcuno possa aiutarmi. Magari è una bestialità ma non mi riesce proprio.

Grazie
Logged

L'evoluzione è storia dimenticata a memoria.
Pages: [1]   Go Up
Print
Jump to: