Forums > Jitter

inverse kinematics

April 15, 2007 | 2:34 pm

hi all, been dabbling with inverse ik for fun.
cant get it, i believe its something with my transform order in opengl.
any help would be excellent.
there are some resources on the net. the one i’ve followed.
http://www.friendsofed.com/samples/1590595181.pdf

i guess OO would be a better approach but i’d like to tackle this in plain
max.

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 544 342 36 9109513 * -180.;
#P newex 544 321 52 9109513 / 3.141593;
#P newex 544 296 60 9109513 atan2;
#P newex 289 270 37 9109513 v ang1;
#P newex 312 195 41 9109513 v mosy;
#P newex 267 195 40 9109513 v mosx;
#P newex 356 220 40 9109513 t f f b;
#P newex 234 196 28 9109513 t f f;
#P newex 356 373 199 9109513 pack 0. 0. 0.;
#P newex 450 246 89 9109513 expr sin($f1) * 0.35;
#P newex 356 246 92 9109513 expr cos($f1) * 0.35;
#P window linecount 2;
#P message 356 404 384 9109513 reset , glmatrixmode modelview ,
glpushmatrix , glcolor 1 0 0 , gltranslate $1 $2 , glrotate $3 0 0 1
, glbegin triangles , glvertex -0.1 0 , glvertex 0 0.35 , glvertex 0.1 0
, glend , glpopmatrix;
#P window linecount 1;
#P message 425 445 51 9109513 getcmdlist;
#P newex 411 467 26 9109513 print;
#P newex 356 445 66 9109513 jit.gl.sketch ik;
#P message 303 442 51 9109513 getcmdlist;
#P newex 289 464 26 9109513 print;
#P newex 234 442 66 9109513 jit.gl.sketch ik;
#P window linecount 10;
#P message 234 294 82 9109513 reset , glmatrixmode modelview ,
glpushmatrix , glrotate $1 0 0 1 , glbegin triangles , glvertex -0.1 0
, glvertex 0 0.35 , glvertex 0.1 0 , glend , glpopmatrix;
#P window linecount 1;
#P newex 234 150 60 9109513 unpack 0. 0.;
#P newex 252 246 36 9109513 * -180.;
#P newex 252 225 52 9109513 / 3.141593;
#P flonum 252 271 35 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 234 172 60 9109513 atan2;
#P newex 192 126 44 9109513 zl slice 2;
#P newex 100 126 89 9109513 route screentoworld;
#P message 64 80 91 9109513 screentoworld $1 $2;
#P newex 514 48 26 9109513 print;
#P message 455 71 87 9109513 0.240244 0.364508;
#P newex 455 48 57 9109513 prepend set;
#P message 10 136 41 9109513 name ik;
#P newex 64 58 44 9109513 zl slice 2;
#P newex 64 36 74 9109513 route mouseidle;
#P newex 64 14 27 9109513 r ms;
#P newex 170 361 29 9109513 s ms;
#P user jit.pwindow 9 154 202 202 0 1 1 1 1 0;
#X name ik;
#P newex 4 76 53 9109513 t b b erase;
#P toggle 4 32 15 0;
#P newex 4 53 45 9109513 qmetro 5;
#P newex 46 104 64 9109513 jit.gl.render ik;
#P connect 2 0 1 0;
#P connect 1 0 3 0;
#P connect 9 0 4 0;
#P connect 3 2 0 0;
#P fasten 3 0 0 0 9 99 51 99;
#P connect 13 0 0 0;
#P connect 6 0 7 0;
#P connect 7 0 8 0;
#P connect 8 0 13 0;
#P connect 0 1 14 0;
#P fasten 4 1 5 0 205 358 175 358;
#P connect 14 0 15 0;
#P fasten 15 0 20 0 197 147 239 147;
#P connect 20 0 16 0;
#P fasten 16 0 32 0 239 193 239 193;
#P fasten 17 0 21 0 257 288 239 288;
#P connect 21 0 22 0;
#P fasten 24 0 22 0 308 439 239 439;
#P connect 32 1 18 0;
#P connect 18 0 19 0;
#P connect 19 0 17 0;
#P connect 20 0 34 0;
#P connect 20 1 16 1;
#P fasten 19 0 36 0 257 267 294 267;
#P connect 22 1 23 0;
#P connect 20 1 35 0;
#P fasten 32 0 33 0 239 218 361 218;
#P connect 33 0 29 0;
#P connect 29 0 31 0;
#P connect 31 0 28 0;
#P fasten 27 0 25 0 430 442 361 442;
#P connect 28 0 25 0;
#P connect 25 1 26 0;
#P fasten 33 1 30 0 376 243 455 243;
#P connect 30 0 31 1;
#P connect 10 0 11 0;
#P fasten 29 0 37 0 361 280 549 280;
#P connect 37 0 38 0;
#P connect 38 0 39 0;
#P connect 39 0 31 2;
#P fasten 30 0 37 1 455 280 599 280;
#P window clipboard copycount 40;


