14_ev_example_virtual_panoramic_3d.pd 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. #N canvas 512 58 723 480 10;
  2. #X declare -path . -path .. -path data -path ../data -path ev-in -path
  3. ../ev-in -path ev-main -path ../ev-main -path ev-pano -path ../ev-pano
  4. -path ev-pro -path ../ev-pro -path libs/gil -path ../libs/gil -path
  5. libs/kollabs -path ../libs/kollabs -path media -path ../media -path
  6. ev-glsl -path ../ev-glsl -lib Gem;
  7. #X obj 14 14 cnv 15 700 30 empty empty EXAMPLE:_Virtual_Panoramic_Camera_Inside_3D_Scenery
  8. 20 12 0 14 -1 -262144 0;
  9. #N canvas 33 262 548 468 init 0;
  10. #X obj 56 92 loadbang;
  11. #X obj 83 138 del 1000;
  12. #X obj 56 114 t b b;
  13. #X obj 56 231 del 3000;
  14. #X text 159 140 load the preset file on startup:;
  15. #X obj 158 43 ev-main/ev_declare;
  16. #X text 173 232 (pathes relative to libs/kollabs);
  17. #X text 66 272 Recall scene '0' from the loaded preset file:;
  18. #X msg 56 298 \; /ds/vpano/scene 0 \; rendering 1 \; projection 1 \;
  19. rotation 1 \;;
  20. #X msg 83 169 \; /ds/vpano/loadfile ../../data/ev_example_virtual_panoramic_3d.txt
  21. ;
  22. #X connect 0 0 2 0;
  23. #X connect 1 0 9 0;
  24. #X connect 2 0 3 0;
  25. #X connect 2 1 1 0;
  26. #X connect 3 0 8 0;
  27. #X restore 15 52 pd init;
  28. #X obj 182 104 loadbang;
  29. #N canvas 483 206 687 395 projection 0;
  30. #X obj 42 56 inlet gemlist;
  31. #X obj 235 56 inlet texture_id;
  32. #N canvas 56 138 1012 479 texcoords 0;
  33. #X obj -5 50 r /ev/buf/vpanocam/dimen/x;
  34. #X msg 687 200 \; /ev/pro/c/texture/top/right/x \$1 \; /ev/pro/c/texture/bottom/right/x
  35. \$1 \;;
  36. #X obj 452 174 * 2;
  37. #X obj 217 112 / 4;
  38. #X obj 687 172 * 3;
  39. #X obj -5 169 b;
  40. #X obj -5 284 r /ev/buf/vpanocam/dimen/y;
  41. #X msg 241 350 \; /ev/pro/a/texture/top/left/y \$1 \; /ev/pro/a/texture/top/right/y
  42. \$1 \; /ev/pro/b/texture/top/left/y \$1 \; /ev/pro/b/texture/top/right/y
  43. \$1 \; /ev/pro/c/texture/top/left/y \$1 \; /ev/pro/c/texture/top/right/y
  44. \$1 \;;
  45. #X obj -5 317 b;
  46. #X msg -5 350 \; /ev/pro/a/texture/bottom/left/y 0 \; /ev/pro/a/texture/bottom/right/y
  47. 0 \; /ev/pro/b/texture/bottom/left/y 0 \; /ev/pro/b/texture/bottom/right/y
  48. 0 \; /ev/pro/c/texture/bottom/left/y 0 \; /ev/pro/c/texture/bottom/right/y
  49. 0 \;;
  50. #X msg 217 200 \; /ev/pro/a/texture/top/right/x \$1 \; /ev/pro/a/texture/bottom/right/x
  51. \$1 \; /ev/pro/b/texture/top/left/x \$1 \; /ev/pro/b/texture/bottom/left/x
  52. \$1 \;;
  53. #X msg 452 200 \; /ev/pro/b/texture/top/right/x \$1 \; /ev/pro/b/texture/bottom/right/x
  54. \$1 \; /ev/pro/c/texture/top/left/x \$1 \; /ev/pro/c/texture/bottom/left/x
  55. \$1 \;;
  56. #X msg -5 200 \; /ev/pro/a/texture/top/left/x 0 \; /ev/pro/a/texture/bottom/left/x
  57. 0 \;;
  58. #X connect 0 0 3 0;
  59. #X connect 0 0 5 0;
  60. #X connect 2 0 11 0;
  61. #X connect 3 0 2 0;
  62. #X connect 3 0 4 0;
  63. #X connect 3 0 10 0;
  64. #X connect 4 0 1 0;
  65. #X connect 5 0 12 0;
  66. #X connect 6 0 7 0;
  67. #X connect 6 0 8 0;
  68. #X connect 8 0 9 0;
  69. #X restore 42 349 pd texcoords;
  70. #X obj 42 260 ev_pro_22 a vpano;
  71. #X obj 252 260 ev_pro_22 b vpano;
  72. #X obj 462 260 ev_pro_22 c vpano;
  73. #X obj 42 88 t a a a;
  74. #X connect 0 0 6 0;
  75. #X connect 1 0 3 1;
  76. #X connect 1 0 4 1;
  77. #X connect 1 0 5 1;
  78. #X connect 6 0 3 0;
  79. #X connect 6 1 4 0;
  80. #X connect 6 2 5 0;
  81. #X restore 29 414 pd projection;
  82. #N canvas 112 22 1208 756 vpanocam 0;
  83. #X obj 29 115 ev_pano_group vpanocam vpano;
  84. #X obj 118 334 ev_pano_stitch vcam_a vpano;
  85. #X obj 1147 -217 loadbang;
  86. #X obj 44 -111 ev_buf vcam_a vpano;
  87. #X obj 324 -111 ev_buf vcam_b vpano;
  88. #X obj 604 -111 ev_buf vcam_c vpano;
  89. #X obj 884 -111 ev_buf vcam_d vpano;
  90. #X obj 324 -32 rotateXYZ 0 90 0;
  91. #X obj 604 -30 rotateXYZ 0 180 0;
  92. #X obj 884 -29 rotateXYZ 0 270 0;
  93. #X msg 1147 -195 perspec -1 1 -1 1 1 1000;
  94. #X obj 1197 93 translateXYZ 0 -1 0;
  95. #X obj 1197 214 rotateXYZ 0 0 0;
  96. #X obj 29 28 ev_buf vpanocam vpano;
  97. #X obj 1226 150 r /ev/vpanocam/rot/x;
  98. #X obj 1255 170 r /ev/vpanocam/rot/y;
  99. #X obj 1284 190 r /ev/vpanocam/rot/z;
  100. #X obj 29 -236 inlet gemlist;
  101. #X obj 1234 3 r /ev/vpanocam/pos/x;
  102. #X obj 1271 25 r /ev/vpanocam/pos/y;
  103. #X obj 1308 47 r /ev/vpanocam/pos/z;
  104. #X obj 1315 360 outlet texture_id;
  105. #X obj 1234 25 * -1;
  106. #X obj 1271 47 * -1;
  107. #X obj 1308 69 * -1;
  108. #X obj 1197 116 rotateXYZ 90 0 0;
  109. #X obj 678 334 ev_pano_stitch vcam_c vpano;
  110. #X obj 398 334 ev_pano_stitch vcam_b vpano;
  111. #X obj 958 334 ev_pano_stitch vcam_d vpano;
  112. #N canvas 0 22 450 300 calib 0;
  113. #X obj 114 109 gemhead 100;
  114. #X obj 114 171 pix_texture;
  115. #X obj 114 193 square 4;
  116. #X obj 114 30 loadbang;
  117. #X msg 114 52 0;
  118. #X obj 130 77 r /ev/vpanocam/calib;
  119. #X obj 278 76 inlet texture_id;
  120. #X connect 0 0 1 0;
  121. #X connect 1 0 2 0;
  122. #X connect 3 0 4 0;
  123. #X connect 4 0 0 0;
  124. #X connect 5 0 0 0;
  125. #X connect 6 0 1 1;
  126. #X restore 243 115 pd calib;
  127. #X obj 1197 360 outlet gemlist;
  128. #X obj 29 -204 t a a a a a;
  129. #N canvas 0 22 618 385 parameters 0;
  130. #X obj 42 57 r /ev/buf/vpanocam/dimen/x;
  131. #X obj 42 79 / 4;
  132. #X obj 42 101 int;
  133. #X msg 42 126 \; /ev/buf/vcam_a/dimen/x \$1 \; /ev/buf/vcam_a/dimen/y
  134. \$1 \; /ev/buf/vcam_b/dimen/x \$1 \; /ev/buf/vcam_b/dimen/y \$1 \;
  135. /ev/buf/vcam_c/dimen/x \$1 \; /ev/buf/vcam_c/dimen/y \$1 \; /ev/buf/vcam_d/dimen/x
  136. \$1 \; /ev/buf/vcam_d/dimen/y \$1 \; /ev/pano/stitch/vcam_a/dimen/x
  137. \$1 \; /ev/pano/stitch/vcam_a/dimen/y \$1 \; /ev/pano/stitch/vcam_b/dimen/x
  138. \$1 \; /ev/pano/stitch/vcam_b/dimen/y \$1 \; /ev/pano/stitch/vcam_c/dimen/x
  139. \$1 \; /ev/pano/stitch/vcam_c/dimen/y \$1 \; /ev/pano/stitch/vcam_d/dimen/x
  140. \$1 \; /ev/pano/stitch/vcam_d/dimen/y \$1 \;;
  141. #X obj 294 73 loadbang;
  142. #X msg 294 95 \; /ev/buf/vcam_a/shift/z 4 \; /ev/buf/vcam_b/shift/z
  143. 4 \; /ev/buf/vcam_c/shift/z 4 \; /ev/buf/vcam_d/shift/z 4 \;;
  144. #X connect 0 0 1 0;
  145. #X connect 1 0 2 0;
  146. #X connect 2 0 3 0;
  147. #X connect 4 0 5 0;
  148. #X restore 1240 -84 pd parameters;
  149. #N canvas 0 22 450 300 storage 0;
  150. #X obj 92 62 ds_reg vpano /ev/vpanocam/pos/x;
  151. #X obj 92 82 ds_reg vpano /ev/vpanocam/pos/y;
  152. #X obj 92 102 ds_reg vpano /ev/vpanocam/pos/z;
  153. #X restore 1240 -104 pd storage;
  154. #X obj 1197 312 scaleXYZ 27 27 1;
  155. #X connect 0 1 1 0;
  156. #X connect 0 2 27 0;
  157. #X connect 0 3 26 0;
  158. #X connect 0 4 28 0;
  159. #X connect 2 0 10 0;
  160. #X connect 3 0 11 0;
  161. #X connect 3 1 1 1;
  162. #X connect 4 0 7 0;
  163. #X connect 4 1 27 1;
  164. #X connect 5 0 8 0;
  165. #X connect 5 1 26 1;
  166. #X connect 6 0 9 0;
  167. #X connect 6 1 28 1;
  168. #X connect 7 0 11 0;
  169. #X connect 8 0 11 0;
  170. #X connect 9 0 11 0;
  171. #X connect 10 0 3 1;
  172. #X connect 10 0 4 1;
  173. #X connect 10 0 5 1;
  174. #X connect 10 0 6 1;
  175. #X connect 11 0 25 0;
  176. #X connect 12 0 34 0;
  177. #X connect 13 0 0 0;
  178. #X connect 13 1 21 0;
  179. #X connect 13 1 29 0;
  180. #X connect 14 0 12 1;
  181. #X connect 15 0 12 2;
  182. #X connect 16 0 12 3;
  183. #X connect 17 0 31 0;
  184. #X connect 18 0 22 0;
  185. #X connect 19 0 23 0;
  186. #X connect 20 0 24 0;
  187. #X connect 22 0 11 1;
  188. #X connect 23 0 11 2;
  189. #X connect 24 0 11 3;
  190. #X connect 25 0 12 0;
  191. #X connect 31 0 13 0;
  192. #X connect 31 1 3 0;
  193. #X connect 31 2 4 0;
  194. #X connect 31 3 5 0;
  195. #X connect 31 4 6 0;
  196. #X connect 34 0 30 0;
  197. #X restore 133 361 pd vpanocam;
  198. #N canvas 1508 284 662 502 rendering 1;
  199. #X obj 35 -158 inlet gemlist;
  200. #X obj 203 -31 loadbang;
  201. #X msg 111 14 1;
  202. #X obj 111 -31 r /wave/reset;
  203. #X obj 111 -9 b;
  204. #X obj 304 63 * 50;
  205. #X obj 384 63 * 50;
  206. #X obj 304 105 pack 0 0 0;
  207. #X obj 304 127 list prepend force;
  208. #X obj 304 149 list trim;
  209. #N canvas 0 22 443 489 damping 0;
  210. #X obj 116 67 / 100;
  211. #X msg 116 86 K1 \$1;
  212. #X obj 147 217 / 100;
  213. #X obj 147 377 / 100;
  214. #X obj 197 117 / 100;
  215. #X obj 197 247 / 100;
  216. #X obj 197 377 / 100;
  217. #X msg 197 136 D1 \$1;
  218. #X msg 197 266 D2 \$1;
  219. #X msg 197 396 D3 \$1;
  220. #X msg 147 396 K3 \$1;
  221. #X msg 147 236 K2 \$1;
  222. #X obj 116 293 t a;
  223. #X obj 116 193 t a;
  224. #X obj 116 423 t a;
  225. #X obj 116 38 r /wave/k1;
  226. #X obj 196 91 r /wave/d1;
  227. #X obj 147 191 r /wave/k2;
  228. #X obj 197 223 r /wave/d2;
  229. #X obj 147 325 r /wave/k3;
  230. #X obj 197 354 r /wave/d3;
  231. #X obj 116 445 outlet;
  232. #X connect 0 0 1 0;
  233. #X connect 1 0 13 0;
  234. #X connect 2 0 11 0;
  235. #X connect 3 0 10 0;
  236. #X connect 4 0 7 0;
  237. #X connect 5 0 8 0;
  238. #X connect 6 0 9 0;
  239. #X connect 7 0 13 0;
  240. #X connect 8 0 12 0;
  241. #X connect 9 0 14 0;
  242. #X connect 10 0 14 0;
  243. #X connect 11 0 12 0;
  244. #X connect 12 0 14 0;
  245. #X connect 13 0 12 0;
  246. #X connect 14 0 21 0;
  247. #X connect 15 0 0 0;
  248. #X connect 16 0 4 0;
  249. #X connect 17 0 2 0;
  250. #X connect 18 0 5 0;
  251. #X connect 19 0 3 0;
  252. #X connect 20 0 6 0;
  253. #X restore 203 149 pd damping;
  254. #X obj 304 -84 t b b b;
  255. #X obj 304 -32 random 1000;
  256. #X obj 304 -10 / 999;
  257. #X obj 462 -32 random 1000;
  258. #X obj 462 -10 / 999;
  259. #X obj 304 -131 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1
  260. 1 1;
  261. #X obj 462 63 * -100;
  262. #X obj 304 -157 loadbang;
  263. #X obj 125 -158 inlet bang;
  264. #N canvas 3 58 450 300 storage 0;
  265. #X obj 128 112 ds_reg vpano /wave/k1;
  266. #X obj 128 132 ds_reg vpano /wave/k2;
  267. #X obj 128 152 ds_reg vpano /wave/k3;
  268. #X obj 128 172 ds_reg vpano /wave/d1;
  269. #X obj 128 192 ds_reg vpano /wave/d2;
  270. #X obj 128 212 ds_reg vpano /wave/d3;
  271. #X restore 516 132 pd storage;
  272. #X obj 35 -114 pix_texture;
  273. #X msg 203 -7 draw fill;
  274. #X obj 304 -106 metro 3000;
  275. #X obj 384 -32 random 1000;
  276. #X obj 384 -10 / 999;
  277. #X obj 36 237 newWave 50 50;
  278. #X obj 87 -64 loadbang;
  279. #X obj 35 -136 pix_image media/grid.jpg;
  280. #X connect 0 0 28 0;
  281. #X connect 1 0 22 0;
  282. #X connect 2 0 26 3;
  283. #X connect 3 0 4 0;
  284. #X connect 4 0 2 0;
  285. #X connect 5 0 7 0;
  286. #X connect 6 0 7 1;
  287. #X connect 7 0 8 0;
  288. #X connect 8 0 9 0;
  289. #X connect 9 0 26 0;
  290. #X connect 10 0 26 0;
  291. #X connect 11 0 12 0;
  292. #X connect 11 1 24 0;
  293. #X connect 11 2 14 0;
  294. #X connect 12 0 13 0;
  295. #X connect 13 0 5 0;
  296. #X connect 14 0 15 0;
  297. #X connect 15 0 17 0;
  298. #X connect 16 0 23 0;
  299. #X connect 17 0 7 2;
  300. #X connect 18 0 16 0;
  301. #X connect 19 0 26 0;
  302. #X connect 21 0 26 0;
  303. #X connect 22 0 26 0;
  304. #X connect 23 0 11 0;
  305. #X connect 24 0 25 0;
  306. #X connect 25 0 6 0;
  307. #X connect 27 0 4 0;
  308. #X connect 28 0 21 0;
  309. #X coords 0 502 1 501 85 60 0;
  310. #X restore 133 414 pd rendering;
  311. #X obj 29 335 gemhead 51;
  312. #X obj 133 295 gemhead 50;
  313. #X obj 273 269 cnv 15 250 150 empty empty Virtual_Panoramic_Camera
  314. 20 12 0 14 -228856 -66577 0;
  315. #X obj 289 309 tgl 15 0 /ev/vpanocam/calib /ev/vpanocam/calib calib
  316. 17 7 0 10 -262144 -1 -1 0 1;
  317. #X obj 288 350 nbx 5 14 -1e+37 1e+37 0 0 /ev/buf/vpanocam/dimen/x /ev/buf/vpanocam/dimen/x
  318. dimen/x 0 -8 0 10 -262144 -1 -1 1024 256;
  319. #X obj 288 380 nbx 5 14 -1e+37 1e+37 0 0 /ev/buf/vpanocam/dimen/y /ev/buf/vpanocam/dimen/y
  320. dimen/y 0 -8 0 10 -262144 -1 -1 512 256;
  321. #X obj 354 320 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/pos/x /ev/vpanocam/pos/x
  322. pos/x 0 -8 0 10 -262144 -1 -1 0 256;
  323. #X obj 354 350 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/pos/y /ev/vpanocam/pos/y
  324. pos/y 0 -8 0 10 -262144 -1 -1 3 256;
  325. #X obj 354 380 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/pos/z /ev/vpanocam/pos/z
  326. pos/z 0 -8 0 10 -262144 -1 -1 0 256;
  327. #X obj 424 380 nbx 5 14 -1e+37 1e+37 0 0 /ev/vpanocam/rot/z /ev/vpanocam/rot/z
  328. rot/z 0 -8 0 10 -262144 -1 -1 177.84 256;
  329. #X obj 29 312 tgl 15 0 empty projection projection 17 7 0 10 -262144
  330. -1 -1 1 1;
  331. #X obj 133 272 tgl 15 0 empty rendering rendering 17 7 0 10 -262144
  332. -1 -1 1 1;
  333. #X obj 537 269 cnv 15 150 150 empty empty Wave 20 12 0 14 -228856 -66577
  334. 0;
  335. #X obj 556 332 nbx 5 14 -1e+37 1e+37 0 0 /wave/k1 /wave/k1 K1 0 -8
  336. 0 10 -262144 -1 -1 5 256;
  337. #X obj 556 362 nbx 5 14 -1e+37 1e+37 0 0 /wave/k2 /wave/k2 K2 0 -8
  338. 0 10 -262144 -1 -1 3 256;
  339. #X obj 556 392 nbx 5 14 -1e+37 1e+37 0 0 /wave/k3 /wave/k3 K3 0 -8
  340. 0 10 -262144 -1 -1 0 256;
  341. #X obj 616 332 nbx 5 14 -1e+37 1e+37 0 0 /wave/d1 /wave/d1 D1 0 -8
  342. 0 10 -262144 -1 -1 2 256;
  343. #X obj 616 362 nbx 5 14 -1e+37 1e+37 0 0 /wave/d2 /wave/d2 D2 0 -8
  344. 0 10 -262144 -1 -1 1 256;
  345. #X obj 616 392 nbx 5 14 -1e+37 1e+37 0 0 /wave/d3 /wave/d3 D3 0 -8
  346. 0 10 -262144 -1 -1 1 256;
  347. #X obj 624 282 bng 15 250 50 0 /wave/reset /wave/reset reset 17 7 0
  348. 10 -262144 -1 -1;
  349. #X obj 182 155 ev_gemwin vpano;
  350. #X msg 182 128 perspec -1 1 -1 1 1 1000 \, color 0.5 0.5 0.5;
  351. #X obj 133 317 t a b;
  352. #X text 554 60 (c)2013 Marian Weger;
  353. #N canvas 0 22 450 300 rotation 0;
  354. #X obj 138 58 inlet;
  355. #X obj 197 133 loadbang;
  356. #X obj 197 177 line 0 40;
  357. #X obj 197 223 s /ev/vpanocam/rot/z;
  358. #X obj 158 202 sel 360;
  359. #X obj 138 80 sel 0 1;
  360. #X msg 138 102 stop;
  361. #X msg 197 155 0 \, 360 20000;
  362. #X connect 0 0 5 0;
  363. #X connect 1 0 7 0;
  364. #X connect 2 0 4 0;
  365. #X connect 4 0 7 0;
  366. #X connect 4 1 3 0;
  367. #X connect 5 0 6 0;
  368. #X connect 5 1 7 0;
  369. #X connect 6 0 2 0;
  370. #X connect 7 0 2 0;
  371. #X restore 424 341 pd rotation;
  372. #X obj 424 318 tgl 15 0 empty rotation rotation 17 7 0 10 -262144 -1
  373. -1 1 1;
  374. #X text 546 177 <-- click here to start!;
  375. #X text 97 52 OpenGL does not allow a 360 degrees camera. So you need
  376. to build a virtual camera array...;
  377. #X obj 14 101 ds_logic vpano;
  378. #X obj 14 124 ds_gui vpano;
  379. #X connect 2 0 27 0;
  380. #X connect 4 0 5 0;
  381. #X connect 4 1 3 1;
  382. #X connect 6 0 3 0;
  383. #X connect 7 0 28 0;
  384. #X connect 16 0 6 0;
  385. #X connect 17 0 7 0;
  386. #X connect 27 0 26 0;
  387. #X connect 28 0 4 0;
  388. #X connect 28 1 5 1;
  389. #X connect 31 0 30 0;
  390. #X coords 0 0 1 1 85 60 0;