diff options
Diffstat (limited to 'Gem/examples/02.advanced')
27 files changed, 3609 insertions, 0 deletions
diff --git a/Gem/examples/02.advanced/00.gemwin-subpatch.pd b/Gem/examples/02.advanced/00.gemwin-subpatch.pd new file mode 100644 index 0000000..5f0fc8f --- /dev/null +++ b/Gem/examples/02.advanced/00.gemwin-subpatch.pd @@ -0,0 +1,61 @@ +#N canvas 0 0 725 412 10; +#N canvas 95 194 290 179 Gem.init 0; +#X obj 83 30 loadbang; +#X msg 83 67 reset; +#X obj 83 107 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 100 115 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 100 134 pd gemwin; +#X text 247 146 just enable the toggle labeled "rendering" to create +a window and start rendering \; switching the toggle off will destroy +the window; +#X text 260 60 by now we assume that you know how to control a Gem-window +; +#X text 252 268 apart from that \, the subpatch is really the same +as [gemwin] itself \; e.g. you can send any message to it that [gemwin] +understands.; +#X text 249 204 thus you don't have to click on [create( and then [1( +anymore...; +#X text 249 113 for the sake of simplicity \, from now on the examples +will use the subpatch on the left side to control the Gem-window.; +#X connect 0 0 1 0; diff --git a/Gem/examples/02.advanced/01.Separator.pd b/Gem/examples/02.advanced/01.Separator.pd new file mode 100644 index 0000000..06d4c7a --- /dev/null +++ b/Gem/examples/02.advanced/01.Separator.pd @@ -0,0 +1,143 @@ +#N canvas 215 32 781 537 10; +#X obj 607 137 separator; +#X msg 697 200 1; +#X msg 734 199 0; +#X text 206 264 on; +#X text 243 262 off; +#X msg 19 288 1; +#X msg 55 290 0; +#X msg 200 290 1; +#X msg 238 290 0; +#X obj 276 308 gemhead 1; +#X obj 482 240 int 0; +#X obj 534 241 + 2; +#X floatatom 646 302 0 0 0 0 - - -; +#X obj 607 464 sphere; +#X obj 488 19 gemhead; +#X floatatom 482 273 0 0 0 0 - - -; +#X obj 97 350 world_light; +#X obj 97 295 gemhead 1; +#X obj 443 418 sphere; +#X obj 646 275 int 0; +#X obj 276 364 light; +#X msg 644 431 20; +#X msg 480 388 5; +#X text 31 246 global light; +#X text 242 236 local light; +#X text 25 266 on; +#X text 55 267 off; +#X obj 482 206 metro 50; +#X msg 482 176 1; +#X msg 519 178 0; +#X obj 646 241 metro 100; +#X obj 708 273 + 1; +#X obj 443 142 separator; +#X obj 443 338 translateXYZ 2 0 0; +#X obj 443 301 rotate 0 1 0; +#X obj 607 341 rotate 1 0 0; +#X obj 607 374 translateXYZ 0 2 0; +#X obj 607 179 color 0 1 0; +#X obj 644 401 r initstuff; +#X obj 480 362 r initstuff; +#X obj 94 473 s initstuff; +#X obj 94 443 loadbang; +#X obj 488 99 translateXYZ; +#X floatatom 540 62 0 0 0 0 - - -; +#X text 582 60 change this number; +#N canvas 95 194 290 179 Gem.init 0; +#X obj 83 30 loadbang; +#X msg 161 76 reset; +#X obj 45 107 outlet; +#X msg 45 75 dimen 300 300; +#X obj 88 51 t b b; +#X connect 0 0 4 0; +#X connect 1 0 2 0; +#X connect 3 0 2 0; +#X connect 4 0 3 0; +#X connect 4 1 1 0; +#X restore 230 117 pd Gem.init; +#X msg 100 102 lighting \$1; +#X text 89 60 turn lighting on/off; +#X obj 100 78 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 100 134 pd gemwin; +#X connect 0 0 37 0; +#X connect 1 0 30 0; +#X connect 2 0 30 0; +#X connect 2 0 19 0; +#X connect 5 0 16 0; +#X connect 6 0 16 0; +#X connect 7 0 20 0; +#X connect 8 0 20 0; +#X connect 9 0 20 0; +#X connect 10 0 11 0; +#X connect 10 0 15 0; +#X connect 11 0 10 1; +#X connect 12 0 35 1; +#X connect 14 0 42 0; +#X connect 15 0 34 1; +#X connect 17 0 16 0; +#X connect 19 0 12 0; +#X connect 19 0 31 0; +#X connect 21 0 13 2; +#X connect 22 0 18 2; +#X connect 27 0 10 0; +#X connect 28 0 27 0; +#X connect 29 0 27 0; +#X connect 29 0 10 0; +#X connect 30 0 19 0; +#X connect 31 0 19 1; +#X connect 32 0 34 0; +#X connect 33 0 18 0; +#X connect 34 0 33 0; +#X connect 35 0 36 0; +#X connect 36 0 13 0; +#X connect 37 0 35 0; +#X connect 38 0 21 0; +#X connect 39 0 22 0; +#X connect 41 0 40 0; +#X connect 42 0 32 0; +#X connect 42 0 0 0; +#X connect 43 0 42 2; +#X connect 45 0 49 0; +#X connect 46 0 49 0; +#X connect 48 0 46 0; diff --git a/Gem/examples/02.advanced/02.Ortho.pd b/Gem/examples/02.advanced/02.Ortho.pd new file mode 100644 index 0000000..329b2f8 --- /dev/null +++ b/Gem/examples/02.advanced/02.Ortho.pd @@ -0,0 +1,87 @@ +#N canvas 396 100 600 500 10; +#X obj 358 140 gemhead; +#X floatatom 377 222 0 0 0 0 - - -; +#X obj 358 256 rotateXYZ; +#X obj 150 135 gemhead 60; +#X obj 150 162 ortho; +#X obj 150 314 colorRGB 0 1 0; +#X obj 358 332 model ../data/venus.obj; +#X obj 150 347 model ../data/venus.obj; +#X obj 12 257 gemhead 1; +#X obj 12 296 world_light; +#X floatatom 169 213 0 0 0 0 - - -; +#X obj 150 249 rotateXYZ; +#X obj 358 182 translateXYZ 1 0 0; +#X obj 150 189 translateXYZ -1 0 0; +#X obj 358 301 scale 3; +#X obj 150 282 scale 3; +#X text 168 6 display two models; +#X text 136 85 rotate the two models to see the effect; +#N canvas 22 20 213 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X restore 43 61 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 18 95 pd gemwin; +#X text 142 32 one model is in "perspective" mode; +#X text 159 54 the other is in "orthographic" mode; +#X connect 0 0 12 0; +#X connect 1 0 2 1; +#X connect 2 0 14 0; +#X connect 3 0 4 0; +#X connect 4 0 13 0; +#X connect 5 0 7 0; +#X connect 8 0 9 0; +#X connect 10 0 11 1; +#X connect 11 0 15 0; +#X connect 12 0 2 0; +#X connect 13 0 11 0; +#X connect 14 0 6 0; +#X connect 15 0 5 0; +#X connect 18 0 19 0; diff --git a/Gem/examples/02.advanced/03.View.pd b/Gem/examples/02.advanced/03.View.pd new file mode 100644 index 0000000..835e551 --- /dev/null +++ b/Gem/examples/02.advanced/03.View.pd @@ -0,0 +1,85 @@ +#N canvas 55 43 729 499 10; +#X obj 309 426 gemhead; +#X obj 179 426 gemhead 1; +#X obj 179 464 world_light; +#X obj 309 464 model ../data/venus.obj; +#X msg 240 111 view 0 0 \$1; +#X floatatom 240 85 0 0 0 0 - - -; +#X text 344 85 move the camera; +#X msg 240 183 view 0 0 4 \$1; +#X floatatom 240 147 0 0 0 0 - - -; +#X text 343 106 default is 0 \, 0 \, 4; +#X text 370 168 turn left and right; +#X floatatom 236 220 0 0 0 0 - - -; +#X msg 236 256 view 0 0 4 0 \$1; +#X text 363 237 turn up and down; +#X floatatom 237 294 0 0 0 0 - - -; +#X msg 237 330 view 0 0 4 \$1 \$1; +#X text 296 301 turn left and right and up and down; +#N canvas 22 20 213 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X restore 29 176 pd Gem.init; +#X text 185 21 change the view-point; +#X msg 542 107 view x y z; +#X msg 547 184 view x y z phi; +#X msg 550 267 view x y z phi theta; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 29 200 pd gemwin; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 4 0 22 0; +#X connect 5 0 4 0; +#X connect 7 0 22 0; +#X connect 8 0 7 0; +#X connect 11 0 12 0; +#X connect 12 0 22 0; +#X connect 14 0 15 0; +#X connect 15 0 22 0; +#X connect 17 0 22 0; diff --git a/Gem/examples/02.advanced/03.View_OSD.pd b/Gem/examples/02.advanced/03.View_OSD.pd new file mode 100644 index 0000000..e376276 --- /dev/null +++ b/Gem/examples/02.advanced/03.View_OSD.pd @@ -0,0 +1,317 @@ +#N canvas 50 151 946 464 10; +#N canvas 50 173 290 229 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X msg 155 164 lighting 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X restore 48 98 pd Gem.init; +#X obj 249 195 cube; +#X msg 249 121 set \$1; +#X floatatom 249 98 5 0 0 0 - - -; +#X obj 249 169 translateXYZ 1 2 -3; +#X obj 77 130 r view_mess; +#N canvas 298 685 450 300 lighting 0; +#X obj 214 196 world_light; +#X obj 214 136 gemhead 1; +#X obj 65 157 world_light; +#X obj 65 105 gemhead 1; +#X msg 278 97 0.5 0.8 0.6; +#X obj 271 67 loadbang; +#X obj 65 129 rotateXYZ -104 160 0; +#X obj 214 164 rotateXYZ 104 -100 0; +#X msg 137 98 1 1 1; +#X obj 65 44 - 1; +#X obj 65 18 inlet; +#X msg 65 68 set \$1; +#X connect 1 0 7 0; +#X connect 3 0 6 0; +#X connect 4 0 0 1; +#X connect 5 0 8 0; +#X connect 5 0 4 0; +#X connect 6 0 2 0; +#X connect 7 0 0 0; +#X connect 8 0 2 1; +#X connect 9 0 11 0; +#X connect 10 0 9 0; +#X connect 11 0 3 0; +#X connect 11 0 1 0; +#X restore 604 108 pd lighting; +#X obj 271 291 translateXYZ 0 -2 -2; +#X obj 271 265 gemhead -50; +#X obj 550 108 gemhead; +#X obj 550 131 model ../data/venus.obj; +#X obj 249 145 gemhead -50; +#X obj 271 315 text2d; +#N canvas 6 51 381 205 textinit 0; +#X obj 85 140 outlet; +#X obj 94 63 loadbang; +#X msg 100 107 text press left button and move mouse; +#X msg 82 86 font ../data/vera.ttf; +#X connect 1 0 3 0; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 3 0 0 0; +#X restore 469 297 pd textinit; +#X obj 249 56 tgl 15 0 empty stay_cube empty 0 -6 0 8 -262144 -1 -1 +0 100; +#X obj 249 76 - 50; +#X text 125 6 change the view-point \, but keep some objects at a fixed +position; +#X text 307 120 set the priority for rendering; +#X text 431 188 a priority<0 will be rendered AFTER all other things +\, and with viewpoint set to the origin! (objects will not be affected +by a change of view); +#X text 431 240 this is good for displaying logos \, help messages +and cetera...; +#X obj 588 282 gemhead -50; +#N canvas 108 327 419 265 textinit 0; +#X obj 82 198 outlet; +#X obj 78 82 loadbang; +#X msg 97 165 text occasionally press right button; +#X obj 225 10 gemhead -1; +#X obj 225 80 spigot; +#X obj 225 39 t b b; +#X obj 225 102 t b f; +#X obj 264 60 f 1; +#X msg 225 126 font ../data/vera.ttf; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 4 0; +#X connect 5 1 7 0; +#X connect 6 0 8 0; +#X connect 6 1 7 1; +#X connect 7 0 4 1; +#X connect 8 0 0 0; +#X restore 786 389 pd textinit; +#X obj 588 407 text3d; +#X obj 588 380 rotateXYZ; +#X obj 588 332 render_trigger; +#X obj 634 353 i; +#X obj 687 353 % 360; +#X obj 660 353 - 5; +#X obj 588 308 translateXYZ 0 -7 -10; +#N canvas 231 652 445 426 mousemove 0; +#X obj 129 8 gemmouse; +#X obj 136 88 pack; +#X obj 136 110 spigot; +#X obj 136 131 unpack; +#X obj 136 196 t f f; +#X obj 36 16 gemkeyname; +#X obj 36 39 pack 0 s; +#X obj 36 62 route 1; +#X msg 36 107 0; +#X msg 136 365 view \$2 \$3 \$1 0 0 0 0 1 0; +#X obj 136 173 +; +#X obj 136 221 * -1; +#X obj 201 237 t f f; +#X obj 201 174 +; +#X obj 201 262 * -1; +#X obj 36 129 t f f f; +#X obj 136 388 s view_mess; +#X text 61 106 reset; +#N canvas 292 198 304 356 coordinates 0; +#X obj 89 52 inlet; +#X obj 94 331 outlet; +#X obj 193 62 atan; +#X msg 193 41 1; +#X obj 193 84 / 45; +#X obj 193 20 loadbang; +#X text 94 29 r phi theta; +#X obj 89 78 unpack 0 0 0; +#X obj 128 123 *; +#X obj 168 123 *; +#X obj 120 197 cos; +#X obj 150 198 sin; +#X obj 120 166 t f f; +#X obj 183 198 cos; +#X obj 213 199 sin; +#X obj 183 167 t f f; +#X obj 120 230 *; +#X obj 150 231 *; +#X obj 85 275 *; +#X obj 125 275 *; +#X obj 174 277 *; +#X obj 66 242 t f f f; +#X obj 91 308 pack 0 0 0; +#X connect 0 0 7 0; +#X connect 2 0 4 0; +#X connect 3 0 2 0; +#X connect 4 0 9 1; +#X connect 4 0 8 1; +#X connect 5 0 3 0; +#X connect 7 0 21 0; +#X connect 7 1 8 0; +#X connect 7 2 9 0; +#X connect 8 0 12 0; +#X connect 9 0 15 0; +#X connect 10 0 16 0; +#X connect 11 0 17 0; +#X connect 12 0 10 0; +#X connect 12 1 11 0; +#X connect 13 0 16 1; +#X connect 13 0 17 1; +#X connect 14 0 20 1; +#X connect 15 0 13 0; +#X connect 15 1 14 0; +#X connect 16 0 18 1; +#X connect 17 0 19 1; +#X connect 18 0 22 0; +#X connect 19 0 22 1; +#X connect 20 0 22 2; +#X connect 21 0 18 0; +#X connect 21 1 19 0; +#X connect 21 2 20 0; +#X connect 22 0 1 0; +#X restore 136 310 pd coordinates; +#X obj 136 249 t b f; +#X obj 136 289 pack 4 0 0; +#X obj 177 46 t f f; +#X obj 177 67 -; +#X obj 136 45 t f f; +#X obj 136 66 -; +#X obj 278 57 s stay_cube; +#X obj 278 35 select 1; +#X obj 201 151 * 0.5; +#X obj 136 153 * 0.5; +#X obj 201 209 clip -90 90; +#N canvas 1020 394 450 300 space 0; +#X obj 42 13 inlet; +#X obj 42 35 symbol; +#X obj 42 87 select space; +#X obj 123 111 select space; +#X obj 204 87 makefilename %c; +#X msg 204 59 32; +#X obj 42 57 t s b; +#X obj 42 159 t b; +#X obj 42 181 outlet; +#X connect 0 0 1 0; +#X connect 1 0 6 0; +#X connect 2 0 7 0; +#X connect 2 1 3 0; +#X connect 3 0 7 0; +#X connect 4 0 3 1; +#X connect 5 0 4 0; +#X connect 6 0 2 0; +#X connect 6 1 5 0; +#X connect 7 0 8 0; +#X restore 36 85 pd space; +#X connect 0 0 23 0; +#X connect 0 1 21 0; +#X connect 0 2 2 1; +#X connect 0 4 26 0; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 3 0 28 0; +#X connect 3 1 27 0; +#X connect 4 0 11 0; +#X connect 4 1 10 1; +#X connect 5 0 6 0; +#X connect 5 1 6 1; +#X connect 6 0 7 0; +#X connect 7 0 30 0; +#X connect 8 0 15 0; +#X connect 9 0 16 0; +#X connect 10 0 4 0; +#X connect 11 0 19 0; +#X connect 12 0 14 0; +#X connect 12 1 13 1; +#X connect 13 0 29 0; +#X connect 14 0 20 2; +#X connect 15 0 10 0; +#X connect 15 1 10 1; +#X connect 15 1 13 0; +#X connect 15 2 13 1; +#X connect 18 0 9 0; +#X connect 19 0 20 0; +#X connect 19 1 20 1; +#X connect 20 0 18 0; +#X connect 21 0 22 1; +#X connect 21 1 22 0; +#X connect 22 0 1 1; +#X connect 23 0 24 1; +#X connect 23 1 24 0; +#X connect 24 0 1 0; +#X connect 26 0 25 0; +#X connect 27 0 13 0; +#X connect 28 0 10 0; +#X connect 29 0 12 0; +#X connect 30 0 8 0; +#X restore 731 34 pd mousemove; +#X text 275 48 0...[cube] is rendered OSD; +#X text 275 60 1...[cube] is rendered at "view"; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 48 204 pd gemwin; +#X obj 604 88 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 2 +2; +#X text 632 87 <- should the view affect light position or not; +#X connect 0 0 32 0; +#X connect 2 0 11 0; +#X connect 3 0 2 0; +#X connect 4 0 1 0; +#X connect 5 0 32 0; +#X connect 7 0 12 0; +#X connect 8 0 7 0; +#X connect 9 0 10 0; +#X connect 11 0 4 0; +#X connect 13 0 12 0; +#X connect 14 0 15 0; +#X connect 15 0 3 0; +#X connect 20 0 28 0; +#X connect 21 0 22 0; +#X connect 23 0 22 0; +#X connect 24 0 23 0; +#X connect 24 1 25 0; +#X connect 25 0 27 0; +#X connect 25 0 23 1; +#X connect 26 0 25 1; +#X connect 27 0 26 0; +#X connect 28 0 24 0; +#X connect 33 0 6 0; diff --git a/Gem/examples/02.advanced/04.Fog.pd b/Gem/examples/02.advanced/04.Fog.pd new file mode 100644 index 0000000..28991af --- /dev/null +++ b/Gem/examples/02.advanced/04.Fog.pd @@ -0,0 +1,99 @@ +#N canvas 275 99 721 506 10; +#X floatatom 414 85 0 0 0 0 - - -; +#X obj 385 44 gemhead; +#X floatatom 403 165 0 0 0 0 - - -; +#X obj 268 149 gemhead 1; +#X obj 268 187 world_light; +#X obj 385 279 model ../data/venus.obj; +#X obj 385 134 translateXYZ; +#X obj 385 205 rotateXYZ; +#X obj 385 238 scale 3; +#X obj 40 198 r fogmess; +#X msg 335 395 \; fogmess fogmode 2 \; fogmess fog 0.1; +#X msg 11 394 \; fogmess fogmode 0; +#X msg 172 393 \; fogmess fogmode 1 \; fogmess fog 0.7; +#X text 39 349 no fog; +#X text 190 354 linear fog; +#X text 371 353 exp fog; +#X text 520 357 exp^2 fog; +#X msg 485 399 \; fogmess fogmode 3 \; fogmess fog 0.1; +#X text 184 21 various fog types; +#X obj 522 132 gemhead; +#X floatatom 458 97 5 0 0 0 - - -; +#X obj 522 170 rotateXYZ 0 -117 0; +#X obj 522 189 square 5; +#X obj 522 151 translateXYZ -3.5 0 -6.57; +#X obj 385 22 tgl 15 1 empty empty empty 20 8 0 8 -262144 -1 -1 1 1 +; +#X obj 522 113 tgl 15 1 empty empty empty 20 8 0 8 -262144 -1 -1 1 +1; +#N canvas 26 40 290 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X msg 131 165 fogcolor 1 0 0; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X restore 59 219 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 40 258 pd gemwin; +#X connect 0 0 6 3; +#X connect 1 0 6 0; +#X connect 2 0 7 1; +#X connect 3 0 4 0; +#X connect 6 0 7 0; +#X connect 7 0 8 0; +#X connect 8 0 5 0; +#X connect 9 0 27 0; +#X connect 19 0 23 0; +#X connect 20 0 6 1; +#X connect 21 0 22 0; +#X connect 23 0 21 0; +#X connect 24 0 1 0; +#X connect 25 0 19 0; +#X connect 26 0 27 0; diff --git a/Gem/examples/02.advanced/05.Stereo.pd b/Gem/examples/02.advanced/05.Stereo.pd new file mode 100644 index 0000000..8fc351e --- /dev/null +++ b/Gem/examples/02.advanced/05.Stereo.pd @@ -0,0 +1,97 @@ +#N canvas 631 50 600 504 10; +#X obj 426 54 gemhead; +#X floatatom 464 134 0 0 0 0 - - -; +#X obj 464 307 gemhead 1; +#X obj 464 332 world_light; +#X obj 426 181 model ../data/venus.obj; +#X text 185 21 load in a model file; +#X obj 426 81 translateXYZ 0 0 2; +#X obj 426 157 rotateXYZ; +#X text 149 40 and display it stereoscopically; +#X msg 221 130 stereoSep \$1; +#X msg 318 129 stereoFoc \$1; +#X floatatom 221 92 0 0 0 0 - - -; +#X floatatom 318 87 0 0 0 0 - - -; +#X text 23 295 The default stereoSep is -15; +#X text 23 315 The model may appear inside out depending on what viewing +method you use.; +#X text 23 350 If it does \, change the stereoSep to 15; +#N canvas 30 60 290 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X msg 148 165 stereo 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X restore 58 173 pd Gem.init; +#X msg 271 206 stereo 1; +#X msg 271 228 stereo 2; +#X msg 271 271 stereo 0; +#X text 335 207 2 separate images; +#X text 338 230 red/green stereo; +#X text 336 273 no stereo; +#X msg 271 248 stereo 3; +#X text 338 250 crystal eyes stereo; +#X text 32 402 NOTE: you need special hardware to use "crystal eyes +stereo"; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 58 207 pd gemwin; +#X connect 0 0 6 0; +#X connect 1 0 7 2; +#X connect 2 0 3 0; +#X connect 6 0 7 0; +#X connect 7 0 4 0; +#X connect 9 0 26 0; +#X connect 10 0 26 0; +#X connect 11 0 9 0; +#X connect 12 0 10 0; +#X connect 16 0 26 0; +#X connect 17 0 26 0; +#X connect 18 0 26 0; +#X connect 19 0 26 0; +#X connect 23 0 26 0; diff --git a/Gem/examples/02.advanced/06.StereoParticle.pd b/Gem/examples/02.advanced/06.StereoParticle.pd new file mode 100644 index 0000000..80b1f06 --- /dev/null +++ b/Gem/examples/02.advanced/06.StereoParticle.pd @@ -0,0 +1,88 @@ +#N canvas 396 160 600 500 10; +#X obj 198 50 gemhead; +#X obj 198 82 part_head; +#X obj 198 136 part_color; +#X obj 198 447 part_draw; +#X msg 335 69 0 1 0; +#X text 329 37 set the color range; +#X obj 198 331 part_gravity 0 -0.01 0; +#X obj 198 206 part_velsphere 0 0.2 0 0.2; +#X text 310 269 set the number per frame; +#X text 310 378 set the age to kill at; +#X text 366 327 gravity to affect the particles; +#X text 408 174 the velocity domain; +#X text 406 191 a sphere at 0 \, 0.2 \, 0; +#X msg 219 413 draw line; +#X msg 298 413 draw point; +#X msg 393 69 1 0 0; +#X obj 198 270 part_source 25; +#X obj 198 381 part_killold 45; +#X text 406 208 radius = 0.2; +#X msg 31 131 stereoSep 15; +#X obj 198 174 part_size 2; +#N canvas 26 40 290 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 stereo 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X restore 87 170 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 31 187 pd gemwin; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X connect 2 0 20 0; +#X connect 4 0 2 1; +#X connect 6 0 17 0; +#X connect 7 0 16 0; +#X connect 13 0 3 0; +#X connect 14 0 3 0; +#X connect 15 0 2 2; +#X connect 16 0 6 0; +#X connect 17 0 3 0; +#X connect 19 0 22 0; +#X connect 20 0 7 0; +#X connect 21 0 22 0; diff --git a/Gem/examples/02.advanced/07.Snapshot1.pd b/Gem/examples/02.advanced/07.Snapshot1.pd new file mode 100644 index 0000000..55b7776 --- /dev/null +++ b/Gem/examples/02.advanced/07.Snapshot1.pd @@ -0,0 +1,87 @@ +#N canvas 396 100 600 375 10; +#X obj 210 252 gemhead; +#X obj 210 312 model ../data/venus.obj; +#X text 117 4 snap a portion of the graphics window into a texture +; +#X obj 210 278 translateXYZ 0 0 2; +#X obj 423 193 gemhead; +#X obj 423 255 pix_texture; +#X msg 294 88 snap; +#X msg 275 56 bang; +#X msg 355 148 bang; +#X msg 328 120 bang; +#X obj 423 226 pix_snap 0 0 256 256; +#X obj 423 284 rotateXYZ 0 45 25; +#X obj 423 317 square 4; +#X text 327 54 draw the model; +#X text 348 87 snap the frame buffer; +#X text 390 120 clear the frame buffer; +#X text 407 146 draw the snapped texture; +#N canvas 26 40 290 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 dimen 256 256; +#X msg 179 165 buffer 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 0 5 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X connect 5 0 0 0; +#X restore 30 120 pd Gem.init; +#X text 123 20 notice that this is using single buffered (see Gem.init) +drawing!; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 30 137 pd gemwin; +#X connect 0 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 10 0; +#X connect 5 0 11 0; +#X connect 6 0 10 0; +#X connect 7 0 0 0; +#X connect 8 0 4 0; +#X connect 9 0 19 0; +#X connect 10 0 5 0; +#X connect 11 0 12 0; +#X connect 17 0 19 0; diff --git a/Gem/examples/02.advanced/08.Snapshot2.pd b/Gem/examples/02.advanced/08.Snapshot2.pd new file mode 100644 index 0000000..ef84f34 --- /dev/null +++ b/Gem/examples/02.advanced/08.Snapshot2.pd @@ -0,0 +1,138 @@ +#N canvas 389 0 635 537 10; +#X obj 64 405 gemhead; +#X obj 64 509 model ../data/venus.obj; +#X text 115 2 snap a portion of the graphics window into a texture +; +#X obj 399 365 pix_texture; +#X obj 399 430 rotateXYZ; +#X floatatom 500 399 0 0 0 0 - - -; +#X msg 339 350 snap; +#X msg 110 370 0; +#X obj 399 256 render_trigger; +#X obj 399 329 pix_snap 0 0 256 256; +#X obj 399 219 gemhead 60; +#X obj 399 453 square 3; +#X msg 34 94 \; render 1; +#X msg 32 50 \; render 0; +#X obj 18 181 r render; +#X obj 180 360 r render; +#X obj 295 322 t b b; +#X obj 295 197 r render; +#X msg 295 260 clear; +#X obj 295 229 sel 1; +#X obj 233 400 gemhead; +#X obj 233 510 model ../data/venus.obj; +#X obj 233 472 color 1 0 0; +#X obj 64 478 color 0 1 0; +#X obj 233 432 translateXYZ 1 0 1; +#X obj 64 438 translateXYZ -1 0 1; +#X text 369 155 notice that we use render_trigger; +#X text 369 172 to make sure that we snap before; +#X text 373 190 the square is drawn; +#X text 126 42 you may need to turn rendering off \, then on; +#X text 128 59 to get the snap to work right. This is because; +#X text 127 77 the first time rendering is turned on \, we might; +#X text 128 95 have garbage in the frame buffer; +#X text 127 126 rotate the square to see the texture; +#N canvas 26 40 290 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 dimen 256 256; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X restore 84 181 pd Gem.init; +#N canvas 0 0 450 300 oneshot 0; +#X obj 93 82 inlet; +#X obj 187 148 bang; +#X msg 187 167 1; +#X obj 93 214 spigot; +#X msg 155 168 0; +#X obj 93 172 t a b; +#X obj 93 240 t a b; +#X obj 136 192 i 1; +#X obj 93 107 route clear; +#X obj 93 262 outlet; +#X connect 0 0 8 0; +#X connect 1 0 2 0; +#X connect 2 0 7 1; +#X connect 3 0 6 0; +#X connect 4 0 7 1; +#X connect 5 0 3 0; +#X connect 5 1 7 0; +#X connect 6 0 9 0; +#X connect 6 1 4 0; +#X connect 7 0 3 1; +#X connect 8 0 1 0; +#X connect 8 1 5 0; +#X restore 295 287 pd oneshot; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 18 206 pd gemwin; +#X connect 0 0 25 0; +#X connect 3 0 4 0; +#X connect 4 0 11 0; +#X connect 5 0 4 2; +#X connect 6 0 9 0; +#X connect 7 0 0 0; +#X connect 7 0 20 0; +#X connect 8 0 9 0; +#X connect 8 1 35 0; +#X connect 9 0 3 0; +#X connect 10 0 8 0; +#X connect 14 0 36 0; +#X connect 15 0 0 0; +#X connect 15 0 20 0; +#X connect 16 0 7 0; +#X connect 16 1 6 0; +#X connect 17 0 19 0; +#X connect 18 0 35 0; +#X connect 19 0 18 0; +#X connect 20 0 24 0; +#X connect 22 0 21 0; +#X connect 23 0 1 0; +#X connect 24 0 22 0; +#X connect 25 0 23 0; +#X connect 34 0 36 0; +#X connect 35 0 16 0; diff --git a/Gem/examples/02.advanced/09.SnapshotSave.pd b/Gem/examples/02.advanced/09.SnapshotSave.pd new file mode 100644 index 0000000..92bc2eb --- /dev/null +++ b/Gem/examples/02.advanced/09.SnapshotSave.pd @@ -0,0 +1,145 @@ +#N canvas 54 216 940 412 10; +#N canvas 338 262 290 225 Gem.init 0; +#X obj 83 30 loadbang; +#X msg 161 76 reset; +#X obj 45 184 outlet; +#X obj 88 51 t b b; +#X msg 45 75 dimen 128 128; +#X msg 71 109 lighting 1; +#X msg 127 171 color 0.5 0.3 1; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 3 0 4 0; +#X connect 3 0 5 0; +#X connect 3 0 6 0; +#X connect 3 1 1 0; +#X connect 4 0 2 0; +#X connect 5 0 2 0; +#X connect 6 0 2 0; +#X restore 51 96 pd Gem.init; +#X obj 255 118 gemhead; +#X obj 255 144 render_trigger; +#X obj 332 256 + 1; +#X obj 362 256 % 360; +#X obj 255 279 rotateXYZ; +#X obj 255 359 pix_texture; +#X obj 62 265 gemhead; +#X obj 62 291 world_light; +#X obj 652 251 gemhead 99; +#X obj 548 154 savepanel; +#X msg 673 293 file \$1; +#X obj 420 182 symbol /tmp/gemshot; +#X obj 420 110 bng 30 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 420 280 makefilename %s00000.tif; +#X msg 420 308 open \$1; +#X obj 255 387 square 4; +#X obj 255 334 pix_image; +#X msg 134 269 list 1 1 0.4; +#X obj 255 306 color 1 0.3 1; +#X obj 134 248 loadbang; +#X obj 420 210 t b s b s; +#X obj 420 258 symbol; +#X obj 420 234 del 500; +#X obj 301 188 spigot; +#X obj 338 165 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X floatatom 301 238 5 0 0 0 - - -; +#X obj 301 216 i; +#X obj 548 134 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 338 123 loadbang; +#X text 186 22 similar to the previous example: [pix_write] gets the +current output window and writes it not into a texture but into a file +(TIFF or JPEG); +#X text 492 364 mind the 99: [pix_write] has to be called late \, to +ensure that all that you want is already rendered onto the screen. +; +#X msg 789 285 auto \$1; +#X obj 793 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 1 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 51 113 pd gemwin; +#X obj 60 321 gemhead; +#X obj 60 341 translate 1 0 1 0; +#X obj 60 362 color 0 1 0; +#X obj 60 382 sphere 0.5; +#X obj 652 326 pix_write; +#X connect 0 0 34 0; +#X connect 1 0 2 0; +#X connect 2 0 5 0; +#X connect 2 1 24 0; +#X connect 3 0 4 0; +#X connect 4 0 27 1; +#X connect 5 0 19 0; +#X connect 6 0 16 0; +#X connect 7 0 8 0; +#X connect 9 0 39 0; +#X connect 10 0 12 1; +#X connect 11 0 39 0; +#X connect 12 0 21 0; +#X connect 13 0 12 0; +#X connect 14 0 15 0; +#X connect 15 0 17 0; +#X connect 17 0 6 0; +#X connect 18 0 8 1; +#X connect 19 0 17 0; +#X connect 20 0 18 0; +#X connect 21 0 23 0; +#X connect 21 1 22 1; +#X connect 21 2 39 0; +#X connect 21 3 11 0; +#X connect 22 0 14 0; +#X connect 23 0 22 0; +#X connect 24 0 27 0; +#X connect 25 0 24 1; +#X connect 26 0 3 0; +#X connect 26 0 5 1; +#X connect 26 0 5 2; +#X connect 26 0 5 3; +#X connect 27 0 26 0; +#X connect 28 0 10 0; +#X connect 29 0 25 0; +#X connect 32 0 39 0; +#X connect 33 0 32 0; +#X connect 35 0 36 0; +#X connect 36 0 37 0; +#X connect 37 0 38 0; diff --git a/Gem/examples/02.advanced/09.SnapshotSaveHD.pd b/Gem/examples/02.advanced/09.SnapshotSaveHD.pd new file mode 100644 index 0000000..b14083b --- /dev/null +++ b/Gem/examples/02.advanced/09.SnapshotSaveHD.pd @@ -0,0 +1,44 @@ +#N canvas 73 51 832 392 10; +#X msg 26 26 create \, 1; +#X msg 39 53 destroy; +#X obj 340 29 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 151 29 gemhead; +#X text 256 220 <- the scene you want to save in the given resolution +; +#X text 359 29 <- save the scene in the given resolution; +#X obj 26 77 gemwin; +#X text 147 283 [snapshotHD] gives the possibility to capture a scene +in a defined resolution. You can see the proportion of the capture +in the GEM window with the white rectangle edge.; +#X obj 151 170 t a b; +#X obj 151 220 accumrotate; +#X obj 151 241 teapot; +#X msg 193 196 1; +#X obj 151 72 s \$0-gemhead; +#X obj 151 125 gemreceive \$0-gemhead; +#X obj 151 145 separator; +#X text 303 136 <-- a [gemhead] replacement; +#X text 407 50 1st and 2nd arguments : resolution (here : 3000x2000 +pixels); +#X obj 151 52 snapshotHD 4000 2000 /tmp/myPic.tif; +#X text 410 68 3rd argument : TIFF file name (here : /tmp/myPic.tif) +; +#X text 152 333 [snapshotHD] uses openGL-framebuffers. thus the maximum +resolution is limited by your openGL-implementation!; +#X msg 342 90 symbol /tmp/foo.tif; +#X text 485 93 <- save as another imagefile.; +#X connect 0 0 6 0; +#X connect 1 0 6 0; +#X connect 2 0 17 1; +#X connect 3 0 17 0; +#X connect 8 0 9 0; +#X connect 8 1 11 0; +#X connect 9 0 10 0; +#X connect 11 0 9 2; +#X connect 11 0 9 3; +#X connect 11 0 9 1; +#X connect 13 0 14 0; +#X connect 14 0 8 0; +#X connect 17 0 12 0; +#X connect 20 0 17 1; diff --git a/Gem/examples/02.advanced/10.LinearPath.pd b/Gem/examples/02.advanced/10.LinearPath.pd new file mode 100644 index 0000000..1a75686 --- /dev/null +++ b/Gem/examples/02.advanced/10.LinearPath.pd @@ -0,0 +1,87 @@ +#N canvas 372 134 624 496 10; +#X floatatom 481 249 0 0 0 0 - - -; +#X msg 422 21 1; +#X msg 455 21 0; +#X floatatom 451 172 0 0 0 0 - - -; +#X obj 350 184 gemhead; +#X obj 350 240 color; +#X obj 350 364 square; +#N canvas 21 297 600 400 arrays 0; +#N canvas 0 0 450 300 (subpatch) 0; +#X array array2 15 float 0; +#X array array3 24 float 0; +#X coords 0 1 15 -1 400 300 1; +#X restore 63 4 graph; +#X restore 38 447 page arrays; +#X obj 422 124 line; +#X msg 422 95 0 \, 1 2000; +#X obj 350 334 translate 1 0 0 0; +#X msg 39 347 \; array2 resize 15 \; array2 read ../data/valcolor.tab +\; array3 resize 24 \; array3 read ../data/valmotion.tab; +#X obj 422 63 metro 2000; +#X obj 422 213 linear_path 3 array2; +#X obj 464 300 linear_path 3 array3; +#X text 109 29 this demonstrates the linear_path object; +#X obj 39 313 loadbang; +#N canvas 26 40 290 300 Gem.init 0; +#X obj 68 196 outlet; +#X obj 68 86 loadbang; +#X msg 68 136 reset; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 54 134 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 54 151 pd gemwin; +#X connect 0 0 14 0; +#X connect 1 0 12 0; +#X connect 2 0 12 0; +#X connect 3 0 13 0; +#X connect 4 0 5 0; +#X connect 5 0 10 0; +#X connect 8 0 13 0; +#X connect 8 0 14 0; +#X connect 9 0 8 0; +#X connect 10 0 6 0; +#X connect 12 0 9 0; +#X connect 13 0 5 1; +#X connect 14 0 10 2; +#X connect 16 0 11 0; +#X connect 17 0 18 0; diff --git a/Gem/examples/02.advanced/11.SplinePath.pd b/Gem/examples/02.advanced/11.SplinePath.pd new file mode 100644 index 0000000..3938ed8 --- /dev/null +++ b/Gem/examples/02.advanced/11.SplinePath.pd @@ -0,0 +1,87 @@ +#N canvas 355 106 641 505 10; +#X floatatom 492 288 0 0 0 0 - - -; +#X msg 421 55 1; +#X msg 461 55 0; +#X floatatom 463 210 0 0 0 0 - - -; +#X obj 350 226 gemhead; +#X obj 350 289 color; +#X obj 350 403 square; +#N canvas 21 297 600 400 arrays 0; +#N canvas 0 0 450 300 (subpatch) 0; +#X array array2 18 float 0; +#X array array3 24 float 0; +#X coords 0 1 15 -1 400 300 1; +#X restore 63 4 graph; +#X restore 26 474 page arrays; +#X obj 421 254 spline_path 3 array2; +#X obj 421 163 line; +#X msg 421 129 0 \, 1 2000; +#X obj 350 351 translate 1 0 0 0; +#X obj 464 320 spline_path 3 array3; +#X obj 421 98 metro 2000; +#X text 109 29 this demonstrates the spline_path object; +#X obj 28 345 loadbang; +#X msg 28 380 \; array2 resize 18 \; array2 read ../data/valcolor.tab +\; array3 resize 24 \; array3 read ../data/valmotion.tab; +#N canvas 26 40 290 300 Gem.init 0; +#X obj 68 196 outlet; +#X obj 68 86 loadbang; +#X msg 68 136 reset; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 33 148 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 33 171 pd gemwin; +#X connect 0 0 12 0; +#X connect 1 0 13 0; +#X connect 2 0 13 0; +#X connect 3 0 8 0; +#X connect 4 0 5 0; +#X connect 5 0 11 0; +#X connect 8 0 5 1; +#X connect 9 0 8 0; +#X connect 9 0 12 0; +#X connect 10 0 9 0; +#X connect 11 0 6 0; +#X connect 12 0 11 2; +#X connect 13 0 10 0; +#X connect 15 0 16 0; +#X connect 17 0 18 0; diff --git a/Gem/examples/02.advanced/12.Hsv.pd b/Gem/examples/02.advanced/12.Hsv.pd new file mode 100644 index 0000000..28379a2 --- /dev/null +++ b/Gem/examples/02.advanced/12.Hsv.pd @@ -0,0 +1,105 @@ +#N canvas 433 87 762 506 12; +#X obj 248 352 gemhead; +#X obj 248 412 color; +#X msg 559 202 1 1 1; +#X msg 524 156 1 0 0; +#X obj 248 441 square; +#X text 396 19 change the color; +#X text 2 90 create and destroy the graphics window; +#X obj 524 266 rgb2hsv; +#X obj 379 303 hsv2rgb; +#X obj 379 330 unpack 0 0 0; +#X floatatom 379 363 0 0 0 3 red - -; +#X floatatom 431 361 0 0 0 3 green - -; +#X floatatom 490 361 0 0 0 3 blue - -; +#X obj 541 327 unpack 0 0 0; +#X floatatom 541 416 0 0 0 3 hue - -; +#X floatatom 593 391 0 0 0 3 saturation - -; +#X floatatom 632 353 0 0 0 3 value - -; +#X msg 612 246 0 1 0; +#X floatatom 379 85 0 0 1 2 hue #0-hue -; +#X floatatom 400 121 0 0 1 2 saturation #0-saturation -; +#X obj 399 174 t b f; +#X floatatom 437 148 0 0 1 2 value #0-value -; +#X obj 437 174 t b f; +#X text 526 139 red; +#X text 559 185 white; +#X text 614 224 green; +#X obj 379 203 pack 0 1 1; +#N canvas 30 60 290 300 Gem.init 0; +#X obj 68 196 outlet; +#X obj 68 86 loadbang; +#X msg 68 136 reset; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 26 133 pd Gem.init; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 1 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 26 162 pd gemwin; +#X obj 532 52 hsl 128 15 0 1 0 0 \$0-hue empty hue -2 -8 0 10 -262144 +-1 -1 0 1; +#X obj 532 82 hsl 128 15 0 1 0 0 \$0-saturation empty saturation -2 +-8 0 10 -262144 -1 -1 0 1; +#X obj 532 112 hsl 128 15 0 1 0 0 \$0-value empty value -2 -8 0 10 +-262144 -1 -1 0 1; +#X connect 0 0 1 0; +#X connect 1 0 4 0; +#X connect 2 0 7 0; +#X connect 3 0 7 0; +#X connect 7 0 8 0; +#X connect 7 0 13 0; +#X connect 8 0 1 1; +#X connect 8 0 9 0; +#X connect 9 0 10 0; +#X connect 9 1 11 0; +#X connect 9 2 12 0; +#X connect 13 0 14 0; +#X connect 13 1 15 0; +#X connect 13 2 16 0; +#X connect 17 0 7 0; +#X connect 18 0 26 0; +#X connect 19 0 20 0; +#X connect 20 0 26 0; +#X connect 20 1 26 1; +#X connect 21 0 22 0; +#X connect 22 0 26 0; +#X connect 22 1 26 2; +#X connect 26 0 8 0; +#X connect 27 0 28 0; diff --git a/Gem/examples/02.advanced/13.ModelRescale.pd b/Gem/examples/02.advanced/13.ModelRescale.pd new file mode 100644 index 0000000..3da2927 --- /dev/null +++ b/Gem/examples/02.advanced/13.ModelRescale.pd @@ -0,0 +1,107 @@ +#N canvas 8 40 682 502 12; +#X floatatom 241 220 0 0 0 0 - - -; +#X obj 208 268 translate; +#X msg 275 220 0 0 1; +#X obj 208 178 gemhead; +#X floatatom 237 304 0 0 0 0 - - -; +#X obj 43 357 gemhead 1; +#X obj 43 395 world_light; +#X msg 285 307 open ../data/venus.obj; +#X floatatom 511 227 0 0 0 0 - - -; +#X obj 478 275 translate; +#X msg 545 227 0 0 1; +#X obj 478 185 gemhead; +#X msg 521 321 0 1 0; +#X obj 478 346 rotate; +#X floatatom 499 298 0 0 0 0 - - -; +#X obj 478 396 model ../data/venus.obj; +#X obj 208 339 scaleXYZ; +#X obj 327 149 loadbang; +#X msg 271 187 -10; +#X msg 325 246 0.1; +#X obj 333 278 t b b; +#X text 224 34 notice that the 'rescale 0' message is sent; +#X text 227 90 notice the size difference due to the scale and; +#X text 229 109 translate objects on the left chain; +#N canvas 22 20 213 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X restore 34 98 pd Gem.init; +#X msg 289 347 rescale 0; +#X obj 208 389 model; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 34 124 pd gemwin; +#X text 228 51 before the 'open' occurs; +#X connect 0 0 1 1; +#X connect 1 0 16 0; +#X connect 2 0 1 2; +#X connect 3 0 1 0; +#X connect 4 0 16 1; +#X connect 4 0 16 2; +#X connect 4 0 16 3; +#X connect 5 0 6 0; +#X connect 7 0 26 0; +#X connect 8 0 9 1; +#X connect 9 0 13 0; +#X connect 10 0 9 2; +#X connect 11 0 9 0; +#X connect 12 0 13 2; +#X connect 13 0 15 0; +#X connect 14 0 13 1; +#X connect 16 0 26 0; +#X connect 17 0 2 0; +#X connect 17 0 18 0; +#X connect 17 0 19 0; +#X connect 17 0 20 0; +#X connect 18 0 0 0; +#X connect 19 0 4 0; +#X connect 20 0 7 0; +#X connect 20 1 25 0; +#X connect 24 0 27 0; +#X connect 25 0 26 0; diff --git a/Gem/examples/02.advanced/14.RenderOrder.pd b/Gem/examples/02.advanced/14.RenderOrder.pd new file mode 100644 index 0000000..a199d0b --- /dev/null +++ b/Gem/examples/02.advanced/14.RenderOrder.pd @@ -0,0 +1,149 @@ +#N canvas 0 0 986 385 10; +#X text 276 35 Blue Sphere; +#N canvas 95 194 290 179 Gem.init 0; +#X obj 118 18 loadbang; +#X msg 201 78 reset; +#X obj 118 113 outlet; +#X obj 118 45 t b b; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 3 1 1 0; +#X restore 72 145 pd Gem.init; +#X obj 265 98 color 0 0 1 0.5; +#X obj 265 229 pix_texture; +#X obj 265 182 pix_image ../data/dancer.JPG; +#X obj 265 251 alpha; +#X obj 265 207 pix_alpha; +#X obj 265 68 gemhead 50; +#X obj 681 244 alpha; +#X obj 681 173 gemhead 50; +#X obj 681 197 color 0 1 0 0.5; +#X obj 681 222 translateXYZ 0 -0.5 -1; +#X obj 849 123 int 0; +#X obj 891 123 + 1; +#X obj 849 100 metro 50; +#X obj 923 122 % 50; +#X obj 849 81 tgl 15 0 empty render_onoff empty 0 -6 0 8 -262144 -1 +-1 0 1; +#X obj 849 146 / 25; +#X obj 849 168 - 1; +#X msg 681 124 set \$1; +#X floatatom 681 101 5 0 0 0 - - -; +#X msg 679 9 40; +#X msg 696 32 60; +#X obj 849 191 t f f; +#X msg 709 54 auto; +#N canvas 189 208 450 300 set-priority 0; +#X obj 103 59 inlet; +#X obj 94 277 outlet; +#X obj 103 96 route auto; +#X obj 352 59 inlet; +#X obj 352 88 < 0; +#X obj 352 112 change; +#X obj 352 135 select 1 0; +#X msg 327 169 40; +#X msg 363 170 60; +#X obj 94 247 spigot; +#X obj 168 120 t f b; +#X msg 198 145 0; +#X msg 103 117 10; +#X obj 103 138 t f f; +#X connect 0 0 2 0; +#X connect 2 0 12 0; +#X connect 2 1 10 0; +#X connect 3 0 4 0; +#X connect 4 0 5 0; +#X connect 5 0 6 0; +#X connect 6 0 7 0; +#X connect 6 1 8 0; +#X connect 7 0 9 0; +#X connect 8 0 9 0; +#X connect 9 0 1 0; +#X connect 10 0 1 0; +#X connect 10 1 11 0; +#X connect 11 0 9 1; +#X connect 12 0 13 0; +#X connect 13 0 9 1; +#X connect 13 1 5 0; +#X restore 693 76 pd set-priority; +#X obj 265 272 square 3; +#X obj 681 266 square 3; +#X text 866 81 movement on/off; +#X text 736 9 priority 40 (<50); +#X text 735 28 priority 60 (>50); +#X text 748 51 dynamic ordering; +#X text 218 299 the rendering order does matter \, when doing things +like alpha-blending: alpha-blending only works if the semi-transparent +(alpha<1) object is rendered AFTER the objects that shine through; +#X text 596 291 this turns out to be a problem in dynamic scenes (eg: +with moving objects/viewpoint):: if a semi-transparent object used +to be "in front" of another semi-transparent object \, but suddenly +becomes "behind" \, the rendering order has to be changed. do this +\, by giving the [gemhead] a "set" message; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 72 168 pd gemwin; +#X connect 1 0 34 0; +#X connect 2 0 4 0; +#X connect 3 0 5 0; +#X connect 4 0 6 0; +#X connect 5 0 26 0; +#X connect 6 0 3 0; +#X connect 7 0 2 0; +#X connect 8 0 27 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 8 0; +#X connect 12 0 13 0; +#X connect 12 0 17 0; +#X connect 13 0 15 0; +#X connect 14 0 12 0; +#X connect 15 0 12 1; +#X connect 16 0 14 0; +#X connect 17 0 18 0; +#X connect 18 0 23 0; +#X connect 19 0 9 0; +#X connect 20 0 19 0; +#X connect 21 0 25 0; +#X connect 22 0 25 0; +#X connect 23 0 11 3; +#X connect 23 1 25 1; +#X connect 24 0 25 0; +#X connect 25 0 20 0; diff --git a/Gem/examples/02.advanced/15.GemWin.pd b/Gem/examples/02.advanced/15.GemWin.pd new file mode 100644 index 0000000..a414b15 --- /dev/null +++ b/Gem/examples/02.advanced/15.GemWin.pd @@ -0,0 +1,73 @@ +#N canvas 51 56 650 553 10; +#X obj 53 224 gemwin; +#X obj 38 397 gemmouse; +#X obj 109 206 r gemwin_mess; +#X obj 63 459 s gemwin_mess; +#X obj 63 418 del 100; +#X msg 63 439 destroy; +#X obj 15 86 cnv 15 100 100 empty empty empty 20 12 0 14 -24198 -66577 +0; +#X msg 53 105 create; +#X msg 26 143 destroy; +#X obj 238 3 cnv 15 400 480 empty empty empty 20 12 0 14 -195568 -66577 +0; +#X obj 14 296 cnv 15 180 80 empty empty cursor 20 0 0 14 -195568 -66577 +0; +#X msg 20 327 \; gemwin_mess cursor \$1; +#X obj 20 308 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 +; +#X text 39 306 show/hide cursor; +#X text 32 484 press the left-mouse-button to kill the gem-window; +#X obj 247 36 cnv 15 380 120 empty empty title-bar 20 0 0 14 -233017 +-66577 0; +#X msg 253 49 title Graphic's_Environment_for_Multimedia; +#X msg 286 94 title \$1; +#X symbolatom 286 72 10 0 0; +#X text 359 94 type your own title; +#X obj 253 125 s gemwin_mess; +#X obj 247 259 cnv 15 380 120 empty empty dimensions+positioning 20 +0 0 14 -233017 -66577 0; +#X obj 253 348 s gemwin_mess; +#X obj 248 167 cnv 15 380 80 empty empty window-decorations 20 0 0 +14 -233017 -66577 0; +#X obj 258 185 tgl 15 1 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 258 204 \; gemwin_mess border \$1; +#X msg 253 285 dimen 500 500; +#X msg 273 315 dimen 200 421; +#X obj 417 347 s gemwin_mess; +#X msg 417 284 offset 0 0; +#X msg 437 314 offset 500 70; +#X text 277 183 with/out borders; +#X text 534 282 offset might; +#X text 540 298 work only; +#X text 552 315 without; +#X text 548 330 borders !; +#X obj 247 391 cnv 15 380 80 empty empty full-screen 20 0 0 14 -233017 +-66577 0; +#X obj 257 409 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 +1; +#X msg 257 428 \; gemwin_mess fullscreen \$1; +#X text 276 407 fullscreen/windowed; +#X text 11 14 how to control the GEM-window; +#X text 291 7 use these BEFORE creating the window!; +#X text 466 398 titles \, borders \,; +#X text 458 415 dimensions & offsets; +#X text 468 432 mean nothing in; +#X text 463 448 fullscreen mode !; +#X connect 1 2 4 0; +#X connect 2 0 0 0; +#X connect 4 0 5 0; +#X connect 5 0 3 0; +#X connect 7 0 0 0; +#X connect 8 0 0 0; +#X connect 12 0 11 0; +#X connect 16 0 20 0; +#X connect 17 0 20 0; +#X connect 18 0 17 0; +#X connect 24 0 25 0; +#X connect 26 0 22 0; +#X connect 27 0 22 0; +#X connect 29 0 28 0; +#X connect 30 0 28 0; +#X connect 37 0 38 0; diff --git a/Gem/examples/02.advanced/16.vertex_program.pd b/Gem/examples/02.advanced/16.vertex_program.pd new file mode 100644 index 0000000..3d940b4 --- /dev/null +++ b/Gem/examples/02.advanced/16.vertex_program.pd @@ -0,0 +1,189 @@ +#N canvas 27 90 540 557 10; +#X obj 404 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 235 42 gemhead; +#X obj 235 111 pix_texture; +#X obj 235 497 rotateXYZ; +#X obj 106 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X obj 167 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X obj 395 250 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 -0.25 256; +#X obj 425 267 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0.5 256; +#X obj 458 285 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0.2 256; +#X obj 425 304 t b f; +#X obj 462 304 t b f; +#X obj 303 413 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 34336 256; +#X obj 371 355 nbx 5 14 -1e+37 1e+37 0 0 empty empty parameter# 0 -6 +0 10 -262144 -1 -1 0 256; +#X obj 440 324 pack 0 0 0 0; +#X obj 235 431 GEMglProgramEnvParameter4fvARB; +#X obj 242 358 loadbang; +#X obj 242 390 GLdefine GL_VERTEX_PROGRAM_ARB; +#X text 253 374 GL_VERTEX_PROGRAM_ARB = 34336; +#X msg 188 136 print; +#X text 382 23 open a texture; +#X text 343 123 open a vertex-program; +#X text 420 469 open a model; +#N canvas 0 0 450 300 defaults 0; +#X obj 112 43 loadbang; +#X msg 102 121 0; +#X obj 102 186 outlet; +#X obj 102 84 t b b; +#X obj 164 156 unpack 0 0 0; +#X obj 168 188 outlet; +#X obj 217 189 outlet; +#X obj 263 189 outlet; +#X text 101 208 param#; +#X text 205 216 param-values; +#X obj 179 44 inlet; +#X msg 161 122 -0.25 0.5 0.2; +#X connect 0 0 3 0; +#X connect 1 0 2 0; +#X connect 3 0 1 0; +#X connect 3 1 11 0; +#X connect 4 0 5 0; +#X connect 4 1 6 0; +#X connect 4 2 7 0; +#X connect 10 0 3 0; +#X connect 11 0 4 0; +#X restore 371 228 pd defaults; +#X msg 371 211 default; +#X obj 235 531 model ../data/venus.obj; +#X obj 235 82 pix_image ../data/64shade.tif; +#N canvas 0 0 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 347 141 pd open; +#X obj 418 46 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 0 0 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 361 45 pd open; +#X msg 361 65 open ../data/64shade.tif; +#X obj 434 495 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 0 0 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 377 494 pd open; +#X msg 377 514 open ../data/venus.obj; +#X obj 44 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X msg 66 313 bang; +#X text 60 294 2nd click me; +#X obj 143 330 t b b b; +#X text 54 448 3rd play me; +#X text 79 18 1st click me; +#X text 295 275 4th play me; +#X msg 347 161 open ../data/toon.vp; +#X obj 235 178 vertex_program ../data/toon.vp; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 54 83 pd gemwin; +#X connect 0 0 26 0; +#X connect 1 0 25 0; +#X connect 2 0 41 0; +#X connect 3 0 24 0; +#X connect 4 0 3 2; +#X connect 5 0 3 3; +#X connect 6 0 13 0; +#X connect 7 0 9 0; +#X connect 8 0 10 0; +#X connect 9 0 13 0; +#X connect 9 1 13 1; +#X connect 10 0 13 0; +#X connect 10 1 13 2; +#X connect 11 0 14 1; +#X connect 12 0 14 2; +#X connect 13 0 14 3; +#X connect 14 0 3 0; +#X connect 15 0 16 0; +#X connect 16 0 11 0; +#X connect 18 0 41 0; +#X connect 22 0 12 0; +#X connect 22 1 6 0; +#X connect 22 2 7 0; +#X connect 22 3 8 0; +#X connect 23 0 22 0; +#X connect 25 0 2 0; +#X connect 26 0 40 0; +#X connect 27 0 28 0; +#X connect 28 0 29 0; +#X connect 29 0 25 0; +#X connect 30 0 31 0; +#X connect 31 0 32 0; +#X connect 32 0 24 0; +#X connect 33 0 3 1; +#X connect 34 0 36 0; +#X connect 36 0 32 0; +#X connect 36 1 40 0; +#X connect 36 2 29 0; +#X connect 40 0 41 0; +#X connect 41 0 14 0; diff --git a/Gem/examples/02.advanced/17.fragment_program.pd b/Gem/examples/02.advanced/17.fragment_program.pd new file mode 100644 index 0000000..2b1ce3b --- /dev/null +++ b/Gem/examples/02.advanced/17.fragment_program.pd @@ -0,0 +1,126 @@ +#N canvas 27 90 540 557 10; +#X obj 404 142 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X obj 235 42 gemhead; +#X obj 235 497 rotateXYZ; +#X obj 106 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X obj 167 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X msg 188 136 print; +#X text 343 123 open a vertex-program; +#X text 420 469 open a model; +#X obj 235 531 model ../data/venus.obj; +#N canvas 0 0 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 347 141 pd open; +#X obj 434 495 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 0 0 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 377 494 pd open; +#X msg 377 514 open ../data/venus.obj; +#X obj 44 467 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X msg 66 313 bang; +#X text 60 294 2nd click me; +#X obj 143 330 t b b b; +#X text 54 448 3rd play me; +#X msg 347 161 open ../data/random.fp; +#X floatatom 318 49 5 0 0 0 - - -; +#X obj 235 85 colorRGB 1 1 1; +#X obj 66 247 world_light; +#X obj 60 214 gemhead 1; +#X obj 235 178 fragment_program ../data/random.fp; +#X text 362 48 play me; +#X obj 380 390 gemhead; +#X obj 380 412 translateXYZ -2 0 0; +#X obj 235 416 translateXYZ 2 0 0; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 70 126 pd gemwin; +#N canvas 0 0 450 300 Gem.init 0; +#X obj 85 239 outlet; +#X msg 85 215 reset \, lighting 1; +#X obj 85 192 loadbang; +#X connect 1 0 0 0; +#X connect 2 0 1 0; +#X restore 70 104 pd Gem.init; +#X connect 0 0 9 0; +#X connect 1 0 20 0; +#X connect 2 0 8 0; +#X connect 3 0 2 2; +#X connect 4 0 2 3; +#X connect 5 0 23 0; +#X connect 9 0 18 0; +#X connect 10 0 11 0; +#X connect 11 0 12 0; +#X connect 12 0 8 0; +#X connect 13 0 2 1; +#X connect 14 0 16 0; +#X connect 16 0 12 0; +#X connect 16 1 18 0; +#X connect 18 0 23 0; +#X connect 19 0 20 2; +#X connect 20 0 23 0; +#X connect 22 0 21 0; +#X connect 23 0 27 0; +#X connect 25 0 26 0; +#X connect 26 0 2 0; +#X connect 27 0 2 0; +#X connect 29 0 28 0; diff --git a/Gem/examples/02.advanced/18.gl_shading_language.pd b/Gem/examples/02.advanced/18.gl_shading_language.pd new file mode 100644 index 0000000..2562b27 --- /dev/null +++ b/Gem/examples/02.advanced/18.gl_shading_language.pd @@ -0,0 +1,182 @@ +#N canvas 54 22 842 789 10; +#X obj 225 24 gemhead 1; +#X obj 225 47 world_light; +#X obj 77 112 gemhead; +#X obj 77 171 glsl_vertex; +#X obj 148 131 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#X text 170 129 open a vertex-program; +#N canvas 0 22 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 91 130 pd open; +#X msg 35 142 print; +#X obj 77 733 rotateXYZ; +#X obj 126 714 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X obj 126 697 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X obj 126 680 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10 +-262144 -1 -1 0 256; +#X obj 206 25 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X obj 77 576 glsl_program; +#X obj 150 393 pack 0 0; +#X obj 143 246 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1 +-1; +#N canvas 0 22 450 300 open 0; +#X obj 75 103 openpanel; +#X obj 75 173 outlet; +#X obj 75 127 t b s; +#X msg 105 152 set open \$1; +#X obj 75 80 inlet; +#X connect 0 0 2 0; +#X connect 2 0 1 0; +#X connect 2 1 3 0; +#X connect 3 0 1 0; +#X connect 4 0 0 0; +#X restore 86 245 pd open; +#X text 164 244 open a fragment-program; +#X msg 34 266 print; +#X obj 171 373 t b f; +#X msg 335 92 bang; +#X obj 77 753 teapot; +#X obj 171 328 change; +#X obj 149 190 change; +#X msg 150 433 link \$1 \$2; +#X msg 33 486 print; +#X msg 266 546 Phong \$1; +#X obj 269 508 hsl 128 15 -1 1 0 0 empty empty empty -2 -6 0 8 -262144 +-1 -1 0 1; +#X floatatom 266 528 5 0 0 0 - - -; +#X obj 77 612 t a b; +#X obj 107 632 spigot; +#X obj 144 614 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X obj 107 652 i; +#X obj 135 652 + 1; +#X obj 163 652 % 360; +#X text 435 96 click here to load both the vertex- and the fragment-shader +; +#X text 165 172 the vertex shader; +#X obj 77 308 glsl_fragment; +#X text 191 311 the fragment shader; +#X text 222 395 whenever either the fragment-shader ID or the vertex-shader +ID has changed \, we trigger the linking of the 2 modules; +#X floatatom 171 354 2 0 0 0 ID - -; +#X floatatom 149 213 2 0 0 0 ID - -; +#X obj 168 454 print linking; +#X text 264 441 order of module IDs does not matter...; +#X text 96 487 after linking \, click "print" to get some info about +the compiled shader program; +#X text 330 550 the Toon-shader has a unifom variable "Phong" (see +"print") \, which we can change to modify the effect.; +#X text 213 264 pd's search path is searched for the given filename +\; just add the examples/data folder to your path options and this +example should work; +#X obj 335 133 t s s; +#X msg 91 150 open \$1.vert; +#X msg 86 265 open \$1.frag; +#X symbolatom 381 93 0 0 0 0 - - -; +#X obj 335 114 symbol ../data/Toon; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 1 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 39 51 pd gemwin; +#X msg 39 29 lighting \$1; +#X obj 39 10 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X connect 0 0 1 0; +#X connect 2 0 3 0; +#X connect 3 0 37 0; +#X connect 3 1 23 0; +#X connect 4 0 6 0; +#X connect 6 0 48 0; +#X connect 7 0 3 0; +#X connect 8 0 21 0; +#X connect 9 0 8 3; +#X connect 10 0 8 2; +#X connect 11 0 8 1; +#X connect 12 0 0 0; +#X connect 13 0 29 0; +#X connect 14 0 24 0; +#X connect 15 0 16 0; +#X connect 16 0 49 0; +#X connect 18 0 37 0; +#X connect 19 0 14 0; +#X connect 19 1 14 1; +#X connect 20 0 51 0; +#X connect 22 0 40 0; +#X connect 23 0 41 0; +#X connect 24 0 13 0; +#X connect 24 0 42 0; +#X connect 25 0 13 0; +#X connect 26 0 13 0; +#X connect 27 0 28 0; +#X connect 28 0 26 0; +#X connect 29 0 8 0; +#X connect 29 1 30 0; +#X connect 30 0 32 0; +#X connect 31 0 30 1; +#X connect 32 0 33 0; +#X connect 32 0 11 0; +#X connect 32 0 10 0; +#X connect 32 0 9 0; +#X connect 33 0 34 0; +#X connect 34 0 32 1; +#X connect 37 0 13 0; +#X connect 37 1 22 0; +#X connect 40 0 19 0; +#X connect 41 0 14 0; +#X connect 47 0 48 0; +#X connect 47 1 49 0; +#X connect 48 0 3 0; +#X connect 49 0 37 0; +#X connect 50 0 51 0; +#X connect 51 0 47 0; +#X connect 53 0 52 0; +#X connect 54 0 53 0; diff --git a/Gem/examples/02.advanced/19.pointer.pd b/Gem/examples/02.advanced/19.pointer.pd new file mode 100644 index 0000000..7db5c4f --- /dev/null +++ b/Gem/examples/02.advanced/19.pointer.pd @@ -0,0 +1,217 @@ +#N canvas 102 54 864 638 10; +#X obj 209 223 gemhead; +#X obj 241 277 t a a a; +#X obj 264 320 cube 1; +#X obj 238 66 world_light; +#X obj 238 41 gemhead; +#X obj 37 226 gemhead; +#X obj 37 321 sphere 1.3 33; +#X obj 287 300 rotateXYZ 60 30 0; +#X obj 37 300 rotateXYZ 60 30 0; +#X text 36 184 #1:; +#X text 209 181 #2:; +#X obj 37 428 sphere 1.3 33; +#X obj 37 407 rotateXYZ 60 30 0; +#X obj 209 248 t a a; +#X obj 595 288 gemlist; +#X obj 595 223 gemhead; +#X obj 595 250 t b b a; +#X obj 37 202 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 209 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 595 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 37 342 translateXYZ 2 0 0; +#X obj 37 449 translateXYZ 2 0 0; +#X obj 241 341 translateXYZ 2 0 0; +#X obj 209 386 t a a a; +#X obj 232 429 cube 1; +#X obj 255 409 rotateXYZ 60 30 0; +#X obj 209 450 translateXYZ 2 0 0; +#X obj 595 410 rotateXYZ 60 30 0; +#X obj 595 452 translateXYZ 2 0 0; +#X obj 595 431 sphere 1.6 4; +#X text 29 498 example #1 is the usual way to use Gem \, but the technique +shown in example #2 can be more flexible...; +#N canvas 186 321 446 463 more_interating_1 0; +#X obj 22 64 gemhead; +#X obj 22 351 rotateXYZ 0 0 12; +#X obj 22 274 scaleXYZ 0.97 0.9 1; +#X obj 22 296 translateXYZ 0.5 0 0; +#X obj 22 376 circle 0.2; +#X floatatom 131 331 5 0 0 0 - - -; +#X obj 22 226 gemlist; +#X obj 22 204 until; +#X msg 22 180 100; +#X obj 22 158 t b a; +#X obj 22 111 translateXYZ -3 0 0; +#X obj 22 43 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X text 85 198 "repeat" 100 times the same "gemlist"; +#X connect 0 0 10 0; +#X connect 1 0 4 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 5 0 1 3; +#X connect 6 0 2 0; +#X connect 7 0 6 0; +#X connect 8 0 7 0; +#X connect 9 0 8 0; +#X connect 9 1 6 1; +#X connect 10 0 9 0; +#X connect 11 0 0 0; +#X restore 32 561 pd more_interating_1; +#N canvas 178 159 464 582 more_interating_2 0; +#X obj 22 69 gemhead; +#X obj 22 377 scaleXYZ 0.97 0.9 1; +#X obj 22 505 circle 0.2; +#X obj 22 235 gemlist; +#X obj 22 213 until; +#X msg 22 189 100; +#X obj 22 167 t b a; +#X obj 185 322 f; +#X obj 277 309 random 1000; +#X obj 22 480 rotateXYZ 0 0 0; +#X obj 185 420 *; +#X obj 22 132 t a b; +#X obj 22 264 t a b b; +#X msg 277 283 seed \$1; +#X obj 277 256 f; +#X floatatom 295 234 5 0 0 0 - - -; +#X obj 277 334 - 500; +#X obj 185 441 / 1000; +#X obj 22 400 translateXYZ -0.5 0 0; +#X obj 22 103 translateXYZ 3 0 0; +#X obj 22 42 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X text 343 233 <- change random; +#X text 276 356 rotation angle is random; +#X text 200 390 amplitude decrease; +#X msg 203 296 100; +#X obj 222 351 - 1; +#X connect 0 0 19 0; +#X connect 1 0 18 0; +#X connect 3 0 12 0; +#X connect 4 0 3 0; +#X connect 5 0 4 0; +#X connect 6 0 5 0; +#X connect 6 1 3 1; +#X connect 7 0 25 0; +#X connect 7 0 10 0; +#X connect 8 0 16 0; +#X connect 9 0 2 0; +#X connect 10 0 17 0; +#X connect 11 0 6 0; +#X connect 11 1 24 0; +#X connect 11 1 14 0; +#X connect 12 0 1 0; +#X connect 12 1 7 0; +#X connect 12 2 8 0; +#X connect 13 0 8 0; +#X connect 14 0 13 0; +#X connect 15 0 14 1; +#X connect 16 0 10 1; +#X connect 17 0 9 3; +#X connect 18 0 9 0; +#X connect 19 0 11 0; +#X connect 20 0 0 0; +#X connect 24 0 7 1; +#X connect 25 0 7 1; +#X restore 32 581 pd more_interating_2; +#X obj 445 223 gemhead; +#X obj 445 198 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 443 178 #3:; +#X obj 445 410 rotateXYZ 60 30 0; +#X obj 445 452 translateXYZ 2 0 0; +#X obj 445 271 t a a; +#X text 593 178 #4:; +#X text 611 314 [gemlist] stores the current state; +#X text 613 330 and outputs it when banged; +#X text 30 528 The example #4 can easily be extended to use many primitives. +; +#X text 31 122 [gemhead]'s output is a special message describing the +"state" of the system. This state is changed by the GEM objects. This +means that the examples below are equivalent:; +#X obj 445 431 teapot 1; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 44 55 pd gemwin; +#N canvas 0 0 450 300 Gem.init 0; +#X obj 94 232 outlet; +#X obj 94 183 loadbang; +#X msg 94 208 lighting 1; +#X connect 1 0 2 0; +#X connect 2 0 0 0; +#X restore 44 36 pd Gem.init; +#X connect 0 0 13 0; +#X connect 1 0 22 0; +#X connect 1 1 2 0; +#X connect 1 2 7 0; +#X connect 4 0 3 0; +#X connect 5 0 8 0; +#X connect 6 0 20 0; +#X connect 8 0 6 0; +#X connect 11 0 21 0; +#X connect 12 0 11 0; +#X connect 13 0 23 0; +#X connect 13 1 1 0; +#X connect 14 0 27 0; +#X connect 15 0 16 0; +#X connect 16 0 14 0; +#X connect 16 1 14 0; +#X connect 16 2 14 1; +#X connect 17 0 5 0; +#X connect 18 0 0 0; +#X connect 19 0 15 0; +#X connect 20 0 12 0; +#X connect 23 0 26 0; +#X connect 23 1 24 0; +#X connect 23 2 25 0; +#X connect 27 0 29 0; +#X connect 29 0 28 0; +#X connect 33 0 38 0; +#X connect 34 0 33 0; +#X connect 36 0 44 0; +#X connect 38 0 36 0; +#X connect 38 1 36 0; +#X connect 44 0 37 0; +#X connect 46 0 45 0; diff --git a/Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd b/Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd new file mode 100644 index 0000000..518e853 --- /dev/null +++ b/Gem/examples/02.advanced/20.double-gemhead_vs_repeat.pd @@ -0,0 +1,184 @@ +#N canvas 265 100 742 519 10; +#X obj 93 144 gemhead; +#X obj 93 205 b; +#X obj 93 124 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 93 336 gemhead; +#X msg 25 305 0; +#X obj 25 285 loadbang; +#X obj 93 260 t b a; +#X obj 156 336 unpack 0 0 0; +#X obj 93 385 translateXYZ 0 -2 0; +#X msg 93 225 0 -2 0 \, 0 2 0; +#X text 203 225 two messages in one; +#X text 151 144 [gemhead]-"metro"; +#X obj 93 426 circle 0.2; +#X text 40 25 the "double [gemhead] idiom" vs. [repeat]; +#X obj 438 146 gemhead; +#X obj 438 128 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 479 375 unpack 0 0 0; +#X text 525 206 two messages in one; +#X obj 438 425 square 0.2; +#X obj 479 307 select 0 1; +#X obj 479 284 f; +#X obj 438 404 translateXYZ 0 0 0; +#X obj 354 341 loadbang; +#X msg 354 368 draw line; +#X obj 438 206 t a a b; +#X obj 438 229 separator; +#X obj 438 257 t a b; +#X msg 497 259 0; +#X msg 479 328 0 -2 0; +#X msg 511 348 0 2 0; +#X obj 508 284 + 1; +#X text 258 65 The gemhead object resets the states for OpenGL and +also some pix_ settings. Anything after it is starts as a clean state +similar to combining [separator] and [pix_separator]. (cc); +#N canvas 220 0 701 555 more_on_the_"repeat"_technics 0; +#X obj 21 54 gemhead; +#X obj 21 281 separator; +#X obj 21 128 t a b; +#X msg 118 270 seed 1; +#X obj 21 445 translateXYZ; +#X obj 21 470 circle 0.1; +#X obj 118 354 random 200; +#X obj 199 354 random 200; +#X obj 118 376 - 100; +#X obj 199 377 - 100; +#X obj 199 398 / 30; +#X obj 118 397 / 30; +#X msg 199 270 seed 2; +#X obj 21 310 t a b b; +#X obj 118 313 spigot 0; +#X obj 199 312 spigot 0; +#X obj 278 276 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 311 274 <- if you reset the random at the begining of each +frame \, then all frames look the same.; +#X obj 21 101 scaleXYZ 1 1 1; +#X floatatom 52 80 5 0 0 0 - - -; +#X floatatom 95 80 5 0 0 0 - - -; +#X obj 21 230 gemlist; +#X obj 21 208 until; +#X msg 21 184 100; +#X obj 21 162 t b a; +#X text 23 504 This patch shows how to draw the same primitive with +the a single [gemhead] many times; +#X obj 21 35 tgl 15 1 empty empty empty 17 7 0 10 -262144 -1 -1 0 1 +; +#X connect 0 0 18 0; +#X connect 1 0 13 0; +#X connect 2 0 24 0; +#X connect 2 1 3 0; +#X connect 2 1 12 0; +#X connect 3 0 14 0; +#X connect 4 0 5 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 11 0; +#X connect 9 0 10 0; +#X connect 10 0 4 2; +#X connect 11 0 4 1; +#X connect 12 0 15 0; +#X connect 13 0 4 0; +#X connect 13 1 6 0; +#X connect 13 1 7 0; +#X connect 14 0 6 0; +#X connect 15 0 7 0; +#X connect 16 0 14 1; +#X connect 16 0 15 1; +#X connect 18 0 2 0; +#X connect 19 0 18 1; +#X connect 20 0 18 2; +#X connect 21 0 1 0; +#X connect 22 0 21 0; +#X connect 23 0 22 0; +#X connect 24 0 23 0; +#X connect 24 1 21 1; +#X connect 26 0 0 0; +#X restore 370 469 pd more_on_the_"repeat"_technics; +#X obj 93 186 translateXYZ; +#X floatatom 120 168 5 0 0 0 - - -; +#X text 168 167 <- fun!; +#X obj 438 187 translateXYZ; +#X floatatom 465 169 5 0 0 0 - - -; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 53 69 pd gemwin; +#X connect 0 0 33 0; +#X connect 1 0 9 0; +#X connect 2 0 0 0; +#X connect 3 0 8 0; +#X connect 4 0 3 0; +#X connect 5 0 4 0; +#X connect 6 0 3 0; +#X connect 6 1 7 0; +#X connect 7 0 8 1; +#X connect 7 1 8 2; +#X connect 7 2 8 3; +#X connect 8 0 12 0; +#X connect 9 0 6 0; +#X connect 14 0 36 0; +#X connect 15 0 14 0; +#X connect 16 0 21 1; +#X connect 16 1 21 2; +#X connect 16 2 21 3; +#X connect 19 0 28 0; +#X connect 19 1 29 0; +#X connect 20 0 19 0; +#X connect 20 0 30 0; +#X connect 21 0 18 0; +#X connect 22 0 23 0; +#X connect 23 0 18 0; +#X connect 24 0 25 0; +#X connect 24 1 25 0; +#X connect 24 2 27 0; +#X connect 25 0 26 0; +#X connect 26 0 21 0; +#X connect 26 1 20 0; +#X connect 27 0 20 1; +#X connect 28 0 16 0; +#X connect 29 0 16 0; +#X connect 30 0 20 1; +#X connect 33 0 1 0; +#X connect 34 0 33 1; +#X connect 36 0 24 0; +#X connect 37 0 36 1; diff --git a/Gem/examples/02.advanced/21.basic_LSystem.pd b/Gem/examples/02.advanced/21.basic_LSystem.pd new file mode 100644 index 0000000..301b09a --- /dev/null +++ b/Gem/examples/02.advanced/21.basic_LSystem.pd @@ -0,0 +1,138 @@ +#N canvas 515 27 647 743 10; +#X obj 15 16 gemhead; +#X obj 76 483 GEMglPushMatrix; +#X obj 96 462 GEMglPopMatrix; +#X floatatom 353 502 5 0 0 0 - - -; +#X obj 15 63 rotateXYZ 0 0 90; +#X floatatom 201 508 5 0 0 0 - - -; +#X floatatom 201 486 5 0 0 0 - - -; +#X obj 262 35 gemhead; +#X obj 262 61 world_light; +#X obj 15 607 translateXYZ 0.05 0 0; +#X obj 15 140 route F; +#X text 271 163 <- rule 1; +#X obj 15 187 route F; +#X msg 15 211 F \, [ \, - \, F \, F \, ] \, F \, [ \, + \, F \, ] \, +F; +#X obj 15 235 route F; +#X text 272 209 <- rule 2; +#X text 271 257 <- rule 3; +#X msg 15 110 F; +#X obj 15 85 t b a; +#X obj 15 558 translateXYZ 0.05 0 0; +#X obj 15 583 rectangle 0.1 0.01; +#X obj 15 41 translateXYZ 0 -3 0; +#X obj 35 530 rotateXYZ 0 0 50; +#X obj 54 506 rotateXYZ 0 0 -40; +#X obj 353 521 / 100; +#X msg 353 479 10; +#X obj 353 456 loadbang; +#X text 243 485 <- try this; +#X text 125 310 <- create the primitive according to the Lsystem; +#X text 270 276 These rules create an Lsystem; +#X text 152 381 <- Store the current state sent by [gemhead] and distribute +it to the corresponding primitives; +#X text 397 502 <- size of the system; +#X msg 15 164 F \, [ \, - \, F \, ] \, F \, [ \, + \, F \, ] \, F; +#X text 12 640 This is a basic implementation of Lindenmayer System +(LSystem) in GEM. Wikipedia is a good place for informations about +Lsystems; +#X obj 15 351 gemlist; +#X obj 47 110 s \$0-gemlist; +#X obj 35 372 gemlist; +#X obj 54 395 gemlist; +#X obj 76 417 gemlist; +#X obj 96 438 gemlist; +#X obj 142 330 r \$0-gemlist; +#X obj 15 309 route F + - [ ]; +#X msg 15 259 F \, [ \, - \, F \, F \, ] \, F \, [ \, + \, F \, ] \, +F; +#N canvas 340 107 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 0 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X obj 350 150 t b; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 11 0; +#X connect 10 1 13 0; +#X connect 11 0 12 0; +#X connect 12 0 15 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 16 0; +#X connect 16 0 0 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 377 62 pd gemwin; +#N canvas 0 0 450 300 Gem.init 0; +#X obj 67 72 loadbang; +#X msg 67 93 lighting 1; +#X obj 67 114 outlet; +#X connect 0 0 1 0; +#X connect 1 0 2 0; +#X restore 377 40 pd Gem.init; +#X connect 0 0 21 0; +#X connect 3 0 24 0; +#X connect 4 0 18 0; +#X connect 5 0 22 3; +#X connect 6 0 23 3; +#X connect 7 0 8 0; +#X connect 10 0 32 0; +#X connect 10 1 12 0; +#X connect 12 0 13 0; +#X connect 12 1 14 0; +#X connect 13 0 14 0; +#X connect 14 0 42 0; +#X connect 14 1 41 0; +#X connect 17 0 10 0; +#X connect 18 0 17 0; +#X connect 18 1 35 0; +#X connect 19 0 20 0; +#X connect 20 0 9 0; +#X connect 21 0 4 0; +#X connect 24 0 9 1; +#X connect 24 0 19 1; +#X connect 24 0 20 1; +#X connect 25 0 3 0; +#X connect 26 0 25 0; +#X connect 32 0 12 0; +#X connect 34 0 19 0; +#X connect 36 0 22 0; +#X connect 37 0 23 0; +#X connect 38 0 1 0; +#X connect 39 0 2 0; +#X connect 40 0 34 1; +#X connect 40 0 36 1; +#X connect 40 0 37 1; +#X connect 40 0 38 1; +#X connect 40 0 39 1; +#X connect 41 0 34 0; +#X connect 41 1 36 0; +#X connect 41 2 37 0; +#X connect 41 3 38 0; +#X connect 41 4 39 0; +#X connect 42 0 41 0; +#X connect 44 0 43 0; diff --git a/Gem/examples/02.advanced/22.double-iterative.pd b/Gem/examples/02.advanced/22.double-iterative.pd new file mode 100644 index 0000000..218c30f --- /dev/null +++ b/Gem/examples/02.advanced/22.double-iterative.pd @@ -0,0 +1,118 @@ +#N canvas 0 0 473 588 10; +#X obj 32 103 gemhead; +#X obj 106 235 gemlist; +#X msg 106 192 20; +#X obj 106 213 until; +#X obj 32 149 route gem_state; +#X obj 32 171 route float; +#X obj 32 127 t a a; +#X obj 106 259 rotateXYZ 10 20 30; +#X obj 180 413 gemlist; +#X msg 180 370 20; +#X obj 180 391 until; +#X obj 106 327 route gem_state; +#X obj 106 349 route float; +#X obj 106 305 t a a; +#X obj 180 437 rotateXYZ 10 20 30; +#X obj 180 497 cube 0.1; +#X obj 106 280 separator; +#N canvas 0 0 450 300 light 0; +#X obj 225 45 gemhead 10; +#X floatatom 258 78 5 0 0 0 - - -; +#X floatatom 299 77 5 0 0 0 - - -; +#X floatatom 341 78 5 0 0 0 - - -; +#X msg 319 150 1 0 0; +#X obj 225 227 world_light; +#X msg 333 173 0.4 0.4 0.4; +#X msg 309 127 0 0 0; +#X obj 228 160 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 +1; +#X msg 228 181 debug \$1; +#X obj 225 103 rotateXYZ 0 30 0; +#X obj 27 51 gemhead 10; +#X floatatom 60 84 5 0 0 0 - - -; +#X floatatom 101 83 5 0 0 0 - - -; +#X floatatom 143 84 5 0 0 0 - - -; +#X msg 121 156 1 0 0; +#X obj 27 233 world_light; +#X msg 130 173 0.4 0.4 0.4; +#X msg 111 133 0 0 0; +#X obj 30 166 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1 +; +#X msg 30 187 debug \$1; +#X obj 27 109 rotateXYZ 0 -90 0; +#X msg 362 225 0.8 0.8 0.8; +#X msg 144 199 0.7 0.7 0.7; +#X msg 346 198 0.6 0.6 0.6; +#X obj 408 87 loadbang; +#X connect 0 0 10 0; +#X connect 1 0 10 1; +#X connect 2 0 10 2; +#X connect 3 0 10 3; +#X connect 4 0 5 1; +#X connect 6 0 5 1; +#X connect 7 0 5 1; +#X connect 8 0 9 0; +#X connect 9 0 5 0; +#X connect 10 0 5 0; +#X connect 11 0 21 0; +#X connect 12 0 21 1; +#X connect 13 0 21 2; +#X connect 14 0 21 3; +#X connect 15 0 16 1; +#X connect 17 0 16 1; +#X connect 18 0 16 1; +#X connect 19 0 20 0; +#X connect 20 0 16 0; +#X connect 21 0 16 0; +#X connect 22 0 5 1; +#X connect 23 0 16 1; +#X connect 24 0 5 1; +#X connect 25 0 23 0; +#X connect 25 0 24 0; +#X restore 300 152 pd light; +#X obj 300 131 gemwin; +#X msg 300 104 lighting 1 \, create \, 1; +#X obj 180 477 translateXYZ 0.3 0 0; +#X floatatom 252 414 5 0 0 0 - - -; +#X floatatom 292 415 5 0 0 0 - - -; +#X floatatom 334 415 5 0 0 0 - - -; +#X floatatom 254 456 5 0 0 0 - - -; +#X floatatom 300 456 5 0 0 0 - - -; +#X floatatom 342 457 5 0 0 0 - - -; +#X floatatom 176 236 5 0 0 0 - - -; +#X floatatom 216 237 5 0 0 0 - - -; +#X floatatom 258 237 5 0 0 0 - - -; +#X text 309 238 <- fun 1; +#X text 386 416 <- fun 2; +#X text 389 457 <- fun 3; +#X text 136 30 double iterative process; +#X connect 0 0 6 0; +#X connect 1 0 7 0; +#X connect 2 0 3 0; +#X connect 3 0 1 0; +#X connect 4 0 5 0; +#X connect 5 1 2 0; +#X connect 6 0 4 0; +#X connect 6 1 1 1; +#X connect 7 0 16 0; +#X connect 8 0 14 0; +#X connect 9 0 10 0; +#X connect 10 0 8 0; +#X connect 11 0 12 0; +#X connect 12 1 9 0; +#X connect 13 0 11 0; +#X connect 13 1 8 1; +#X connect 14 0 20 0; +#X connect 16 0 13 0; +#X connect 19 0 18 0; +#X connect 20 0 15 0; +#X connect 21 0 14 1; +#X connect 22 0 14 2; +#X connect 23 0 14 3; +#X connect 24 0 20 1; +#X connect 25 0 20 2; +#X connect 26 0 20 3; +#X connect 27 0 7 1; +#X connect 28 0 7 2; +#X connect 29 0 7 3; diff --git a/Gem/examples/02.advanced/23.SplitScreen.pd b/Gem/examples/02.advanced/23.SplitScreen.pd new file mode 100644 index 0000000..8c8a237 --- /dev/null +++ b/Gem/examples/02.advanced/23.SplitScreen.pd @@ -0,0 +1,342 @@ +#N canvas 26 51 799 698 10; +#N canvas 22 50 213 300 Gem.init 0; +#X obj 71 191 outlet; +#X obj 71 81 loadbang; +#X msg 101 134 reset; +#X obj 71 109 t b b; +#X msg 71 164 lighting 1; +#X connect 1 0 3 0; +#X connect 2 0 0 0; +#X connect 3 0 4 0; +#X connect 3 1 2 0; +#X connect 4 0 0 0; +#X restore 24 75 pd Gem.init; +#N canvas 330 97 682 322 gemwin 0; +#X obj 102 122 tgl 15 0 \$0-gemstart \$0-gemstart empty 17 7 0 10 -262144 +-1 -1 1 1; +#X obj 102 161 r \$0-gemstart; +#X obj 102 182 select 1 0; +#X msg 102 214 create \, 1; +#X msg 177 215 destroy; +#X obj 102 239 t a; +#X obj 318 54 inlet; +#X obj 318 255 gemwin; +#X obj 318 100 t a a; +#X obj 318 287 outlet; +#X obj 350 128 route create destroy; +#X msg 350 172 1; +#X obj 390 150 t b; +#X msg 390 172 0; +#X obj 350 195 t f; +#X msg 350 219 set \$1; +#X text 118 122 rendering; +#X obj 350 150 t b b; +#X msg 418 214 reset \, lighting 1 \, color 0.3 0.3 0.3; +#X connect 1 0 2 0; +#X connect 2 0 3 0; +#X connect 2 1 4 0; +#X connect 3 0 5 0; +#X connect 4 0 5 0; +#X connect 5 0 8 0; +#X connect 6 0 8 0; +#X connect 7 0 9 0; +#X connect 8 0 7 0; +#X connect 8 1 10 0; +#X connect 10 0 17 0; +#X connect 10 1 12 0; +#X connect 11 0 14 0; +#X connect 12 0 13 0; +#X connect 13 0 14 0; +#X connect 14 0 15 0; +#X connect 15 0 0 0; +#X connect 17 0 11 0; +#X connect 17 1 18 0; +#X connect 18 0 7 0; +#X coords 0 -1 1 1 85 40 1 100 100; +#X restore 24 99 pd gemwin; +#X obj 36 576 rotateXYZ; +#X obj 36 499 t a b; +#X obj 88 501 i; +#X obj 141 501 + 1; +#X obj 141 523 % 360; +#X obj 36 669 teapot; +#X obj 142 101 gemhead; +#X obj 142 123 world_light; +#X obj 36 417 gemreceive framehead 50; +#X obj 36 648 scale 1; +#N canvas 223 51 450 300 scale 0; +#X obj 114 26 inlet bang; +#X obj 114 256 outlet scale; +#X obj 114 48 t b b; +#X msg 145 116 5 \$1; +#X obj 114 117 del; +#X msg 114 159 1 \$1; +#X msg 114 71 1000; +#X msg 209 93 stop; +#X obj 209 115 t a a; +#X obj 114 138 f; +#X obj 115 95 t f f f; +#X obj 114 184 t a a; +#X obj 114 206 line; +#X msg 251 53 bang; +#X connect 0 0 2 0; +#X connect 2 0 6 0; +#X connect 2 1 7 0; +#X connect 3 0 11 0; +#X connect 4 0 9 0; +#X connect 5 0 11 0; +#X connect 6 0 10 0; +#X connect 7 0 8 0; +#X connect 8 0 4 0; +#X connect 9 0 5 0; +#X connect 10 0 4 0; +#X connect 10 1 3 0; +#X connect 10 2 9 1; +#X connect 11 0 12 0; +#X connect 12 0 1 0; +#X connect 13 0 2 0; +#X restore 120 620 pd scale; +#X msg 120 595 bang; +#X obj 88 523 t f f; +#X obj 88 545 t f f; +#X obj 120 574 select 0; +#X obj 36 439 separator; +#X obj 246 459 separator; +#X obj 246 525 t a b; +#X obj 298 527 i; +#X obj 351 527 + 1; +#X obj 351 549 % 360; +#X obj 298 549 t f f; +#X obj 298 571 t f f; +#X obj 246 437 gemreceive framehead 60; +#X obj 246 602 rotateXYZ 45 0 0; +#X obj 246 481 color 0 0 1; +#X obj 36 461 color 1 1 1; +#X obj 423 474 gemreceive framehead 70; +#X obj 423 496 separator; +#X obj 423 518 color 0 1 0; +#X obj 423 642 cube 0.5; +#X obj 423 562 depth; +#X obj 423 622 translateXYZ -0.4 -0.4 0.4; +#N canvas 1 51 450 447 move 0; +#X obj 128 403 outlet; +#X obj 128 326 unpack 0 0 0; +#X obj 128 380 pack 0 0 0; +#X obj 128 358 * -3.1; +#X obj 179 358 * -3.1; +#X obj 235 358 * 3.1; +#X obj 128 275 line; +#X obj 128 297 pack 0 0 0; +#X obj 223 248 line; +#X obj 223 270 t b f; +#X obj 297 247 line; +#X obj 297 269 t b f; +#X obj 133 159 select 0 1 2 3 4 5; +#X msg 116 188 1; +#X msg 152 187 1; +#X msg 223 189 1; +#X msg 190 190 0; +#X msg 255 187 0; +#X msg 290 185 0; +#X obj 133 78 loadbang; +#X obj 202 83 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 133 122 random 6; +#X obj 133 100 metro 500; +#X msg 129 251 \$1 1000; +#X msg 223 223 \$1 1000; +#X msg 297 222 \$1 1000; +#X connect 1 0 3 0; +#X connect 1 1 4 0; +#X connect 1 2 5 0; +#X connect 2 0 0 0; +#X connect 3 0 2 0; +#X connect 4 0 2 1; +#X connect 5 0 2 2; +#X connect 6 0 7 0; +#X connect 7 0 1 0; +#X connect 8 0 9 0; +#X connect 9 0 7 0; +#X connect 9 1 7 1; +#X connect 10 0 11 0; +#X connect 11 0 7 0; +#X connect 11 1 7 2; +#X connect 12 0 13 0; +#X connect 12 1 14 0; +#X connect 12 2 16 0; +#X connect 12 3 15 0; +#X connect 12 4 17 0; +#X connect 12 5 18 0; +#X connect 13 0 23 0; +#X connect 14 0 24 0; +#X connect 15 0 25 0; +#X connect 16 0 24 0; +#X connect 17 0 23 0; +#X connect 18 0 25 0; +#X connect 19 0 22 0; +#X connect 20 0 22 0; +#X connect 21 0 12 0; +#X connect 22 0 21 0; +#X connect 23 0 6 0; +#X connect 24 0 8 0; +#X connect 25 0 10 0; +#X restore 517 558 pd move; +#X obj 423 584 translateXYZ; +#X obj 517 580 unpack 0 0 0; +#X obj 630 620 sphere; +#X obj 630 590 color 1 0 0; +#X obj 630 568 translateXYZ 0 3 0; +#X obj 630 522 gemreceive framehead1; +#X obj 630 544 separator; +#X text 38 23 split-screen; +#X obj 260 13 cnv 15 500 240 empty empty SplitScreen1 20 12 0 14 -233017 +-66577 0; +#X obj 260 260 cnv 15 500 140 empty empty SplitScreen2 20 12 0 14 -233017 +-66577 0; +#X obj 276 286 gemhead 1; +#X obj 588 346 pix_texture; +#X obj 276 308 gemframebuffer; +#X obj 276 372 s framehead; +#X obj 588 301 gemhead 60; +#X obj 588 322 translateXYZ 2 0 0; +#X obj 276 330 rotateXYZ 90 0 0; +#X obj 276 350 translateXYZ 0 -4 0; +#X obj 588 368 square 1.9; +#X obj 277 41 gemhead 1; +#X obj 588 117 pix_texture; +#X obj 277 141 translateXYZ 0 0 -4; +#X obj 588 71 gemhead 50; +#X obj 588 93 translateXYZ -2 0 0; +#X obj 309 185 s framehead; +#N canvas 1 51 450 300 view 0; +#X obj 89 284 outlet rotate; +#X obj 237 283 outlet translate; +#X obj 81 50 inlet; +#X obj 81 72 route view; +#X obj 81 124 unpack 0 0 0 0 0; +#X obj 81 146 pack 0 0 0; +#X obj 89 245 pack 0 0 0; +#X obj 81 94 pack 0 0 0 0 0; +#X obj 89 222 f; +#X obj 89 199 t b f; +#X connect 2 0 3 0; +#X connect 3 0 7 0; +#X connect 4 0 5 0; +#X connect 4 1 5 1; +#X connect 4 2 5 2; +#X connect 4 3 9 0; +#X connect 4 4 8 1; +#X connect 5 0 1 0; +#X connect 6 0 0 0; +#X connect 7 0 4 0; +#X connect 8 0 6 0; +#X connect 9 0 8 0; +#X connect 9 1 6 1; +#X restore 454 64 pd view; +#X obj 277 63 gemframebuffer; +#X obj 588 139 square 1.9; +#X obj 277 163 t a a; +#X obj 326 121 unpack 0 0 0; +#X obj 305 82 unpack 0 0 0; +#X obj 277 102 rotateXYZ 0 0 0; +#X msg 454 40 view 0 0 -4 \$1; +#X obj 277 213 s framehead1; +#X obj 588 50 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 263 17 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X obj 263 263 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 588 278 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 +1; +#X obj 423 540 ortho; +#X obj 246 664 square 1; +#X obj 246 503 translateXYZ 3 -2 0; +#X text 14 161 this will render a single scene; +#X text 13 189 from two different view-points; +#X text 13 175 into two framebuffers.; +#X text 16 224 the red sphere is only rendered; +#X text 18 240 in the left-hand "screen".; +#X obj 454 23 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -8 0 10 +-262144 -1 -1 0 256; +#X floatatom 141 549 5 0 0 0 - - -, f 5; +#X connect 0 0 1 0; +#X connect 2 0 11 0; +#X connect 3 0 2 0; +#X connect 3 1 4 0; +#X connect 4 0 14 0; +#X connect 5 0 6 0; +#X connect 6 0 4 1; +#X connect 8 0 9 0; +#X connect 10 0 17 0; +#X connect 11 0 7 0; +#X connect 12 0 11 1; +#X connect 13 0 12 0; +#X connect 14 0 15 0; +#X connect 14 1 5 0; +#X connect 15 0 2 1; +#X connect 15 1 16 0; +#X connect 16 0 13 0; +#X connect 17 0 28 0; +#X connect 18 0 27 0; +#X connect 19 0 26 0; +#X connect 19 1 20 0; +#X connect 20 0 23 0; +#X connect 21 0 22 0; +#X connect 22 0 20 1; +#X connect 23 0 24 0; +#X connect 23 1 21 0; +#X connect 24 0 26 3; +#X connect 25 0 18 0; +#X connect 26 0 75 0; +#X connect 27 0 76 0; +#X connect 28 0 3 0; +#X connect 29 0 30 0; +#X connect 30 0 31 0; +#X connect 31 0 74 0; +#X connect 33 0 36 0; +#X connect 34 0 32 0; +#X connect 35 0 37 0; +#X connect 36 0 34 0; +#X connect 37 0 36 1; +#X connect 37 1 36 2; +#X connect 37 2 36 3; +#X connect 39 0 38 0; +#X connect 40 0 39 0; +#X connect 41 0 42 0; +#X connect 42 0 40 0; +#X connect 46 0 48 0; +#X connect 47 0 54 0; +#X connect 48 0 52 0; +#X connect 48 1 47 1; +#X connect 50 0 51 0; +#X connect 51 0 47 0; +#X connect 52 0 53 0; +#X connect 53 0 49 0; +#X connect 55 0 62 0; +#X connect 56 0 63 0; +#X connect 57 0 64 0; +#X connect 58 0 59 0; +#X connect 59 0 56 0; +#X connect 61 0 66 0; +#X connect 61 1 65 0; +#X connect 62 0 67 0; +#X connect 62 1 56 1; +#X connect 64 0 69 0; +#X connect 64 1 60 0; +#X connect 65 0 57 1; +#X connect 65 1 57 2; +#X connect 65 2 57 3; +#X connect 66 0 67 1; +#X connect 66 1 67 2; +#X connect 66 2 67 3; +#X connect 67 0 57 0; +#X connect 68 0 61 0; +#X connect 70 0 58 0; +#X connect 71 0 55 0; +#X connect 72 0 46 0; +#X connect 73 0 50 0; +#X connect 74 0 33 0; +#X connect 76 0 19 0; +#X connect 82 0 68 0; +#X connect 83 0 2 2; diff --git a/Gem/examples/02.advanced/snapshotHD.pd b/Gem/examples/02.advanced/snapshotHD.pd new file mode 100644 index 0000000..1e3d1bd --- /dev/null +++ b/Gem/examples/02.advanced/snapshotHD.pd @@ -0,0 +1,114 @@ +#N canvas 143 49 609 575 10; +#X obj 152 105 gemframebuffer; +#X obj 179 148 translateXYZ 0 0 -4; +#X obj 152 126 t a a; +#X obj 242 181 inlet; +#X msg 224 84 dimen \$1 \$2; +#X obj 179 169 outlet; +#X obj 224 64 t l l; +#X obj 317 41 /; +#X obj 317 62 t f f; +#X obj 317 82 * -1; +#X obj 317 103 pack f f; +#X msg 317 126 perspec \$1 \$2 -1 1 1 20; +#X obj 374 352 pix_texture; +#X obj 70 16 loadbang; +#X obj 365 181 * 4; +#X msg 365 202 \$1 4; +#X obj 435 181 /; +#X msg 435 161 4 \$1; +#X msg 435 202 4 \$1; +#X obj 365 225 spigot; +#X obj 435 225 spigot; +#X obj 402 263 unpack f f; +#X obj 374 373 rectangle 4 4; +#X obj 347 394 rectangle 4 4; +#X obj 295 342 loadbang; +#X msg 295 363 draw line; +#X obj 401 202 < 1; +#X obj 477 202 >= 1; +#X obj 347 321 t a a; +#X obj 152 84 inlet; +#X obj 347 300 gemhead 100000; +#X msg 225 13 bang; +#X obj 152 548 pix_buffer \$0-buf 1; +#X obj 167 432 pix_buffer_write \$0-buf; +#X msg 313 392 0; +#X msg 152 521 save \$1 0; +#X msg 152 474 bang; +#X obj 152 323 spigot; +#X msg 185 303 1; +#X msg 200 323 0; +#X obj 242 201 route symbol; +#X obj 242 219 symbol; +#X obj 242 239 t s b; +#X obj 294 237 t b; +#X obj 224 43 pack \$1 \$2; +#X obj 167 410 pix_snap 0 0 \$1 \$2; +#X obj 152 501 symbol \$3; +#X obj 152 343 t b a b b b; +#X obj 167 374 t a b a; +#X text 453 523 (c) Jack/RYBN 2011; +#X connect 0 0 2 0; +#X connect 0 1 12 1; +#X connect 1 0 5 0; +#X connect 2 0 37 0; +#X connect 2 1 1 0; +#X connect 3 0 40 0; +#X connect 4 0 0 0; +#X connect 6 0 4 0; +#X connect 6 1 7 0; +#X connect 7 0 8 0; +#X connect 8 0 9 0; +#X connect 8 0 14 0; +#X connect 8 0 17 0; +#X connect 8 1 10 1; +#X connect 8 1 26 0; +#X connect 8 1 27 0; +#X connect 9 0 10 0; +#X connect 10 0 11 0; +#X connect 11 0 0 0; +#X connect 12 0 22 0; +#X connect 13 0 44 0; +#X connect 14 0 15 0; +#X connect 15 0 19 0; +#X connect 16 0 18 0; +#X connect 17 0 16 0; +#X connect 18 0 20 0; +#X connect 19 0 21 0; +#X connect 20 0 21 0; +#X connect 21 0 22 1; +#X connect 21 0 23 1; +#X connect 21 1 22 2; +#X connect 21 1 23 2; +#X connect 24 0 25 0; +#X connect 25 0 23 0; +#X connect 26 0 19 1; +#X connect 27 0 20 1; +#X connect 28 0 23 0; +#X connect 28 1 12 0; +#X connect 29 0 0 0; +#X connect 30 0 28 0; +#X connect 31 0 44 0; +#X connect 34 0 33 1; +#X connect 35 0 32 0; +#X connect 36 0 46 0; +#X connect 37 0 47 0; +#X connect 38 0 37 1; +#X connect 39 0 37 1; +#X connect 40 0 41 0; +#X connect 40 1 43 0; +#X connect 41 0 42 0; +#X connect 42 0 46 1; +#X connect 42 1 43 0; +#X connect 43 0 38 0; +#X connect 44 0 6 0; +#X connect 45 0 33 0; +#X connect 46 0 35 0; +#X connect 47 0 36 0; +#X connect 47 1 48 0; +#X connect 47 3 34 0; +#X connect 47 4 39 0; +#X connect 48 0 45 0; +#X connect 48 1 45 0; +#X connect 48 2 45 0; |