April 16, 2007 | 3:29 pm

I don’t know a second thing about IK, but it sure is a fun patch to play around with.

What exactly should the red arrow be doing, just follow the gray one?

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 442 435 41 196617 * 0.95;
#P newex 427 374 41 196617 t b b b;
#P newex 493 406 27 196617 f;
#P newex 442 406 27 196617 f;
#P newex 476 467 27 196617 + 0.;
#P newex 493 435 41 196617 * 0.05;
#P newex 510 349 46 196617 * -180.;
#P newex 510 326 71 196617 / 3.141593;
#P newex 510 304 60 196617 atan2;
#P newex 260 204 40 196617 t f f f;
#P newex 368 489 118 196617 pack 0. 0. 0.;
#P newex 368 235 113 196617 expr sin($f1) * 0.35;
#P newex 484 235 111 196617 expr cos($f1) * 0.35;
#P window linecount 2;
#P message 368 512 443 196617 reset , glmatrixmode modelview , glpushmatrix , glcolor 1 0 0 , gltranslate $1 $2 , glrotate $3 0 0 1 , glbegin triangles , glvertex -0.1 0 , glvertex 0 0.35 , glvertex 0.1 0 , glend , glpopmatrix;
#P window linecount 1;
#P newex 438 573 40 196617 print;
#P newex 368 547 80 196617 jit.gl.sketch ik;
#P newex 330 459 40 196617 print;
#P newex 260 434 80 196617 jit.gl.sketch ik;
#P window linecount 10;
#P message 260 302 101 196617 reset , glmatrixmode modelview , glpushmatrix , glrotate $1 0 0 1 , glbegin triangles , glvertex -0.1 0 , glvertex 0 0.35 , glvertex 0.1 0 , glend , glpopmatrix;
#P window linecount 1;
#P newex 260 158 60 196617 unpack 0. 0.;
#P newex 260 254 50 196617 * -180.;
#P newex 260 233 71 196617 / 3.141593;
#P flonum 260 279 35 9 0 0 0 3 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 260 180 60 196617 atan2;
#P newex 238 134 58 196617 zl slice 2;
#P newex 126 134 108 196617 route screentoworld;
#P message 71 87 110 196617 screentoworld $1 $2;
#P message 17 143 41 196617 name ik;
#P newex 71 65 58 196617 zl slice 2;
#P newex 71 43 88 196617 route mouseidle;
#P newex 71 21 27 196617 r ms;
#P newex 196 369 29 196617 s ms;
#P user jit.pwindow 16 166 202 202 0 1 1 1 1 0;
#X name ik;
#P newex 11 83 53 196617 t b b erase;
#P toggle 11 39 15 0;
#P newex 11 60 59 196617 qmetro 5;
#P newex 53 111 83 196617 jit.gl.render ik;
#P connect 32 0 33 1;
#P connect 32 0 26 2;
#P connect 25 0 26 0;
#P connect 25 0 28 0;
#P fasten 24 0 26 1 489 266 427 266;
#P connect 24 0 28 1;
#P connect 2 0 1 0;
#P connect 1 0 3 0;
#P connect 9 0 4 0;
#P connect 10 0 0 0;
#P fasten 3 0 0 0 16 106 58 106;
#P connect 3 2 0 0;
#P connect 6 0 7 0;
#P connect 7 0 8 0;
#P connect 8 0 10 0;
#P connect 0 1 11 0;
#P connect 18 0 19 0;
#P fasten 4 1 5 0 212 366 201 366;
#P connect 19 1 20 0;
#P connect 11 0 12 0;
#P fasten 12 0 17 0 243 155 265 155;
#P connect 17 0 13 0;
#P fasten 13 0 27 0 265 201 265 201;
#P connect 27 0 15 0;
#P connect 15 0 16 0;
#P connect 16 0 14 0;
#P fasten 14 0 18 0 265 296 265 296;
#P connect 17 1 13 1;
#P fasten 27 1 25 0 280 228 373 228;
#P connect 35 0 26 0;
#P connect 26 0 23 0;
#P connect 23 0 21 0;
#P connect 21 1 22 0;
#P connect 3 1 35 0;
#P connect 35 1 33 0;
#P connect 33 0 36 0;
#P fasten 36 0 32 0 447 459 481 459;
#P fasten 27 2 24 0 295 223 489 223;
#P connect 35 2 34 0;
#P connect 34 0 31 0;
#P connect 31 0 32 1;
#P connect 28 0 29 0;
#P connect 29 0 30 0;
#P connect 30 0 34 1;
#P window clipboard copycount 37;


