Files
processing4/android/examples/OpenGL/TexCube/TexCube.pde
2011-06-23 04:36:23 +00:00

78 lines
2.2 KiB
Plaintext

// TexCube by Andres Colubri
// Creating a textured cube vertex by vertex using the
// PShape3D class.
PShape3D cube;
float angleX;
float angleY;
void setup() {
size(480, 800, P3D);
orientation(PORTRAIT);
// The 3D shape has to be created with the total name of vertices
// it will hold (this number cannot be changed later). Also, how
// the vertices will be connected is specified here (this can be
// changed later though).
cube = (PShape3D)createShape(36, PShape3D.newParameters(TRIANGLES));
// The vertices array gives access to all the vertex data
// in the PShape3D object. It can only be used between
// loadVertices and updateVertices. Similar thing can be done
// for colors, normals and texture coordinates (see below).
cube.loadVertices();
arrayCopy(vertArray, cube.vertices);
cube.updateVertices();
// 6 child shapes are created in order to assign different
// textures each face of the cube.
cube.addChild("Face 0", 0, 5); // First face from vertex 0 to 5.
cube.addChild("Face 1", 6, 11); // Second face from vertex 6 to 11.
cube.addChild("Face 2", 12, 17); // ...and so on.
cube.addChild("Face 3", 18, 23);
cube.addChild("Face 4", 24, 29);
cube.addChild("Face 5", 30, 35);
// The entire shape is red.
cube.setColor(color(200, 50, 50));
// Setting the normal for each face.
cube.setNormal(0, 0, 0, -1);
cube.setNormal(1, +1, 0, 0);
cube.setNormal(2, 0, 0, +1);
cube.setNormal(3, -1, 0, 0);
cube.setNormal(4, 0, +1, 0);
cube.setNormal(5, 0, -1, 0);
// Finally, setting texture images...
cube.setTexture(0, loadImage("1.jpg"));
cube.setTexture(1, loadImage("2.jpg"));
cube.setTexture(2, loadImage("3.jpg"));
cube.setTexture(3, loadImage("4.jpg"));
cube.setTexture(4, loadImage("5.jpg"));
cube.setTexture(5, loadImage("6.jpg"));
// ...and texture coordinates.
cube.loadTexcoords();
arrayCopy(tcoordArray, cube.texcoords);
cube.updateTexcoords();
}
public void draw() {
background(0);
ambient(250, 250, 250);
pointLight(255, 255, 255, 0, 0, 200);
translate(width/2, height/2, 200);
angleX += 0.01;
angleY += 0.01;
rotateX(angleX);
rotateY(angleY);
shape(cube);
}