Example usage for javax.media.j3d IndexedQuadArray setTextureCoordinates

List of usage examples for javax.media.j3d IndexedQuadArray setTextureCoordinates

Introduction

In this page you can find the example usage for javax.media.j3d IndexedQuadArray setTextureCoordinates.

Prototype

public void setTextureCoordinates(int texCoordSet, int index, float texCoords[]) 

Source Link

Document

Sets the texture coordinates associated with the vertices starting at the specified index in the specified texture coordinate set for this object.

Usage

From source file:SimpleTexture.java

/**
 * Build a cube from an IndexedQuadArray. This method creates the vertices
 * as a set of eight points and the normals as a set of six vectors (one for
 * each face). The data is then defined such that each vertex has a
 * different normal associated with it when it is being used for a different
 * face. The shape is created with texture coordinates so that when the
 * appearance is set it will use the appearance texture on the surface.
 * //from w w  w  . j  av a  2s  .c  o m
 * @return Node that is the shape.
 */
protected Node buildShape() {
    IndexedQuadArray indexedCube = new IndexedQuadArray(8,
            IndexedQuadArray.COORDINATES | IndexedQuadArray.NORMALS | IndexedQuadArray.TEXTURE_COORDINATE_2,
            24);
    Point3f[] cubeCoordinates = { new Point3f(1.0f, 1.0f, 1.0f), new Point3f(-1.0f, 1.0f, 1.0f),
            new Point3f(-1.0f, -1.0f, 1.0f), new Point3f(1.0f, -1.0f, 1.0f), new Point3f(1.0f, 1.0f, -1.0f),
            new Point3f(-1.0f, 1.0f, -1.0f), new Point3f(-1.0f, -1.0f, -1.0f),
            new Point3f(1.0f, -1.0f, -1.0f) };
    Vector3f[] normals = { new Vector3f(0.0f, 0.0f, 1.0f), new Vector3f(0.0f, 0.0f, -1.0f),
            new Vector3f(1.0f, 0.0f, 0.0f), new Vector3f(-1.0f, 0.0f, 0.0f), new Vector3f(0.0f, 1.0f, 0.0f),
            new Vector3f(0.0f, -1.0f, 0.0f) };
    //Define the texture coordinates. These are defined
    //as floating point pairs of values that are used to
    //map the corners of the texture image onto the vertices
    //of the face. We then define the indices into this
    //array of values in a similar way to that used for
    //the vertices and normals.
    TexCoord2f[] textCoord = { new TexCoord2f(1.0f, 1.0f), new TexCoord2f(0.0f, 1.0f),
            new TexCoord2f(0.0f, 0.0f), new TexCoord2f(1.0f, 0.0f) };
    int coordIndices[] = { 0, 1, 2, 3, 7, 6, 5, 4, 0, 3, 7, 4, 5, 6, 2, 1, 0, 4, 5, 1, 6, 7, 3, 2 };
    int normalIndices[] = { 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5 };
    int textIndices[] = { 0, 1, 2, 3, 3, 0, 1, 2, 1, 2, 3, 0, 1, 2, 3, 0, 3, 0, 1, 2, 1, 2, 3, 0 };
    indexedCube.setCoordinates(0, cubeCoordinates);
    indexedCube.setCoordinateIndices(0, coordIndices);
    indexedCube.setNormals(0, normals);
    indexedCube.setNormalIndices(0, normalIndices);
    indexedCube.setTextureCoordinates(0, 0, textCoord);
    indexedCube.setTextureCoordinateIndices(0, 0, textIndices);
    return new Shape3D(indexedCube, DefineAppearance());
}