April 16, 2007 | 6:57 pm

On Apr 15, 2007, at 10:34 AM, yair reshef wrote:

> hi all, been dabbling with inverse ik for fun.
> cant get it, i believe its something with my transform order in
> opengl.
> any help would be excellent.

quick fix: swap sin and cos and it’ll work (i.e. x=sin, y=cos)
or… they did dy/dx in the pdf, and you did dx/dy in the patch…


Matthew Lewis
Advanced Computing Center for the Arts and Design (ACCAD)
The Ohio State University

http://accad.osu.edu/~mlewis


April 17, 2007 | 10:49 am

that patch is fun.

on a side note, I’ve been meaning to make a GUI widget that turns
circular mouse movements into rotation information… so here it is
based in part off of your patch. It’s probably not the most
efficient or correct way to do it, but it works!

Called "Spinner.pat" – http://lowfrequency.org/interactivity/wiki/
index.php?title=User:EvanR

cheers
evan

On Apr 16, 2007, at 7:58 PM, Matthew Lewis wrote:

> On Apr 15, 2007, at 10:34 AM, yair reshef wrote:
>
>> hi all, been dabbling with inverse ik for fun.
>> cant get it, i believe its something with my transform order in
>> opengl.
>> any help would be excellent.
>
> quick fix: swap sin and cos and it’ll work (i.e. x=sin, y=cos)
> or… they did dy/dx in the pdf, and you did dx/dy in the patch…
>
> –
> Matthew Lewis
> Advanced Computing Center for the Arts and Design (ACCAD)
> The Ohio State University
> http://accad.osu.edu/~mlewis
>


April 17, 2007 | 3:45 pm

thanks Matthew, i had a few problems with my syntax, and of course your fixes were in need.
here is a revised patch. most of this stuff can be subpatched…

