1+ import in.omerjerk.processing.video.android.* ;
2+
3+ Capture cameraTex;
4+ float rotx = PI / 4 ;
5+ float roty = PI / 4 ;
6+
7+ void setup () {
8+ fullScreen(P3D );
9+
10+ String [] cameras = Capture . list();
11+ cameraTex = new Capture (this , cameras[0 ]);
12+ cameraTex. start();
13+ textureMode (NORMAL );
14+ fill (255 );
15+ stroke (color (44 ,48 ,32 ));
16+ }
17+
18+ void draw () {
19+ cameraTex. read();
20+ background (255 );
21+ noStroke ();
22+ translate (width / 2.0 , height / 2.0 , - 100 );
23+ rotateX (rotx);
24+ rotateY (roty);
25+ scale (230 );
26+ TexturedCube (cameraTex);
27+ }
28+
29+ void TexturedCube (PImage tex ) {
30+ beginShape (QUADS );
31+ texture (tex);
32+
33+ // Given one texture and six faces, we can easily set up the uv coordinates
34+ // such that four of the faces tile "perfectly" along either u or v, but the other
35+ // two faces cannot be so aligned. This code tiles "along" u, "around" the X/Z faces
36+ // and fudges the Y faces - the Y faces are arbitrarily aligned such that a
37+ // rotation along the X axis will put the "top" of either texture at the "top"
38+ // of the screen, but is not otherwised aligned with the X/Z faces. (This
39+ // just affects what type of symmetry is required if you need seamless
40+ // tiling all the way around the cube)
41+
42+ // +Z "front" face
43+ vertex (- 1 , - 1 , 1 , 0 , 0 );
44+ vertex ( 1 , - 1 , 1 , 1 , 0 );
45+ vertex ( 1 , 1 , 1 , 1 , 1 );
46+ vertex (- 1 , 1 , 1 , 0 , 1 );
47+
48+ // -Z "back" face
49+ vertex ( 1 , - 1 , - 1 , 0 , 0 );
50+ vertex (- 1 , - 1 , - 1 , 1 , 0 );
51+ vertex (- 1 , 1 , - 1 , 1 , 1 );
52+ vertex ( 1 , 1 , - 1 , 0 , 1 );
53+
54+ // +Y "bottom" face
55+ vertex (- 1 , 1 , 1 , 0 , 0 );
56+ vertex ( 1 , 1 , 1 , 1 , 0 );
57+ vertex ( 1 , 1 , - 1 , 1 , 1 );
58+ vertex (- 1 , 1 , - 1 , 0 , 1 );
59+
60+ // -Y "top" face
61+ vertex (- 1 , - 1 , - 1 , 0 , 0 );
62+ vertex ( 1 , - 1 , - 1 , 1 , 0 );
63+ vertex ( 1 , - 1 , 1 , 1 , 1 );
64+ vertex (- 1 , - 1 , 1 , 0 , 1 );
65+
66+ // +X "right" face
67+ vertex ( 1 , - 1 , 1 , 0 , 0 );
68+ vertex ( 1 , - 1 , - 1 , 1 , 0 );
69+ vertex ( 1 , 1 , - 1 , 1 , 1 );
70+ vertex ( 1 , 1 , 1 , 0 , 1 );
71+
72+ // -X "left" face
73+ vertex (- 1 , - 1 , - 1 , 0 , 0 );
74+ vertex (- 1 , - 1 , 1 , 1 , 0 );
75+ vertex (- 1 , 1 , 1 , 1 , 1 );
76+ vertex (- 1 , 1 , - 1 , 0 , 1 );
77+
78+ endShape ();
79+ }
80+
81+ void mouseDragged () {
82+ float rate = 0.01 ;
83+ rotx += (pmouseY - mouseY ) * rate;
84+ roty += (mouseX - pmouseX ) * rate;
85+ }
0 commit comments