#N canvas 221 0 695 553 10; #X obj 22 40 3dp_windowcontext; #X obj 22 15 metro 40; #X obj 22 -5 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1 ; #X obj 22 67 3dp_push; #X obj 180 126 3dp_light; #X floatatom 301 85 5 0 0 0 - - -; #X obj 22 97 3dp_mouserotate; #X obj 180 104 3dp_view transz 10; #X obj 23 207 3dp_draw sphere 1; #X obj 317 128 3dp_for 3; #X obj 317 151 3dp_push; #X obj 368 215 3dp_draw cube 0.5; #X obj 23 177 3dp_push; #X obj 368 189 3dp_view transy; #X obj 468 158 * 1; #X floatatom 484 134 5 0 0 0 - - -; #X obj 180 84 3dp_view roty; #X floatatom 266 66 5 0 0 0 - - -; #X floatatom 391 102 5 0 0 0 - - -; #X obj 63 413 3dp_mode texture; #X text 28 244 saving a (matrix) state can be accomplished by the 3dp_push object. the default matrix is the modelview matrix. it works as follows: both the right and the left outlet propagate the same matrix state as the input. so in short you can use 3dp_push to split your rendering tree into parallel branches. the matrix types that can be pushed are: modelview \, texture \, color \, projection. setting a current matrix can be done using the 3dp_mode object. i.e. will map all geometric transforms to the texture matrix \, for texture coordinate animation. the left outlet restores the current matrix back to the modelview matrix. ; #X text 27 418 i.e; #X text 185 418 will map all geometric transforms; #X text 27 431 to the texture matrix \, for texture coordinate animation. the left outlet restores the current matrix back to the modelview matrix. ; #X text 46 -6 <-- start here; #X text 34 501 bitch made doc for PDP 0.12.4 - http://delcorp.org/abbadingo ; #X connect 0 0 3 0; #X connect 0 1 6 1; #X connect 1 0 0 0; #X connect 2 0 1 0; #X connect 3 0 6 0; #X connect 3 1 16 0; #X connect 5 0 7 1; #X connect 6 0 12 0; #X connect 7 0 4 0; #X connect 9 0 10 0; #X connect 9 1 14 0; #X connect 10 1 13 0; #X connect 12 0 8 0; #X connect 12 1 9 0; #X connect 13 0 11 0; #X connect 14 0 13 1; #X connect 15 0 14 1; #X connect 16 0 7 0; #X connect 17 0 16 1; #X connect 18 0 9 1;