#P window setfont "Sans Serif" 9.;
#P window linecount 3;
#P comment 567 158 122 9109513 < < to add more "bones" duplicate this chain and change values;
#P window linecount 1;
#P newex 790 360 59 9109513 t b l l;
#P newex 916 393 59 9109513 zl slice 2;
#P newex 916 415 53 9109513 v seg2xy;
#B color 14;
#P newex 814 507 66 9109513 jit.gl.sketch ik;
#P window linecount 8;
#P message 814 392 98 9109513 reset , gltranslate $1 $2 , glrotate $3 0 0 1 , glcolor 0 0 1 , glbegin triangles , glvertex -0.05 0 , glvertex 0 0.25 , glvertex 0.05 0 , glendy;
#P window linecount 1;
#P newex 789 156 53 9109513 v seg1xy;
#B color 14;
#P newex 790 288 64 9109513 unpack 0. 0.;
#N vpatcher 710 356 847 548;
#P outlet 8 161 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 8 72 60 9109513 unpack 0. 0.;
#P comment 43 51 75 9109513 reverse x and y;
#P newex 9 50 31 9109513 zl rev;
#P newex 74 137 33 9109513 * 180.;
#P newex 74 116 52 9109513 / 3.141593;
#P newex 8 94 60 9109513 atan2;
#P inlet 9 30 15 0;
#P outlet 74 161 15 0;
#P connect 5 0 7 0;
#P connect 7 0 2 0;
#P connect 2 0 8 0;
#P connect 1 0 5 0;
#P connect 7 1 2 1;
#P fasten 2 0 3 0 13 114 79 114;
#P connect 3 0 4 0;
#P connect 4 0 0 0;
#P pop;
#P newobj 807 249 49 9109513 p rad2ang;
#P newex 895 288 125 9109513 t f f;
#P newex 863 204 53 9109513 v seg2xy;
#B color 14;
#P newex 807 226 66 9109513 vexpr $f1-$f2;
#P newex 1026 288 33 9109513 – 90.;
#P newex 790 177 44 9109513 t l l b;
#P newex 790 337 247 9109513 pack 0. 0. 0.;
#P newex 908 315 112 9109513 expr $f1-sin($f2) * 0.25;
#P newex 790 315 115 9109513 expr $f1-cos($f2) * 0.25;
#P newex 511 360 59 9109513 t b l l;
#P newex 635 393 59 9109513 zl slice 2;
#P newex 635 415 53 9109513 v seg1xy;
#B color 14;
#P newex 535 507 66 9109513 jit.gl.sketch ik;
#P window linecount 8;
#P message 535 392 96 9109513 reset , gltranslate $1 $2 , glrotate $3 0 0 1 , glcolor 1 0 0 , glbegin triangles , glvertex -0.05 0 , glvertex 0 0.25 , glvertex 0.05 0 , glendy;
#P window linecount 1;
#P newex 1020 300 33 9109513 – 90.;
#P window setfont "Sans Serif" 14.;
#P comment 165 33 124 9109518 inverse ik example;
#P window setfont "Sans Serif" 9.;
#P newex 229 361 59 9109513 t b l l;
#P newex 510 156 53 9109513 v seg0xy;
#B color 14;
#P newex 511 288 64 9109513 unpack 0. 0.;
#N vpatcher 710 356 847 548;
#P outlet 8 161 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 8 72 60 9109513 unpack 0. 0.;
#P comment 43 51 75 9109513 reverse x and y;
#P newex 9 50 31 9109513 zl rev;
#P newex 74 137 33 9109513 * 180.;
#P newex 74 116 52 9109513 / 3.141593;
#P newex 8 94 60 9109513 atan2;
#P inlet 9 30 15 0;
#P outlet 74 161 15 0;
#P connect 5 0 7 0;
#P connect 7 0 2 0;
#P connect 2 0 8 0;
#P connect 1 0 5 0;
#P connect 7 1 2 1;
#P fasten 2 0 3 0 13 114 79 114;
#P connect 3 0 4 0;
#P connect 4 0 0 0;
#P pop;
#P newobj 528 249 49 9109513 p rad2ang;
#P newex 616 288 125 9109513 t f f;
#P newex 584 204 53 9109513 v seg1xy;
#B color 14;
#P newex 528 226 66 9109513 vexpr $f1-$f2;
#P newex 747 288 33 9109513 – 90.;
#P newex 511 177 44 9109513 t l l b;
#P newex 511 337 247 9109513 pack 0. 0. 0.;
#P newex 629 315 112 9109513 expr $f1-sin($f2) * 0.25;
#P newex 511 315 115 9109513 expr $f1-cos($f2) * 0.25;
#P newex 348 394 59 9109513 zl slice 2;
#P newex 348 416 53 9109513 v seg0xy;
#P newex 229 288 64 9109513 unpack 0. 0.;
#N vpatcher 710 356 847 548;
#P outlet 8 161 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 8 72 60 9109513 unpack 0. 0.;
#P comment 43 51 75 9109513 reverse x and y;
#P newex 9 50 31 9109513 zl rev;
#P newex 74 137 33 9109513 * 180.;
#P newex 74 116 52 9109513 / 3.141593;
#P newex 8 94 60 9109513 atan2;
#P inlet 9 30 15 0;
#P outlet 74 161 15 0;
#P connect 5 0 7 0;
#P connect 7 0 2 0;
#P connect 2 0 8 0;
#P connect 1 0 5 0;
#P connect 7 1 2 1;
#P fasten 2 0 3 0 13 114 79 114;
#P connect 3 0 4 0;
#P connect 4 0 0 0;
#P pop;
#P newobj 246 249 49 9109513 p rad2ang;
#P newex 334 288 125 9109513 t f f;
#P newex 302 204 53 9109513 v seg0xy;
#P newex 246 226 66 9109513 vexpr $f1-$f2;
#P newex 465 288 33 9109513 – 90.;
#P newex 229 177 44 9109513 t l l b;
#P newex 229 337 247 9109513 pack 0. 0. 0.;
#P newex 347 315 112 9109513 expr $f1-sin($f2) * 0.25;
#P newex 229 315 115 9109513 expr $f1-cos($f2) * 0.25;
#P newex 253 507 66 9109513 jit.gl.sketch ik;
#P window linecount 8;
#P message 253 393 91 9109513 reset , gltranslate $1 $2 , glrotate $3 0 0 1 , glcolor 0 1 0 , glbegin triangles , glvertex -0.05 0 , glvertex 0 0.25 , glvertex 0.05 0 , glendy;
#P window linecount 1;
#P newex 229 156 44 9109513 zl slice 2;
#P newex 97 133 89 9109513 route screentoworld;
#P message 61 87 91 9109513 screentoworld $1 $2;
#P message 7 143 41 9109513 name ik;
#P newex 61 65 44 9109513 zl slice 2;
#P newex 61 43 74 9109513 route mouseidle;
#P newex 61 21 27 9109513 r ms;
#P newex 167 368 29 9109513 s ms;
#P user jit.pwindow 6 161 202 202 0 1 1 1 1 0;
#X name ik;
#P newex 1 83 53 9109513 t b b erase;
#P toggle 1 39 15 0;
#P newex 1 60 45 9109513 qmetro 5;
#P newex 43 111 64 9109513 jit.gl.render ik;
#P comment 165 54 252 9109513 see: http://www.friendsofed.com/samples/1590595181.pdf;
#P connect 3 0 2 0;
#P connect 2 0 4 0;
#P connect 10 0 5 0;
#P connect 4 2 1 0;
#P fasten 4 0 1 0 6 106 48 106;
#P connect 11 0 1 0;
#P connect 7 0 8 0;
#P connect 8 0 9 0;
#P connect 9 0 11 0;
#P connect 1 1 12 0;
#P fasten 5 1 6 0 202 365 172 365;
#P fasten 12 0 13 0 102 154 234 154;
#P connect 13 0 19 0;
#P connect 19 0 25 0;
#P connect 25 0 16 0;
#P connect 16 0 18 0;
#P connect 18 0 39 0;
#P connect 19 1 21 0;
#P connect 21 0 24 0;
#P fasten 39 1 14 0 258 389 258 389;
#P connect 14 0 15 0;
#P fasten 19 2 22 0 268 200 307 200;
#P connect 22 0 21 1;
#P fasten 24 0 23 0 251 278 339 278;
#P connect 23 0 16 1;
#P fasten 25 1 17 0 288 311 352 311;
#P connect 17 0 18 1;
#P fasten 39 2 27 0 282 390 353 390;
#P connect 27 0 26 0;
#P fasten 23 1 17 1 454 307 454 307;
#P fasten 24 1 20 0 290 278 470 278;
#P connect 20 0 18 2;
#P connect 39 0 38 0;
#P connect 38 0 31 0;
#P connect 31 0 37 0;
#P connect 37 0 28 0;
#P connect 28 0 30 0;
#P connect 30 0 46 0;
#P connect 31 1 33 0;
#P connect 33 0 36 0;
#P fasten 46 1 42 0 540 388 540 388;
#P connect 42 0 43 0;
#P fasten 31 2 34 0 550 200 589 200;
#P connect 34 0 33 1;
#P fasten 36 0 35 0 533 278 621 278;
#P connect 35 0 28 1;
#P fasten 37 1 29 0 570 311 634 311;
#P connect 29 0 30 1;
#P fasten 46 2 45 0 564 389 640 389;
#P connect 45 0 44 0;
#P fasten 35 1 29 1 736 307 736 307;
#P fasten 36 1 32 0 572 278 752 278;
#P connect 32 0 30 2;
#P connect 46 0 57 0;
#P connect 57 0 50 0;
#P connect 50 0 56 0;
#P connect 56 0 47 0;
#P connect 47 0 49 0;
#P connect 49 0 62 0;
#P connect 50 1 52 0;
#P connect 52 0 55 0;
#P fasten 62 1 58 0 819 388 819 388;
#P connect 58 0 59 0;
#P fasten 50 2 53 0 829 200 868 200;
#P connect 53 0 52 1;
#P fasten 55 0 54 0 812 278 900 278;
#P connect 54 0 47 1;
#P fasten 56 1 48 0 849 311 913 311;
#P connect 48 0 49 1;
#P fasten 62 2 61 0 843 389 921 389;
#P connect 61 0 60 0;
#P fasten 54 1 48 1 1015 307 1015 307;
#P fasten 55 1 51 0 851 278 1031 278;
#P connect 51 0 49 2;
#P window clipboard copycount 64;


