#N canvas 512 58 723 480 10; #X declare -path . -path .. -path data -path ../data -path ev-in -path ../ev-in -path ev-main -path ../ev-main -path ev-pano -path ../ev-pano -path ev-pro -path ../ev-pro -path libs/gil -path ../libs/gil -path libs/kollabs -path ../libs/kollabs -path media -path ../media -path ev-glsl -path ../ev-glsl -lib Gem; #X obj 14 14 cnv 15 700 30 empty empty EXAMPLE:_Virtual_Panoramic_Camera_Inside_3D_Scenery 20 12 0 14 -1 -262144 0; #N canvas 33 262 548 468 init 0; #X obj 56 92 loadbang; #X obj 83 138 del 1000; #X obj 56 114 t b b; #X obj 56 231 del 3000; #X text 159 140 load the preset file on startup:; #X obj 158 43 ev-main/ev_declare; #X text 173 232 (pathes relative to libs/kollabs); #X text 66 272 Recall scene '0' from the loaded preset file:; #X msg 56 298 \; /ds/vpano/scene 0 \; rendering 1 \; projection 1 \; rotation 1 \;; #X msg 83 169 \; /ds/vpano/loadfile ../../data/ev_example_virtual_panoramic_3d.txt ; #X connect 0 0 2 0; #X connect 1 0 9 0; #X connect 2 0 3 0; #X connect 2 1 1 0; #X connect 3 0 8 0; #X restore 15 52 pd init; #X obj 182 104 loadbang; #N canvas 483 206 687 395 projection 0; #X obj 42 56 inlet gemlist; #X obj 235 56 inlet texture_id; #N canvas 56 138 1012 479 texcoords 0; #X obj -5 50 r /ev/buf/vpanocam/dimen/x; #X msg 687 200 \; /ev/pro/c/texture/top/right/x \$1 \; /ev/pro/c/texture/bottom/right/x \$1 \;; #X obj 452 174 * 2; #X obj 217 112 / 4; #X obj 687 172 * 3; #X obj -5 169 b; #X obj -5 284 r /ev/buf/vpanocam/dimen/y; #X msg 241 350 \; /ev/pro/a/texture/top/left/y \$1 \; /ev/pro/a/texture/top/right/y \$1 \; /ev/pro/b/texture/top/left/y \$1 \; /ev/pro/b/texture/top/right/y \$1 \; /ev/pro/c/texture/top/left/y \$1 \; /ev/pro/c/texture/top/right/y \$1 \;; #X obj -5 317 b; #X msg -5 350 \; /ev/pro/a/texture/bottom/left/y 0 \; /ev/pro/a/texture/bottom/right/y 0 \; /ev/pro/b/texture/bottom/left/y 0 \; /ev/pro/b/texture/bottom/right/y 0 \; /ev/pro/c/texture/bottom/left/y 0 \; /ev/pro/c/texture/bottom/right/y 0 \;; #X msg 217 200 \; /ev/pro/a/texture/top/right/x \$1 \; /ev/pro/a/texture/bottom/right/x \$1 \; /ev/pro/b/texture/top/left/x \$1 \; /ev/pro/b/texture/bottom/left/x \$1 \;; #X msg 452 200 \; /ev/pro/b/texture/top/right/x \$1 \; /ev/pro/b/texture/bottom/right/x \$1 \; /ev/pro/c/texture/top/left/x \$1 \; /ev/pro/c/texture/bottom/left/x \$1 \;; #X msg -5 200 \; /ev/pro/a/texture/top/left/x 0 \; /ev/pro/a/texture/bottom/left/x 0 \;; #X connect 0 0 3 0; #X connect 0 0 5 0; #X connect 2 0 11 0; #X connect 3 0 2 0; #X connect 3 0 4 0; #X connect 3 0 10 0; #X connect 4 0 1 0; #X connect 5 0 12 0; #X connect 6 0 7 0; #X connect 6 0 8 0; #X connect 8 0 9 0; #X restore 42 349 pd texcoords; #X obj 42 260 ev_pro_22 a vpano; #X obj 252 260 ev_pro_22 b vpano; #X obj 462 260 ev_pro_22 c vpano; #X obj 42 88 t a a a; #X connect 0 0 6 0; #X connect 1 0 3 1; #X connect 1 0 4 1; #X connect 1 0 5 1; #X connect 6 0 3 0; #X connect 6 1 4 0; #X connect 6 2 5 0; #X restore 29 414 pd projection; #N canvas 112 22 1208 756 vpanocam 0; #X obj 29 115 ev_pano_group vpanocam vpano; #X obj 118 334 ev_pano_stitch vcam_a vpano; #X obj 1147 -217 loadbang; #X obj 44 -111 ev_buf vcam_a vpano; #X obj 324 -111 ev_buf vcam_b vpano; #X obj 604 -111 ev_buf vcam_c vpano; #X obj 884 -111 ev_buf vcam_d vpano; #X obj 324 -32 rotateXYZ 0 90 0; #X obj 604 -30 rotateXYZ 0 180 0; #X obj 884 -29 rotateXYZ 0 270 0; #X msg 1147 -195 perspec -1 1 -1 1 1 1000; #X obj 1197 93 translateXYZ 0 -1 0; #X obj 1197 214 rotateXYZ 0 0 0; #X obj 29 28 ev_buf vpanocam vpano; #X obj 1226 150 r /ev/vpanocam/rot/x; #X obj 1255 170 r /ev/vpanocam/rot/y; #X obj 1284 190 r /ev/vpanocam/rot/z; #X obj 29 -236 inlet gemlist; #X obj 1234 3 r /ev/vpanocam/pos/x; #X obj 1271 25 r /ev/vpanocam/pos/y; #X obj 1308 47 r /ev/vpanocam/pos/z; #X obj 1315 360 outlet texture_id; #X obj 1234 25 * -1; #X obj 1271 47 * -1; #X obj 1308 69 * -1; #X obj 1197 116 rotateXYZ 90 0 0; #X obj 678 334 ev_pano_stitch vcam_c vpano; #X obj 398 334 ev_pano_stitch vcam_b vpano; #X obj 958 334 ev_pano_stitch vcam_d vpano; #N canvas 0 22 450 300 calib 0; #X obj 114 109 gemhead 100; #X obj 114 171 pix_texture; #X obj 114 193 square 4; #X obj 114 30 loadbang; #X msg 114 52 0; #X obj 130 77 r /ev/vpanocam/calib; #X obj 278 76 inlet texture_id; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 3 0 4 0; #X connect 4 0 0 0; #X connect 5 0 0 0; #X connect 6 0 1 1; #X restore 243 115 pd calib; #X obj 1197 360 outlet gemlist; #X obj 29 -204 t a a a a a; #N canvas 0 22 618 385 parameters 0; #X obj 42 57 r /ev/buf/vpanocam/dimen/x; #X obj 42 79 / 4; #X obj 42 101 int; #X msg 42 126 \; /ev/buf/vcam_a/dimen/x \$1 \; /ev/buf/vcam_a/dimen/y \$1 \; /ev/buf/vcam_b/dimen/x \$1 \; /ev/buf/vcam_b/dimen/y \$1 \; /ev/buf/vcam_c/dimen/x \$1 \; /ev/buf/vcam_c/dimen/y \$1 \; /ev/buf/vcam_d/dimen/x \$1 \; /ev/buf/vcam_d/dimen/y \$1 \; /ev/pano/stitch/vcam_a/dimen/x \$1 \; /ev/pano/stitch/vcam_a/dimen/y \$1 \; /ev/pano/stitch/vcam_b/dimen/x \$1 \; /ev/pano/stitch/vcam_b/dimen/y \$1 \; /ev/pano/stitch/vcam_c/dimen/x \$1 \; /ev/pano/stitch/vcam_c/dimen/y \$1 \; /ev/pano/stitch/vcam_d/dimen/x \$1 \; /ev/pano/stitch/vcam_d/dimen/y \$1 \;; #X obj 294 73 loadbang; #X msg 294 95 \; /ev/buf/vcam_a/shift/z 4 \; /ev/buf/vcam_b/shift/z 4 \; /ev/buf/vcam_c/shift/z 4 \; /ev/buf/vcam_d/shift/z 4 \;; #X connect 0 0 1 0; #X connect 1 0 2 0; #X connect 2 0 3 0; #X connect 4 0 5 0; #X restore 1240 -84 pd parameters; #N canvas 0 22 450 300 storage 0; #X obj 92 62 ds_reg vpano /ev/vpanocam/pos/x; #X obj 92 82 ds_reg vpano /ev/vpanocam/pos/y; #X obj 92 102 ds_reg vpano /ev/vpanocam/pos/z; #X restore 1240 -104 pd storage; #X obj 1197 312 scaleXYZ 27 27 1; #X connect 0 1 1 0; #X connect 0 2 27 0; #X connect 0 3 26 0; #X connect 0 4 28 0; #X connect 2 0 10 0; #X connect 3 0 11 0; #X connect 3 1 1 1; #X connect 4 0 7 0; #X connect 4 1 27 1; #X connect 5 0 8 0; #X connect 5 1 26 1; #X connect 6 0 9 0; #X connect 6 1 28 1; #X connect 7 0 11 0; #X connect 8 0 11 0; #X connect 9 0 11 0; #X connect 10 0 3 1; #X connect 10 0 4 1; #X connect 10 0 5 1; #X connect 10 0 6 1; #X connect 11 0 25 0; #X connect 12 0 34 0; #X connect 13 0 0 0; #X connect 13 1 21 0; #X connect 13 1 29 0; #X connect 14 0 12 1; #X connect 15 0 12 2; #X connect 16 0 12 3; #X connect 17 0 31 0; #X connect 18 0 22 0; #X connect 19 0 23 0; #X connect 20 0 24 0; #X connect 22 0 11 1; #X connect 23 0 11 2; #X connect 24 0 11 3; #X connect 25 0 12 0; #X connect 31 0 13 0; #X connect 31 1 3 0; #X connect 31 2 4 0; #X connect 31 3 5 0; #X connect 31 4 6 0; #X connect 34 0 30 0; #X restore 133 361 pd vpanocam; #N canvas 1508 284 662 502 rendering 1; #X obj 35 -158 inlet gemlist; #X obj 203 -31 loadbang; #X msg 111 14 1; #X obj 111 -31 r /wave/reset; #X obj 111 -9 b; #X obj 304 63 * 50; #X obj 384 63 * 50; #X obj 304 105 pack 0 0 0; #X obj 304 127 list prepend force; #X obj 304 149 list trim; #N canvas 0 22 443 489 damping 0; #X obj 116 67 / 100; #X msg 116 86 K1 \$1; #X obj 147 217 / 100; #X obj 147 377 / 100; #X obj 197 117 / 100; #X obj 197 247 / 100; #X obj 197 377 / 100; #X msg 197 136 D1 \$1; #X msg 197 266 D2 \$1; #X msg 197 396 D3 \$1; #X msg 147 396 K3 \$1; #X msg 147 236 K2 \$1; #X obj 116 293 t a; #X obj 116 193 t a; #X obj 116 423 t a; #X obj 116 38 r /wave/k1; #X obj 196 91 r /wave/d1; #X obj 147 191 r /wave/k2; #X obj 197 223 r /wave/d2; #X obj 147 325 r /wave/k3; #X obj 197 354 r /wave/d3; #X obj 116 445 outlet; #X connect 0 0 1 0; #X connect 1 0 13 0; #X connect 2 0 11 0; #X connect 3 0 10 0; #X connect 4 0 7 0; #X connect 5 0 8 0; #X connect 6 0 9 0; #X connect 7 0 13 0; #X connect 8 0 12 0; #X connect 9 0 14 0; #X connect 10 0 14 0; #X connect 11 0 12 0; #X connect 12 0 14 0; #X connect 13 0 12 0; #X connect 14 0 21 0; #X connect 15 0 0 0; #X connect 16 0 4 0; #X connect 17 0 2 0; #X connect 18 0 5 0; #X connect 19 0 3 0; #X connect 20 0 6 0; #X restore 203 149 pd damping; #X obj 304 -84 t b b b; #X obj 304 -32 random 1000; #X obj 304 -10 / 999; #X obj 462 -32 random 1000; #X obj 462 -10 / 999; #X obj 304 -131 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1; #X obj 462 63 * -100; #X obj 304 -157 loadbang; #X obj 125 -158 inlet bang; #N canvas 3 58 450 300 storage 0; #X obj 128 112 ds_reg vpano /wave/k1; #X obj 128 132 ds_reg vpano /wave/k2; #X obj 128 152 ds_reg vpano /wave/k3; #X obj 128 172 ds_reg vpano /wave/d1; #X obj 128 192 ds_reg vpano /wave/d2; #X obj 128 212 ds_reg vpano /wave/d3; #X restore 516 132 pd storage; #X obj 35 -114 pix_texture; #X msg 203 -7 draw fill; #X obj 304 -106 metro 3000; #X obj 384 -32 random 1000; #X obj 384 -10 / 999; #X obj 36 237 newWave 50 50; #X obj 87 -64 loadbang; #X obj 35 -136 pix_image media/grid.jpg; #X connect 0 0 28 0; #X connect 1 0 22 0; #X connect 2 0 26 3; #X connect 3 0 4 0; #X connect 4 0 2 0; #X connect 5 0 7 0; #X connect 6 0 7 1; #X connect 7 0 8 0; #X connect 8 0 9 0; #X connect 9 0 26 0; #X connect 10 0 26 0; #X connect 11 0 12 0; #X connect 11 1 24 0; #X connect 11 2 14 0; #X connect 12 0 13 0; #X connect 13 0 5 0; #X connect 14 0 15 0; #X connect 15 0 17 0; #X connect 16 0 23 0; #X connect 17 0 7 2; #X connect 18 0 16 0; #X connect 19 0 26 0; #X connect 21 0 26 0; #X connect 22 0 26 0; #X connect 23 0 11 0; #X connect 24 0 25 0; #X connect 25 0 6 0; #X connect 27 0 4 0; #X connect 28 0 21 0; #X coords 0 502 1 501 85 60 0; #X restore 133 414 pd rendering; #X obj 29 335 gemhead 51; #X obj 133 295 gemhead 50; #X obj 273 269 cnv 15 250 150 empty empty Virtual_Panoramic_Camera 20 12 0 14 -228856 -66577 0; #X obj 289 309 tgl 15 0 /ev/vpanocam/calib /ev/vpanocam/calib calib 17 7 0 10 -262144 -1 -1 0 1; #X obj 288 350 nbx 5 14 -1e+37 1e+37 0 0 /ev/buf/vpanocam/dimen/x /ev/buf/vpanocam/dimen/x dimen/x 0 -8 0 10 -262144 -1 -1 1024 256; #X obj 288 380 nbx 5 14 -1e+37 1e+37 0 0 /ev/buf/vpanocam/dimen/y /ev/buf/vpanocam/dimen/y dimen/y 0 -8 0 10 -262144 -1 -1 512 256; #X obj 354 320 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/pos/x /ev/vpanocam/pos/x pos/x 0 -8 0 10 -262144 -1 -1 0 256; #X obj 354 350 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/pos/y /ev/vpanocam/pos/y pos/y 0 -8 0 10 -262144 -1 -1 3 256; #X obj 354 380 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/pos/z /ev/vpanocam/pos/z pos/z 0 -8 0 10 -262144 -1 -1 0 256; #X obj 424 380 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/rot/z /ev/vpanocam/rot/z rot/z 0 -8 0 10 -262144 -1 -1 177.84 256; #X obj 29 312 tgl 15 0 empty projection projection 17 7 0 10 -262144 -1 -1 1 1; #X obj 133 272 tgl 15 0 empty rendering rendering 17 7 0 10 -262144 -1 -1 1 1; #X obj 537 269 cnv 15 150 150 empty empty Wave 20 12 0 14 -228856 -66577 0; #X obj 556 332 nbx 5 14 -1e+37 1e+37 0 0 /wave/k1 /wave/k1 K1 0 -8 0 10 -262144 -1 -1 5 256; #X obj 556 362 nbx 5 14 -1e+37 1e+37 0 0 /wave/k2 /wave/k2 K2 0 -8 0 10 -262144 -1 -1 3 256; #X obj 556 392 nbx 5 14 -1e+37 1e+37 0 0 /wave/k3 /wave/k3 K3 0 -8 0 10 -262144 -1 -1 0 256; #X obj 616 332 nbx 5 14 -1e+37 1e+37 0 0 /wave/d1 /wave/d1 D1 0 -8 0 10 -262144 -1 -1 2 256; #X obj 616 362 nbx 5 14 -1e+37 1e+37 0 0 /wave/d2 /wave/d2 D2 0 -8 0 10 -262144 -1 -1 1 256; #X obj 616 392 nbx 5 14 -1e+37 1e+37 0 0 /wave/d3 /wave/d3 D3 0 -8 0 10 -262144 -1 -1 1 256; #X obj 624 282 bng 15 250 50 0 /wave/reset /wave/reset reset 17 7 0 10 -262144 -1 -1; #X obj 182 155 ev_gemwin vpano; #X msg 182 128 perspec -1 1 -1 1 1 1000 \, color 0.5 0.5 0.5; #X obj 133 317 t a b; #X text 554 60 (c)2013 Marian Weger; #N canvas 0 22 450 300 rotation 0; #X obj 138 58 inlet; #X obj 197 133 loadbang; #X obj 197 177 line 0 40; #X obj 197 223 s /ev/vpanocam/rot/z; #X obj 158 202 sel 360; #X obj 138 80 sel 0 1; #X msg 138 102 stop; #X msg 197 155 0 \, 360 20000; #X connect 0 0 5 0; #X connect 1 0 7 0; #X connect 2 0 4 0; #X connect 4 0 7 0; #X connect 4 1 3 0; #X connect 5 0 6 0; #X connect 5 1 7 0; #X connect 6 0 2 0; #X connect 7 0 2 0; #X restore 424 341 pd rotation; #X obj 424 318 tgl 15 0 empty rotation rotation 17 7 0 10 -262144 -1 -1 1 1; #X text 546 177 <-- click here to start!; #X text 97 52 OpenGL does not allow a 360 degrees camera. So you need to build a virtual camera array...; #X obj 14 101 ds_logic vpano; #X obj 14 124 ds_gui vpano; #X connect 2 0 27 0; #X connect 4 0 5 0; #X connect 4 1 3 1; #X connect 6 0 3 0; #X connect 7 0 28 0; #X connect 16 0 6 0; #X connect 17 0 7 0; #X connect 27 0 26 0; #X connect 28 0 4 0; #X connect 28 1 5 1; #X connect 31 0 30 0; #X coords 0 0 1 1 85 60 0;