############################################################################### # # "Dan" # # Author -- Thomas V. Thompson II # Date ---- June 13, 1995 # ############################################################################### { { # # prototype finger # proto_f = surface(3, "ec_open", "kv_uniform", 3, "ec_periodic", "kv_uniform", array(array(pt(0.5,2.05,1),pt(0,2.5,0.5),pt(0,1,0),pt(0,0,0), pt(0.1,-1.5,0.3)), array(pt(0.5,2.05,1),pt(1,2.5,0.5),pt(1,1,0),pt(1,0,0), pt(0.9,-1.5,0.3)), array(pt(0.5,2.05,1),pt(1,1.5,1.2),pt(1,1,1),pt(.9,0,1), pt(1.1,-1.7,1.15)), array(pt(0.5,2.05,1),pt(0,1.5,1.2),pt(0,1,1),pt(0.1,0,1), pt(-0.1,-1.7,1.15)))); setattr(proto_f,"color",Color(255,255,255)); # # index, middle, and pinky # f_i = objtransform(proto_f,txyz(-0.5,0.0,-0.5),sxyz(0.2,0.1,0.17), ry(-10),rz(-3),rx(13),txyz(0.2,0.47,0.06)); f_m = objtransform(proto_f,txyz(-0.5,0.0,-0.5),sxyz(0.2,0.12,0.17), rx(10),txyz(0,0.5,0.05)); f_p = objtransform(proto_f,txyz(-0.5,0.0,-0.5),sxyz(0.2,0.09,0.17), ry(10),rz(3),rx(13),txyz(-0.2,0.47,0.06)); # # prototype thumb # proto_t = surface(3, "ec_open", "kv_uniform", 3, "ec_periodic", "kv_uniform", array(array(pt(0.5,2.05,0.8),pt(0,2,0.3),pt(0,1,0),pt(0.2,0,0), pt(-0.6,-1,0),pt(-0.5,-1.9,0.1)), array(pt(0.5,2.05,0.8),pt(1,2.5,0.3),pt(1,1,0),pt(1.2,0,0), pt(1,-1.2,0),pt(0.7,-2.5,0.1)), array(pt(0.5,2.05,0.8),pt(1,2,1.4),pt(1,1,1),pt(1.2,0,1), pt(1.3,-1.2,1.9),pt(0.7,-2.5,1.4)), array(pt(0.5,2.05,0.8),pt(0,1.5,1.3),pt(0,1,1),pt(0.2,0,1), pt(-0.6,-1,1.7),pt(-0.5,-1.9,1.6)))); setattr(proto_t,"color",Color(255,255,255)); # # actual thumb # thumb = objtransform(proto_t,txyz(-0.5,0.0,-0.5),sxyz(0.2,0.14,0.17), ry(10),rz(-40),ry(-25),txyz(0.35,0.2,0.15)); # # prototype palm # proto_p = surface(3, "ec_open", "kv_uniform", 3, "ec_periodic", "kv_uniform", array(array(pt(0.5,1.3,0.2),pt(-0.1,1.3,0.0),pt(-0.2,1.0,-0.2), pt(-0.23,0.5,-0.25),pt(0.1,0.2,-0.2),pt(0,0,0)), array(pt(0.5,1.3,0.2),pt(1.05,1.3,0.0),pt(1.13,1.0,-0.2), pt(1.0,0.5,-0.25),pt(0.9,0.2,-0.2),pt(1,0,0)), array(pt(0.5,1.3,0.2),pt(1.05,1.2,0.7),pt(1.12,1.0,0.7), pt(1.4,0.5,0.8),pt(0.9,0.2,0.9),pt(1,0,1)), array(pt(0.5,1.3,0.2),pt(0.5,1.2,0.8),pt(0.5,0.8,0.5), pt(0.7,0.5,1.0),pt(0.5,0.2,0.9),pt(0.5,0,1)), array(pt(0.5,1.3,0.2),pt(0,1.2,0.8),pt(-0.2,1.0,1.0), pt(-0.15,0.5,1.2),pt(0.1,0.2,1.1),pt(0,0,1)))); setattr(proto_p,"color",Color(255,255,255)); # # actual palm # palm = objtransform(proto_p,txyz(-0.5,0.0,-0.5),sxyz(0.5,0.5,0.3), txyz(0.0,-0.25,0.1)); # # prototype cuff of shirt # proto_c = surface(3, "ec_periodic","kv_uniform", 3, "ec_periodic","kv_uniform", array(array(pt(0.3,2.1,0.3),pt(0,2,0),pt(0.1,1,0.1), pt(0,0,0),pt(0.2,-.1,0.2)), array(pt(0.7,2.1,0.3),pt(1,2,0),pt(0.9,1,0.1), pt(1,0,0),pt(0.8,-.1,0.2)), array(pt(0.7,2.1,0.7),pt(1,2,1),pt(0.9,1,0.9), pt(1,0,1),pt(0.8,-.1,0.8)), array(pt(0.3,2.1,0.7),pt(0,2,1),pt(0.1,1,0.9), pt(0,0,1),pt(0.2,-.1,0.8)))); setattr(proto_c,"color",Color(34,139,34)); # # actual cuff # cuff = objtransform(proto_c,txyz(-0.5,0.0,-0.5),sxyz(0.7,0.2,0.5), txyz(0.0,-0.6,0.1)); # # prototype bow tie # proto_b1 = surface(3, "ec_periodic","kv_uniform", 3, "ec_periodic","kv_uniform", array(array(pt(-0.5,4,0.3),pt(-1,2,-1),pt(-0.7,1,0.3), pt(-1,0,-1),pt(-0.5,-2,0.3)), array(pt(0,1.5,0.4),pt(0,1.25,0.3),pt(0,1,0.3), pt(0,0.75,0.3),pt(0,0.5,0.4)), array(pt(0.5,4,0.3),pt(1,2,-1),pt(0.7,1,0.3), pt(1,0,-1),pt(0.5,-2,0.3)), array(pt(0.5,4,0.7),pt(1,2,2),pt(0.7,1,0.7), pt(1,0,2),pt(0.5,-2,0.7)), array(pt(0,1.5,0.6),pt(0,1.25,0.7),pt(0,1,0.7), pt(0,0.75,0.7),pt(0,0.5,0.6)), array(pt(-0.5,4,0.7),pt(-1,2,2),pt(-0.7,1,0.7), pt(-1,0,2),pt(-0.5,-2,0.7)))); proto_b2 = surface(3, "ec_periodic","kv_uniform", 3, "ec_periodic","kv_uniform", array(array(pt(0.3,2.1,0.3),pt(0,2,0),pt(0.2,1,0.1), pt(0,0,0),pt(0.2,-.1,0.2)), array(pt(0.7,2.1,0.3),pt(1,2,0),pt(0.8,1,0.1), pt(1,0,0),pt(0.8,-.1,0.2)), array(pt(0.7,2.1,0.7),pt(1,2,1),pt(0.8,1,0.9), pt(1,0,1),pt(0.8,-.1,0.8)), array(pt(0.3,2.1,0.7),pt(0,2,1),pt(0.2,1,0.9), pt(0,0,1),pt(0.2,-.1,0.8)))); setattr(proto_b1,"color",Color(255,105,180)); setattr(proto_b2,"color",Color(127,255,212)); setTexture( proto_b1, "reptile_skin.rle" ); setTexture( proto_b2, "clouds.rle" ); # # an actual bow tie # bt = group(objtransform(proto_b1,txyz(0.0,0.0,-0.5), sxyz(0.7,0.2,0.2),ty(-0.21)), objtransform(proto_b2,txyz(-0.5,-1.0,-0.5), sxyz(0.6,0.15,0.35),rz(90))); # # three juggling balls # sph_g=makegeom(sphere(pt(0,0,0),0.3)); j_1 = sph_g; setattr(j_1,"color",Color(255,0,0)); setTexture( j_1, "screen.rle" ); j_2 = sph_g; setattr(j_2,"color",Color(255,255,0)); setTexture( j_2, "wood_grain2.rle" ); j_3 = sph_g; setattr(j_3,"color",Color(0,0,255)); setTexture( j_3, "rattan.rle" ); } ### # # Some global animation curves for camera simulation # { ani_cam_x = profile(pt(0,0),pt(5,0)); ani_cam_y = profile(pt(0,-3.5),pt(55,-3.5),pt(60,-2)); ani_cam_z = profile(pt(0,0),pt(20,0),pt(60,-1)); } ### # # the bow tie # { # # animation curves # # entrance walk # ani_b_1 = profile(pt(0,-20),pt(4,20),pt(8,-20),pt(12,20),pt(16,-20),pt(20,0)); ani_b_2 = profile(pt(0,45),pt(17,45),pt(20,0)); ani_b_3 = uniOpCrv( 3, array(pt(0,-5),pt(17,0),pt(20,0))); ani_b_4 = uniOpCrv( 3, array(pt(0,4),pt(2,4.35),pt(4,3.65),pt(6,4.35), pt(8,3.65),pt(10,4.35),pt(12,3.65),pt(14,4.35), pt(16,3.65),pt(18,4.35),pt(20,4))); ani_b_5 = uniOpCrv( 3, array(pt(0,-11),pt(17,-7),pt(20,0))); # # juggling # ani_b_9 = uniopcrv( 3, array(pt(20,0.0),pt(22,0.3),pt(24,-0.3), pt(26,0.3),pt(28,-0.3),pt(30,0.3), pt(32,-0.3),pt(34,0.3),pt(36,-0.3), pt(38,0.3),pt(40,-0.3),pt(42,0.3), pt(44,-0.3),pt(46,0.3),pt(48,-0.3),pt(49,0.0))); ani_b_10 = uniopcrv( 3, array(pt(20,0.0),pt(21,-0.1),pt(22.2,0.1), pt(23.8,0.1),pt(24.2,-0.1), pt(25.8,-0.1),pt(26.2,0.1), pt(27.8,0.1),pt(28.2,-0.1), pt(29.8,-0.1),pt(30.2,0.1), pt(31.8,0.1),pt(32.2,-0.1), pt(33.8,-0.1),pt(34.2,0.1), pt(35.8,0.1),pt(36.2,-0.1), pt(37.8,-0.1),pt(38.2,0.1), pt(39.8,0.1),pt(40.2,-0.1), pt(41.8,-0.1),pt(42.2,0.1), pt(43.8,0.1),pt(44.2,-0.1), pt(45.8,-0.1),pt(46.2,0.1), pt(47.8,0.1),pt(48.2,-0.1),pt(49,0.0))); # # wave # ani_b_6 = uniopcrv(3, array(pt(60,0),pt(62,10),pt(66,-10),pt(70,10), pt(74,-10),pt(78,6),pt(82,-4),pt(85,0), pt(90,0),pt(92,10),pt(94,0), pt(95,0),pt(97,-10),pt(99,0))); ani_b_7a = uniopcrv(3, array(pt(90,0),pt(92,0.4),pt(94,0))); ani_b_7b = uniopcrv(3, array(pt(95,0),pt(97,0.4),pt(99,0))); ani_b_7c = uniopcrv(3, array(pt(100,0),pt(102,0.4),pt(104,0))); ani_b_8 = profile(pt(52,0),pt(55,-1),pt(60,-4)); # # the bow anchor # bow_a = zanchorfrompt(pt(0.0,0.0,0.0)); # # animated bow tie # bow = instance(bt,rz(ani_b_1,bow_a),ry(ani_b_2,bow_a),rz(ani_b_6,bow_a), tx(ani_b_3),ty(ani_b_4),tz(ani_b_5), tx(ani_b_9),ty(ani_b_10), ty(ani_b_7a),ty(ani_b_7b),ty(ani_b_7c),ty(ani_b_8), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); } ### # # the juggling balls # { # # animation curves # ani_ba_1 = uniopcrv(3, array(pt(0,1.9),pt(3,0.0),pt(6,-1.2))); ani_ba_2 = uniopcrv(3, array(pt(0,3.3),pt(3,9.0),pt(6,3.2))); ani_b1_1 = profile(pt(0,3.0),pt(20,-2.0),pt(22,1.3), objtransform(ani_ba_1,tx(24)), pt(32,-1.2),pt(33,-0.2),pt(34,1.2), objtransform(ani_ba_1,tx(36)), pt(44,-1.2),pt(45,-0.2),pt(46,1.2),pt(48,1.9), pt(52,3.0),pt(105,3)); ani_b1_2 = profile(pt(0,10),pt(20,2.2),pt(22,2.2),pt(23,2.6), objtransform(ani_ba_2,tx(24)), pt(32,2.2),pt(33,2.1),pt(34,2.2), objtransform(ani_ba_2,tx(36)), pt(44,2.2),pt(45,2.1),pt(46,2.2),pt(48,3.3), pt(52,8),pt(105,20)); ani_b1_3 = profile(pt(0,0.5),pt(20,0.5),pt(22,0.5), pt(50,0.5),pt(105,0.5)); # ani_b2_1 = profile(pt(0,-1.2),pt(24,-1.2),pt(25,-0.2),pt(26,1.2), objtransform(ani_ba_1,tx(28)), pt(36,-1.2),pt(37,-0.2),pt(38,1.2), objtransform(ani_ba_1,tx(40)), pt(48,-1.0), pt(52,0.0),pt(105,0)); ani_b2_2 = profile(pt(4,10),pt(24,2.2),pt(25,2.1),pt(26,2.2), objtransform(ani_ba_2,tx(28)), pt(36,2.2),pt(37,2.1),pt(38,2.2), objtransform(ani_ba_2,tx(40)), pt(48,2.2), pt(52,-1.5),pt(105,-20)); ani_b2_3 = profile(pt(0,0.5),pt(24,0.5),pt(26,0.5), pt(50,0.5),pt(105,0.5)); # ani_b3_1 = profile(pt(0,-6.2),pt(28,-1.2),pt(29,-0.2),pt(30,1.2), objtransform(ani_ba_1,tx(32)), pt(40,-1.2),pt(41,-0.2),pt(42,1.2), uniopcrv(3, array(pt(44,1.9),pt(47,-1.5),pt(50,-4.9))), pt(105,-10)); ani_b3_2 = profile(pt(8,10),pt(28,2.2),pt(29,2.1),pt(30,2.2), objtransform(ani_ba_2,tx(32)), pt(40,2.2),pt(41,2.1),pt(42,2.2), uniopcrv(3, array(pt(44,3.3),pt(47,10.0),pt(50,6))), pt(105,-15)); ani_b3_3 = profile(pt(0,0.5),pt(28,0.5),pt(50,0.5), pt(70,0.5),pt(105,0.5)); # # animated balls # ball1 = instance(j_1, tx(ani_b1_1),ty(ani_b1_2),tz(ani_b1_3), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); ball2 = instance(j_2, tx(ani_b2_1),ty(ani_b2_2),tz(ani_b2_3), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); ball3 = instance(j_3, tx(ani_b3_1),ty(ani_b3_2),tz(ani_b3_3), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); } ### # # the right hand # { # # animation curves # # entrance walk # ani_rhand_3 = profile(pt(0,90),pt(17,90),pt(20,180), pt(22,147),pt(24,180),pt(26,145),pt(28,180), pt(30,143),pt(32,180),pt(34,147),pt(36,180), pt(38,144),pt(40,180),pt(42,142),pt(44,180), pt(46,146),pt(48,180),pt(50,180), pt(52,180),pt(57,90),pt(60,0)); ani_rhand_4 = profile(pt(0,70),pt(4,110),pt(8,70), pt(12,110),pt(16,70),pt(20,90), pt(22,85),pt(24,93),pt(26,82),pt(28,90), pt(30,82),pt(32,92),pt(34,80),pt(36,91), pt(38,81),pt(40,90),pt(42,84),pt(44,92), pt(46,87),pt(48,91),pt(50,83), pt(52,90),pt(57,45),pt(60,0)); ani_rhand_5 = profile(pt(0,45),pt(17,45),pt(20,0)); ani_rhand_6 = uniOpCrv( 3, array(pt(0,-5),pt(17,0),pt(20,0))); ani_rhand_7 = uniOpCrv( 3, array(pt(0,0),pt(2,0.35),pt(4,-0.35),pt(6,0.35), pt(8,-0.35),pt(10,0.35),pt(12,-0.35),pt(14,0.35), pt(16,-0.35),pt(18,0.35),pt(20,0) )); ani_rhand_8 = uniOpCrv( 3, array(pt(0,-9),pt(17,-6),pt(20,0))); # # waving # ani_rhand_1 = profile(pt(60,0),pt(62,12),pt(66,-5),pt(70,12),pt(74,-5), pt(78,9),pt(82,-2),pt(85,0)); ani_rhand_2 = profile(pt(60,0),pt(62,3),pt(66,-1),pt(70,3),pt(74,-1), pt(78,1),pt(82,-0.5),pt(85,0)); # # juggling # ani_rhand_9 = uniopcrv( 3, array(pt(20,0.0),pt(22,3.5),pt(24,-0.1), pt(26,3.5),pt(28,-0.1),pt(30,3.5), pt(32,-0.1),pt(34,3.5),pt(36,-0.1), pt(38,3.5),pt(40,-0.1),pt(42,3.5), pt(44,-0.1),pt(46,3.5),pt(48,0.0),pt(50,0.0))); ani_rhand_10 = uniopcrv( 3, array(pt(20,0.0),pt(22,0.0), pt(23.8,0.3),pt(24.2,-0.3),pt(26,0.0), pt(27.8,0.3),pt(28.2,-0.3),pt(30,0.0), pt(31.8,0.3),pt(32.2,-0.3),pt(34,0.0), pt(35.8,0.3),pt(36.2,-0.3),pt(38,0.0), pt(39.8,0.3),pt(40.2,-0.3),pt(42,0.0), pt(43.8,0.3),pt(44.2,-0.3),pt(46,0.0), pt(47.8,0.3),pt(48.2,0.0),pt(50,0.0))); # # rippling fingers and peace # ani_rfia = profile(pt(70,0),pt(71,0),pt(72,0),pt(73,20),pt(74,40),pt(75,20), pt(76,0),pt(77,20),pt(78,40),pt(79,20),pt(80,0), pt(81,20),pt(82,40),pt(83,20),pt(84,0),pt(85,0)); ani_rfib = profile(pt(85,0),pt(87,-8)); ani_rfma = profile(pt(70,0),pt(71,0),pt(72,20),pt(73,40),pt(74,20),pt(75,0), pt(76,20),pt(77,40),pt(78,20),pt(79,0),pt(80,20), pt(81,40),pt(82,20),pt(83,0),pt(84,0),pt(85,0)); ani_rfmb = profile(pt(85,0),pt(87,15)); ani_rfpa = profile(pt(70,0),pt(71,20),pt(72,40),pt(73,20),pt(74,0),pt(75,20), pt(76,40),pt(77,20),pt(78,0),pt(79,20),pt(80,40), pt(81,20),pt(82,0),pt(83,0),pt(84,0),pt(85,0),pt(87,100)); ani_rfpb = profile(pt(85,0),pt(87,0.14)); ani_rta = profile(pt(70,0),pt(71,0),pt(72,0),pt(73,0),pt(74,0),pt(75,5), pt(76,0),pt(77,0),pt(78,3),pt(79,9),pt(80,3), pt(81,0),pt(82,3),pt(83,9),pt(84,3),pt(85,0),pt(87,95)); ani_rtb = profile(pt(85,0),pt(87,-40)); # # jumping # ani_rhand_3a = profile(pt(91,0),pt(93,0.4),pt(95,0)); ani_rhand_3b = profile(pt(96,0),pt(98,1.6),pt(100,0)); ani_rhand_3c = profile(pt(101,0),pt(103,2.0),pt(105,0)); # # various anchors # rh_f_i_at = zanchorfrompt(pt(-1.8,2.35,0.0)); rh_f_i_a = rotateanchorlocally(rh_f_i_at,0.0,-10.0,0.0); rh_f_m_a = zanchorfrompt(pt(-2.0,2.35,-0.03)); rh_f_p_at = zanchorfrompt(pt(-2.2,2.35,0.0)); rh_f_p_a = rotateanchorlocally(rh_f_p_at,0.0,10.0,0.0); rh_t_at = zanchorfrompt(pt(-1.8,2.0,0.15)); rh_t_a = rotateanchorlocally(rh_t_at,0.0,-20.0,-50.0); rh_p_a = zanchorfrompt(pt(-2.0,1.75,-0.04)); # # animated right hand # rh_f_i = instance(f_i,txyz(-2.0,2.02,0.01), ry(ani_rhand_3,rh_p_a),rx(ani_rhand_4,rh_p_a), ry(ani_rhand_5,rh_p_a),ry(ani_rhand_5), tx(ani_rhand_6),ty(ani_rhand_7),tz(ani_rhand_8), rx(ani_rfia,rh_f_i_a), rz(ani_rfib,rh_f_i_a),rz(ani_rhand_1,rh_p_a), tx(ani_rhand_9),ty(ani_rhand_10), ty(ani_rhand_3a),ty(ani_rhand_3b),ty(ani_rhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); rh_f_m = instance(f_m,txyz(-2.0,2.02,-0.01), ry(ani_rhand_3,rh_p_a),rx(ani_rhand_4,rh_p_a), ry(ani_rhand_5,rh_p_a),ry(ani_rhand_5), tx(ani_rhand_6),ty(ani_rhand_7),tz(ani_rhand_8), rx(ani_rfma,rh_f_m_a), rz(ani_rfmb,rh_f_m_a),rz(ani_rhand_1,rh_p_a), tx(ani_rhand_9),ty(ani_rhand_10), ty(ani_rhand_3a),ty(ani_rhand_3b),ty(ani_rhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); rh_f_p = instance(f_p,txyz(-2.0,2.0,0.01), ry(ani_rhand_3,rh_p_a),rx(ani_rhand_4,rh_p_a), ry(ani_rhand_5,rh_p_a),ry(ani_rhand_5), tx(ani_rhand_6),ty(ani_rhand_7),tz(ani_rhand_8), rx(ani_rfpa,rh_f_p_a), tz(ani_rfpb,rh_f_p_a),rz(ani_rhand_1,rh_p_a), tx(ani_rhand_9),ty(ani_rhand_10), ty(ani_rhand_3a),ty(ani_rhand_3b),ty(ani_rhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); rh_t = instance(thumb,txyz(-2.0,2.0,0.0), ry(ani_rhand_3,rh_p_a),rx(ani_rhand_4,rh_p_a), ry(ani_rhand_5,rh_p_a),ry(ani_rhand_5), tx(ani_rhand_6),ty(ani_rhand_7),tz(ani_rhand_8), rx(ani_rta,rh_t_a), rz(ani_rtb,rh_t_a),rz(ani_rhand_1,rh_p_a), tx(ani_rhand_9),ty(ani_rhand_10), ty(ani_rhand_3a),ty(ani_rhand_3b),ty(ani_rhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); rh_p = instance(palm,txyz(-2.0,2.0,0.0), ry(ani_rhand_3,rh_p_a),rx(ani_rhand_4,rh_p_a), ry(ani_rhand_5,rh_p_a),ry(ani_rhand_5), tx(ani_rhand_6),ty(ani_rhand_7),tz(ani_rhand_8), rz(ani_rhand_1,rh_p_a), tx(ani_rhand_9),ty(ani_rhand_10), ty(ani_rhand_3a),ty(ani_rhand_3b),ty(ani_rhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); rh_c = instance(cuff,txyz(-2.0,2.0,0.0), ry(ani_rhand_3,rh_p_a),rx(ani_rhand_4,rh_p_a), ry(ani_rhand_5,rh_p_a),ry(ani_rhand_5), tx(ani_rhand_6),ty(ani_rhand_7),tz(ani_rhand_8), rz(ani_rhand_2,rh_p_a), tx(ani_rhand_9),ty(ani_rhand_10), ty(ani_rhand_3a),ty(ani_rhand_3b),ty(ani_rhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); } ### # # the left hand # { # # animation curves # # entrance walk # ani_lhand_3 = profile(pt(0,-90),pt(17,-90),pt(20,-180), pt(22,-160),pt(24,-180),pt(26,-162),pt(28,-180), pt(30,-160),pt(32,-180),pt(34,-166),pt(36,-180), pt(38,-162),pt(40,-180),pt(42,-163),pt(44,-180), pt(46,-161),pt(48,-180),pt(50,-180), pt(52,-180),pt(57,-90),pt(60,0)); ani_lhand_4 = profile(pt(0,110),pt(4,70),pt(8,110), pt(12,70),pt(16,110),pt(20,90), pt(22,93),pt(24,54),pt(26,93),pt(28,55), pt(30,92),pt(32,52),pt(34,87),pt(36,46), pt(38,88),pt(40,48),pt(42,89),pt(44,51), pt(46,94),pt(48,42),pt(50,90), pt(52,90),pt(57,45),pt(60,0)); ani_lhand_5 = profile(pt(0,45),pt(17,45),pt(20,0)); ani_lhand_6 = uniOpCrv( 3, array(pt(0,-5),pt(17,0),pt(20,0))); ani_lhand_7 = uniOpCrv( 3, array(pt(0,0),pt(2,0.35),pt(4,-0.35),pt(6,0.35), pt(8,-0.35),pt(10,0.35),pt(12,-0.35),pt(14,0.35), pt(16,-0.35),pt(18,0.35),pt(20,0) )); ani_lhand_8 = uniOpCrv( 3, array(pt(0,-9),pt(17,-6),pt(20,0))); # # # waving # ani_lhand_1 = profile(pt(60,0),pt(62,-5),pt(66,12),pt(70,-5),pt(74,12), pt(78,-2),pt(82,9),pt(85,0)); ani_lhand_2 = profile(pt(60,0),pt(62,-1),pt(66,3),pt(70,-1),pt(74,3), pt(78,-0.5),pt(82,1),pt(85,0)); # # juggling # ani_lhand_9 = uniopcrv( 3, array(pt(20,0.0),pt(22,-1.0),pt(24,0.1), pt(26,-1.0),pt(28,0.1),pt(30,-1.0), pt(32,0.1),pt(34,-1.0),pt(36,0.1), pt(38,-1.0),pt(40,0.1),pt(42,-1.0), pt(44,0.1),pt(46,-1.0),pt(48,0.0),pt(50,0.0))); ani_lhand_10 = uniopcrv( 3, array(pt(20,0.0),pt(22,0.0), pt(23.8,0.2),pt(24.2,0.6),pt(26,0.0), pt(27.8,0.2),pt(28.2,0.6),pt(30,0.0), pt(31.8,0.2),pt(32.2,0.6),pt(34,0.0), pt(35.8,0.2),pt(36.2,0.6),pt(38,0.0), pt(39.8,0.2),pt(40.2,0.6),pt(42,0.0), pt(43.8,0.2),pt(44.2,0.6),pt(46,0.0), pt(47.8,0.2),pt(48.2,0.0),pt(50,0.0))); # # rippling fingers and peace # ani_lfia = profile(pt(70,0),pt(71,0),pt(72,0),pt(73,20),pt(74,40),pt(75,20), pt(76,0),pt(77,20),pt(78,40),pt(79,20),pt(80,0), pt(81,20),pt(82,40),pt(83,20),pt(84,0),pt(85,0)); ani_lfib = profile(pt(85,0),pt(87,8)); ani_lfma = profile(pt(70,0),pt(71,0),pt(72,20),pt(73,40),pt(74,20),pt(75,0), pt(76,20),pt(77,40),pt(78,20),pt(79,0),pt(80,20), pt(81,40),pt(82,20),pt(83,0),pt(84,0),pt(85,0)); ani_lfmb = profile(pt(85,0),pt(87,-15)); ani_lfpa = profile(pt(70,0),pt(71,20),pt(72,40),pt(73,20),pt(74,0),pt(75,20), pt(76,40),pt(77,20),pt(78,0),pt(79,20),pt(80,40), pt(81,20),pt(82,0),pt(83,0),pt(84,0),pt(85,0),pt(87,100)); ani_lfpb = profile(pt(85,0),pt(87,0.14)); ani_lta = profile(pt(70,0),pt(71,0),pt(72,0),pt(73,0),pt(74,3),pt(75,9), pt(76,3),pt(77,0),pt(78,3),pt(79,9),pt(80,3), pt(81,0),pt(82,3),pt(83,9),pt(84,3),pt(85,0),pt(87,95)); ani_ltb = profile(pt(85,0),pt(87,40)); # # jumping # ani_lhand_3a = profile(pt(91,0),pt(93,1.6),pt(95,0)); ani_lhand_3b = profile(pt(96,0),pt(98,0.4),pt(100,0)); ani_lhand_3c = profile(pt(101,0),pt(103,2.0),pt(105,0)); # # various anchors # lh_f_i_at = zanchorfrompt(pt(1.8,2.35,0.0)); lh_f_i_a = rotateanchorlocally(lh_f_i_at,0.0,10.0,0.0); lh_f_m_a = zanchorfrompt(pt(2.0,2.35,-0.03)); lh_f_p_at = zanchorfrompt(pt(2.2,2.35,0.0)); lh_f_p_a = rotateanchorlocally(lh_f_p_at,0.0,-10.0,0.0); lh_t_at = zanchorfrompt(pt(1.8,2.0,0.15)); lh_t_a = rotateanchorlocally(lh_t_at,0.0,20.0,50.0); lh_p_a = zanchorfrompt(pt(2.0,1.75,-0.04)); # # animated left hand # lh_f_i = instance(reverseobj(f_i),sx(-1),txyz(2.0,2.02,0.01), ry(ani_lhand_3,lh_p_a),rx(ani_lhand_4,lh_p_a), ry(ani_lhand_5,lh_p_a),ry(ani_lhand_5), tx(ani_lhand_6),ty(ani_lhand_7),tz(ani_lhand_8), rx(ani_lfia,lh_f_i_a), rz(ani_lfib,lh_f_i_a),rz(ani_lhand_1,lh_p_a), tx(ani_lhand_9),ty(ani_lhand_10), ty(ani_lhand_3a),ty(ani_lhand_3b),ty(ani_lhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); setattr(lh_f_i,"color",Color(255,255,255)); lh_f_m = instance(reverseobj(f_m),sx(-1),txyz(2.0,2.02,-0.01), ry(ani_lhand_3,lh_p_a),rx(ani_lhand_4,lh_p_a), ry(ani_lhand_5,lh_p_a),ry(ani_lhand_5), tx(ani_lhand_6),ty(ani_lhand_7),tz(ani_lhand_8), rx(ani_lfma,lh_f_m_a), rz(ani_lfmb,lh_f_m_a),rz(ani_lhand_1,lh_p_a), tx(ani_lhand_9),ty(ani_lhand_10), ty(ani_lhand_3a),ty(ani_lhand_3b),ty(ani_lhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); setattr(lh_f_m,"color",Color(255,255,255)); lh_f_p = instance(reverseobj(f_p),sx(-1),txyz(2.0,2.0,0.01), ry(ani_lhand_3,lh_p_a),rx(ani_lhand_4,lh_p_a), ry(ani_lhand_5,lh_p_a),ry(ani_lhand_5), tx(ani_lhand_6),ty(ani_lhand_7),tz(ani_lhand_8), rx(ani_lfpa,lh_f_p_a), tz(ani_lfpb,lh_f_p_a),rz(ani_lhand_1,lh_p_a), tx(ani_lhand_9),ty(ani_lhand_10), ty(ani_lhand_3a),ty(ani_lhand_3b),ty(ani_lhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); setattr(lh_f_p,"color",Color(255,255,255)); lh_t = instance(reverseobj(thumb),sx(-1),txyz(2.0,2.0,0.0), ry(ani_lhand_3,lh_p_a),rx(ani_lhand_4,lh_p_a), ry(ani_lhand_5,lh_p_a),ry(ani_lhand_5), tx(ani_lhand_6),ty(ani_lhand_7),tz(ani_lhand_8), rx(ani_lta,lh_t_a), rz(ani_ltb,lh_t_a),rz(ani_lhand_1,lh_p_a), tx(ani_lhand_9),ty(ani_lhand_10), ty(ani_lhand_3a),ty(ani_lhand_3b),ty(ani_lhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); setattr(lh_t,"color",Color(255,255,255)); lh_p = instance(reverseobj(palm),sx(-1),txyz(2.0,2.0,0.0), ry(ani_lhand_3,lh_p_a),rx(ani_lhand_4,lh_p_a), ry(ani_lhand_5,lh_p_a),ry(ani_lhand_5), tx(ani_lhand_6),ty(ani_lhand_7),tz(ani_lhand_8), rz(ani_lhand_1,lh_p_a), tx(ani_lhand_9),ty(ani_lhand_10), ty(ani_lhand_3a),ty(ani_lhand_3b),ty(ani_lhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); setattr(lh_p,"color",Color(255,255,255)); lh_c = instance(reverseobj(cuff),sx(-1),txyz(2.0,2.0,0.0), ry(ani_lhand_3,lh_p_a),rx(ani_lhand_4,lh_p_a), ry(ani_lhand_5,lh_p_a),ry(ani_lhand_5), tx(ani_lhand_6),ty(ani_lhand_7),tz(ani_lhand_8), rz(ani_lhand_2,lh_p_a), tx(ani_lhand_9),ty(ani_lhand_10), ty(ani_lhand_3a),ty(ani_lhand_3b),ty(ani_lhand_3c), tx(ani_cam_x),ty(ani_cam_y),tz(ani_cam_z)); setattr(lh_c,"color",Color(34,139,34)); } ### # # The background # { back_1 = objTransform(flatSrf( 2, 2, 2, 2 ),sx(16),sy(7),tx(-10),tz(-12)); ani_back_1 = profile(pt(0,0),pt(120,20)); background_1 = instance(back_1,tx(ani_back_1)); background_2 = objTransform(flatSrf(2,2,2,2),sx(30),sy(18),tx(-10),tz(-35)); setSq(background_1,"Air"); setColor(background_1,"LightBlue"); setTexture(background_1, "clouds.rle" ); setSq(background_2,"Dull"); setColor(background_2,"White"); } } ### # # Show the stuff # { show(rh_f_i); show(rh_f_m); show(rh_f_p); show(rh_t); show(rh_p); show(rh_c); show(lh_f_i); show(lh_f_m); show(lh_f_p); show(lh_t); show(lh_p); show(lh_c); show(bow); show(ball1); show(ball2); show(ball3); } ### # # write out an a1 file # light1 = lightsource ( pt( -18, 4, 25), 1.0, 1.0 ); dumpGeomFile( {light1,background_1,background_2, rh_f_i,rh_f_m,rh_f_p,rh_t,rh_p,rh_c, lh_f_i,lh_f_m,lh_f_p,lh_t,lh_p,lh_c, bow,ball1,ball2,ball3}, "dan.a1" );