April 17, 2007 | 7:20 pm

fantastic!

thanks for sharing,
nesa

On Apr 17, 2007, at 5:45 PM, yair reshef wrote:

> #P


April 17, 2007 | 8:05 pm

yeah, it’s really a sexy little bit of Jitter code – yair, I might be
crazy, but I seem to recall a youtube video of you controlling a jitter
object with an accelerometer of sorts?!? – it looked like a red kite
with a long tail, and using this code to build on that would be awesome.

Andreas.

nesa skrev:
> fantastic!
>
> thanks for sharing,
> nesa
>
> On Apr 17, 2007, at 5:45 PM, yair reshef wrote:
>
>> #P
>
> .
>


April 18, 2007 | 1:09 pm

i posted an update but the forum rejected it, mybe the list also.
first, thanks for the kind words guys.

Andreas, the method i used in the video was getting the position of the tracker and pushing the previous positions down a matrix, then used wes line2quad to opengl it.
here it is, cuz watching is fun.
http://www.youtube.com/watch?v=FvWerivk3UE -this is a bit rough
http://www.youtube.com/watch?v=EsPtW59Ozac -better

i tracked a conductor baton and made a nice simple polygon trail of his motion, it turned out nice.
at the end i didn’t use the accelerometer (sensetive) but 2 position-synced unibrain cameras , one with an IR filter and the other without.
the first for tracking the ir led and the other for color video

