Reworked animation keyframes
This commit is contained in:
		
							parent
							
								
									c25bf961e5
								
							
						
					
					
						commit
						9eac93893c
					
				
							
								
								
									
										19
									
								
								anim.scad
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								anim.scad
									
									
									
									
									
								
							| @ -2,13 +2,26 @@ | ||||
| function get_anim_keys() = [ | ||||
| 0, // initial | ||||
| 0.1, // resting | ||||
| 0.3, // holodisk inserted | ||||
| 0.25, // holodisk free-inserted | ||||
| 0.3, // holodisk click-inserted | ||||
| 0.4, // laser raised | ||||
| 0.5, // start playing | ||||
| 0.7, // stop playing | ||||
| 0.7, // stop playing, start lowering laser | ||||
| 0.8, // laser lowered, holodisk removing | ||||
| 1 // final | ||||
| 0.85, // holodisk click-removed | ||||
| 1 // final, holodisk free-removed | ||||
| ]; | ||||
| 
 | ||||
| function ANIM_START()=0; | ||||
| function ANIM_RESTING()=0; | ||||
| function ANIM_INSERTING()=1; | ||||
| function ANIM_OPENING()=2; | ||||
| function ANIM_RAISING()=3; | ||||
| function ANIM_PLAYING()=4; | ||||
| function ANIM_LOWERING()=5; | ||||
| function ANIM_CLOSING()=6; | ||||
| function ANIM_REMOVING()=7; | ||||
| function ANIM_END()=8; | ||||
| 
 | ||||
| function anim(key_from, key_to, KEYS=get_anim_keys()) | ||||
|     = max(0, min(($t - KEYS[key_from]) / (KEYS[key_to] - KEYS[key_from]), 1)); | ||||
|  | ||||
| @ -46,6 +46,7 @@ module holodisk_mechanism() { | ||||
|     tape_z=plate+spool_plate_height; | ||||
|      | ||||
|     module main_spool() { | ||||
|         zrot(200*anim(ANIM_PLAYING(), ANIM_PLAYING()+1)) | ||||
|         spool(r_in=spool_inner_radius, | ||||
|             r_out=spool_outer_radius, | ||||
|             in_rim=spool_plate_hole_inner_rim, | ||||
| @ -54,6 +55,7 @@ module holodisk_mechanism() { | ||||
|             spindle_traction=true); | ||||
|     } | ||||
|     module aux_spool() { | ||||
|         zrot(500*anim(ANIM_PLAYING(), ANIM_PLAYING()+1)) | ||||
|         spool(r_in=middle_spool_in_r, r_out=middle_spool_out_r, | ||||
|             in_rim=aux_spool_plate_hole_inner_rim, | ||||
|             out_rim=aux_spool_plate_hole_outer_rim, | ||||
| @ -109,6 +111,6 @@ module holodisk() { | ||||
| 
 | ||||
| // test | ||||
| retraction=get_holodisk_size().y+10; | ||||
| back((1-anim(1, 2)) * retraction) // anim insert | ||||
| back((anim(len(get_anim_keys())-2, len(get_anim_keys())-1)) * retraction) // anim remove | ||||
| back((1-anim(ANIM_INSERTING(), ANIM_RAISING())) * retraction) // anim insert | ||||
| back(anim(ANIM_CLOSING(), ANIM_END()) * retraction) // anim remove | ||||
| holodisk(); | ||||
|  | ||||
| @ -174,8 +174,8 @@ module holodisk_frame() { | ||||
|         } | ||||
|          | ||||
|         module slider_anim() { | ||||
|             back(anim(1,2)*get_holodisk_slide_slider_travel()) // anim insert | ||||
|         fwd(anim(5,6)*get_holodisk_slide_slider_travel()) // anim remove | ||||
|             back(anim(ANIM_OPENING(),ANIM_OPENING()+1)*get_holodisk_slide_slider_travel()) // anim insert | ||||
|         fwd(anim(ANIM_CLOSING(),ANIM_CLOSING()+1)*get_holodisk_slide_slider_travel()) // anim remove | ||||
|             slider(); | ||||
|         } | ||||
|              | ||||
| @ -219,8 +219,8 @@ module holodisk_frame() { | ||||
|     } | ||||
|      | ||||
|     module sliding_cover_anim() { | ||||
|         back(anim(1,2)*get_holodisk_slide_slider_travel()) // anim insert | ||||
|         fwd(anim(5,6)*get_holodisk_slide_slider_travel()) // anim remove | ||||
|         back(anim(ANIM_OPENING(),ANIM_OPENING()+1)*get_holodisk_slide_slider_travel()) // anim insert | ||||
|         fwd(anim(ANIM_CLOSING(),ANIM_CLOSING()+1)*get_holodisk_slide_slider_travel()) // anim remove | ||||
|         sliding_cover(); | ||||
|     } | ||||
|      | ||||
| @ -236,7 +236,7 @@ module holodisk_frame() { | ||||
|             get_holodisk_laserwindow_pos_center().z | ||||
|         ]; | ||||
|          | ||||
|         translate(door_pos) scale(0.98) down(door_size.z/2) xrot(anim(1,2)*-90) xrot(anim(6,7)*90) up(door_size.z/2) cube(door_size, center=true); | ||||
|         translate(door_pos) scale(0.98) down(door_size.z/2) xrot(anim(ANIM_OPENING(),ANIM_OPENING()+1)*-90) xrot(anim(ANIM_CLOSING(),ANIM_CLOSING()+1)*90) up(door_size.z/2) cube(door_size, center=true); | ||||
|     } | ||||
|      | ||||
|     module bottom_cover() { | ||||
| @ -285,8 +285,8 @@ module holodisk_frame() { | ||||
|             cover_top=[cover_size.x - overlap, cover_size.y, cover_size.z - overlap]; | ||||
|             /*cover_pos=[rails_pos.x+overlap, rails_pos.y + rails_size.y, rails_pos.z];*/ | ||||
|             cover_pos=[get_holodisk_laserwindow_pos().x, rails_pos.y + rails_size.y, rails_pos.z]; | ||||
|             left(anim(0,1)*get_holodisk_laserwindow_size().x) | ||||
|             right(anim(len(get_anim_keys())-2,len(get_anim_keys())-1)*get_holodisk_laserwindow_size().x) | ||||
|             left(anim(ANIM_RESTING(),ANIM_RESTING()+1)*get_holodisk_laserwindow_size().x) | ||||
|             right(anim(ANIM_REMOVING(), ANIM_REMOVING()+1)*get_holodisk_laserwindow_size().x) | ||||
|             translate(cover_pos) | ||||
|             hull() { | ||||
|                 fwd(cover_plate.y) cube(cover_plate); | ||||
|  | ||||
| @ -27,7 +27,7 @@ module spool( | ||||
|     tape_height=in_height; | ||||
|     module spool_plate() { | ||||
|         $fn = ($preview ? 18 : 100); | ||||
|         if (/*!$preview &&*/ spokes > 0 && r_out - r_in > out_rim) { | ||||
|         if (spokes > 0 && r_out - r_in > out_rim) { | ||||
|             union() { | ||||
|                 cylinder(h=plate_height, r=r_in + in_rim); | ||||
|                 intersection() { | ||||
| @ -42,7 +42,7 @@ module spool( | ||||
|                 } | ||||
|                 difference() { | ||||
|                     cylinder(h=plate_height, r=r_out); | ||||
|                     cylinder(h=plate_height, r=r_out - out_rim); | ||||
|                     scale(1.01) cylinder(h=plate_height, r=r_out - out_rim); | ||||
|                 } | ||||
|             } | ||||
|         } else { | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user