here is the footage+patch

http://art2please.com/upload/max/tracker/


April 18, 2007 | 1:14 pm

and this is a poly~ version for the ik patch.
i had a problem with poly,
taking the output of a poly and sending it into the next poly.
used sprintf, thispoly~, and forward – but i would be happy to hear of a better way.


April 18, 2007 | 1:44 pm

>
> here is the footage+patch
> http://art2please.com/upload/max/tracker/
>

This appears to be down…


April 18, 2007 | 9:41 pm

i followed thru with the code, previous was still forward kinematics, reel
ik is this.
it works bbut more work is needed before i can make the number of limbs
dynamic.
its hard to "loop backwards" in max, as is called for this to work.

#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 169 392 49 9109513 t f f;
#P newex 186 202 66 9109513 vexpr $f1-$f2;
#P window setfont "Sans Serif" 14.;
#P comment 284 675 43 9109518 seg 0;
#P comment 277 499 43 9109518 seg 1;
#P window setfont "Sans Serif" 9.;
#P flonum 208 443 48 9 0 0 0 139 0 0 0 221 221 221 222 222 222 0 0 0;
#P newex 316 553 149 9109513 expr sin($f1*3.141593/180) * 0.45;
#P newex 169 529 157 9109513 t f f;
#P newex 169 575 156 9109513 pack 0. 0.;
#P newex 169 553 145 9109513 expr cos($f1*3.1415/180.) * 0.45;
#P newex 169 620 313 9109513 pack 0. 0. 0.;
#P window setfont "Sans Serif" 14.;
#P comment 324 236 43 9109518 seg 0;
#P window setfont "Sans Serif" 9.;
#P message 437 89 115 9109513 0.613017 -0.014712;
#P newex 437 64 57 9109513 prepend set;
#P newex 169 179 27 9109513 t l l;
#P newex 169 284 64 9109513 unpack 0. 0.;
#P newex 268 284 125 9109513 t f f;
#P newex 169 333 128 9109513 pack 0. 0.;
#P newex 287 311 106 9109513 expr $f1-sin($f2) * 0.45;
#P newex 169 311 109 9109513 expr $f1-cos($f2) * 0.45;
#N vpatcher 15 55 437 455;
#P window setfont "Sans Serif" 9.;
#P window linecount 1;
#P newex 20 240 59 9109513 zl slice 2;
#P newex 20 219 141 9109513 t l l l;
#P newex 150 240 59 9109513 zl slice 2;
#P newex 20 146 64 9109513 unpack 0. 0.;
#N vpatcher 710 356 865 563;
#P outlet 8 161 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 8 72 60 9109513 unpack 0. 0.;
#P comment 43 51 75 9109513 reverse x and y;
#P newex 9 50 31 9109513 zl rev;
#P newex 74 137 33 9109513 * 180.;
#P newex 74 116 52 9109513 / 3.141593;
#P newex 8 94 60 9109513 atan2;
#P inlet 9 30 15 0;
#P outlet 74 161 15 0;
#P connect 5 0 7 0;
#P connect 7 0 2 0;
#P connect 2 0 8 0;
#P connect 1 0 5 0;
#P connect 7 1 2 1;
#P fasten 2 0 3 0 13 114 79 114;
#P connect 3 0 4 0;
#P connect 4 0 0 0;
#P pop;
#P newobj 37 107 49 9109513 p rad2ang;
#P newex 125 146 125 9109513 t f f;
#P newex 37 84 66 9109513 vexpr $f1-$f2;
#P newex 256 146 33 9109513 – 90.;
#P newex 20 57 27 9109513 t l l;
#P newex 20 195 247 9109513 pack 0. 0. 0.;
#P newex 138 173 106 9109513 expr $f1-sin($f2) * 0.45;
#P newex 20 173 109 9109513 expr $f1-cos($f2) * 0.45;
#P newex 85 336 66 9109513 jit.gl.sketch ik;
#P window linecount 2;
#P message 85 270 287 9109513 reset , gltranslate $1 $2 , glrotate $3 0
0 1 , glcolor 0 1 0 , glbegin triangles , glvertex – 0.05 0 , glvertex 0
0.45 , glvertex 0.05 0 , glendy;
#P inlet 20 37 15 0;
#P outlet 20 323 15 0;
#P connect 1 0 7 0;
#P connect 7 0 12 0;
#P connect 12 0 4 0;
#P connect 4 0 6 0;
#P connect 6 0 14 0;
#P connect 14 0 15 0;
#P connect 15 0 0 0;
#P connect 7 1 9 0;
#P connect 9 0 11 0;
#P fasten 14 1 2 0 90 247 90 247;
#P connect 2 0 3 0;
#P fasten 13 0 9 1 155 266 291 266 291 78 98 78;
#P connect 10 0 4 1;
#P fasten 11 0 10 0 42 136 130 136;
#P fasten 12 1 5 0 79 169 143 169;
#P connect 5 0 6 1;
#P fasten 14 2 13 0 155 239 155 239;
#P fasten 10 1 5 1 245 165 239 165;
#P fasten 11 1 8 0 81 132 261 132;
#P connect 8 0 6 2;
#P pop;
#P newobj 379 102 36 9109513 p bone;
#N vpatcher 15 55 192 189;
#P window setfont "Sans Serif" 9.;
#P message 67 75 68 9109513 fullscreen $1;
#P toggle 50 75 15 0;
#P newex 92 50 35 9109513 sel 27;
#P newex 50 50 40 9109513 key;
#P outlet 67 97 15 0;
#P fasten 2 0 3 0 97 72 55 72;
#P fasten 3 0 4 0 66 90 66 75;
#P connect 4 0 0 0;
#P fasten 1 0 2 0 91 67 91 52;
#P pop;
#P newobj 1 113 25 9109513 p fs;
#P newex 110 156 29 9109513 s ms;
#P newex 1 135 119 9109513 jit.window ik @idlemouse 1;
#P window setfont "Sans Serif" 14.;
#P comment 164 33 124 9109518 inverse ik example;
#P window setfont "Sans Serif" 9.;
#P newex 169 157 44 9109513 zl slice 2;
#P newex 168 134 89 9109513 route screentoworld;
#P message 60 87 91 9109513 screentoworld $1 $2;
#P newex 60 65 44 9109513 zl slice 2;
#P newex 60 43 74 9109513 route mouseidle;
#P newex 60 21 27 9109513 r ms;
#P newex 7 83 45 9109513 t b erase;
#P toggle 7 35 22 0;
#P newex 7 60 50 9109513 qmetro 20;
#P newex 42 111 137 9109513 jit.gl.render ik @camera 0. 0. 2;
#P comment 164 54 252 9109513 see:
http://www.friendsofed.com/samples/1590595181.pdf;
#N vpatcher 710 356 865 563;
#P outlet 8 161 15 0;
#P outlet 60 161 15 0;
#P window setfont "Sans Serif" 9.;
#P newex 8 72 60 9109513 unpack 0. 0.;
#P comment 43 51 75 9109513 reverse x and y;
#P newex 9 50 31 9109513 zl rev;
#P newex 60 137 33 9109513 * 180.;
#P newex 60 116 52 9109513 / 3.141593;
#P newex 8 94 60 9109513 atan2;
#P inlet 9 30 15 0;
#P connect 4 0 6 0;
#P connect 6 0 1 0;
#P connect 1 0 8 0;
#P connect 0 0 4 0;
#P connect 6 1 1 1;
#P fasten 1 0 2 0 13 114 65 114;
#P connect 2 0 3 0;
#P connect 3 0 7 0;
#P pop;
#P newobj 268 236 49 9109513 p rad2ang;
#P newex 471 265 27 9109513 – 90.;
#P newex 169 676 66 9109513 jit.gl.sketch ik;
#P window linecount 2;
#P message 169 642 287 9109513 reset , gltranslate $1 $2 , glrotate $3
0 0 1 , glcolor 1 1 0 , glbegin triangles , glvertex – 0.05 0 , glvertex
0 0.45 , glvertex 0.05 0 , glendy;
#P window linecount 1;
#N vpatcher 710 356 865 563;
#P window setfont "Sans Serif" 9.;
#P newex 8 72 60 9109513 unpack 0. 0.;
#P comment 43 51 75 9109513 reverse x and y;
#P newex 9 50 31 9109513 zl rev;
#P newex 8 140 33 9109513 * 180.;
#P newex 8 119 52 9109513 / 3.141593;
#P newex 8 94 60 9109513 atan2;
#P inlet 9 30 15 0;
#P outlet 8 164 15 0;
#P connect 5 0 7 0;
#P connect 7 0 2 0;
#P fasten 2 0 3 0 13 114 13 114;
#P connect 3 0 4 0;
#P connect 4 0 0 0;
#P connect 1 0 5 0;
#P connect 7 1 2 1;
#P pop;
#P newobj 169 369 49 9109513 p rad2ang;
#P newex 208 420 27 9109513 – 90.;
#P newex 208 500 66 9109513 jit.gl.sketch ik;
#P window linecount 2;
#P message 208 465 246 9109513 reset , glrotate $1 0 0 1 , glcolor 0 1 0
, glbegin triangles , glvertex -0.05 0 , glvertex 0 0.45 ,
glvertex 0.050 , glendy;
#P fasten 6 0 33 2 476 612 476 612;
#P fasten 7 1 6 0 312 261 476 261;
#P connect 30 0 31 0;
#P fasten 27 1 25 1 388 303 388 303;
#P connect 36 1 37 0;
#P connect 37 0 35 1;
#P connect 25 0 26 1;
#P fasten 28 1 25 0 228 307 292 307;
#P connect 27 0 24 1;
#P fasten 7 0 27 0 273 268 273 268;
#P fasten 41 0 7 0 191 228 273 228;
#P connect 35 0 33 0;
#P fasten 35 0 41 1 174 602 520 602 520 236 520 190 247 190;
#P connect 0 0 1 0;
#P connect 38 0 0 0;
#P connect 2 0 38 0;
#P connect 42 1 2 0;
#P connect 29 1 41 0;
#P connect 4 0 5 0;
#P connect 33 0 4 0;
#P connect 34 0 35 0;
#P connect 36 0 34 0;
#P connect 42 0 36 0;
#P fasten 3 0 42 0 174 390 174 390;
#P connect 26 0 3 0;
#P connect 24 0 26 0;
#P connect 28 0 24 0;
#P connect 29 0 28 0;
#P connect 18 0 29 0;
#P fasten 17 0 18 0 173 152 174 152;
#P fasten 9 1 17 0 174 134 173 134;
#P connect 20 1 21 0;
#P connect 15 0 16 0;
#P connect 14 0 15 0;
#P connect 13 0 14 0;
#P connect 12 1 9 0;
#P fasten 12 0 9 0 12 106 47 106;
#P fasten 16 0 9 0 65 106 47 106;
#P connect 10 0 12 0;
#P connect 11 0 10 0;
#P connect 22 0 20 0;
#P window clipboard copycount 43;

btw. david, its on my home server, please try again.

On 4/18/07, david vandenbogaerde wrote:
>
> here is the footage+patch
> > http://art2please.com/upload/max/tracker/
> >
>
> This appears to be down…
>
>
>
>


April 18, 2007 | 11:30 pm

Very cool!

tim


April 19, 2007 | 1:52 pm

great work man, very elegant. imagine what this could do when attached to the end of a certain conductors wand…
-n


April 19, 2007 | 2:41 pm

nadav, you owe the list a certain patch dont u? ;)


Viewing 14 posts - 1 through 14 (of 14 total)