#load 'skx/camera.rb' #load 'skx/entities.rb' #load 'skx/movable.rb' #load 'skx/group.rb' #load 'skx/component_instance.rb' #load 'skx/animations.rb' @animator_dialog = UI::WebDialog.new html = %| | @animator_dialog.set_html html @animator_dialog.show def go $a ||= Animator.new $a.start end def rst Sketchup.active_model.selection[0].transformation = IDENTITY end def cam(d=0) pages = Sketchup.active_model.pages page1 = pages[0] page2 = pages[1] cam1 = page1.camera cam2 = page2.camera #$a = Animator.new cam = Sketchup.active_model.active_view.camera anim = Anim.new(cam, 'skx_position', {:from => cam1.skx_position, :to => cam2.skx_position, :duration => 150, :easing => 'linear'} ) $a.register anim #$a.write_images true #$a.start end def shot1 $a = Animator.new obj = Sketchup.active_model.entities.instances[0] duration = 150 distance = 500.feet #anim = Anim.new(obj, 'position', {:by => [obj.transformation.yaxis, distance], :duration=>duration}) anim = Anim.new(obj, 'position', {:from=>[0,0,0], :by => [obj.transformation.yaxis, distance], :duration=>duration }) $a.register anim # Camera cam = Sketchup.active_model.active_view.camera anim = Anim.new(cam, 'target', {:from => [0,0,0], :by => [Y_AXIS, distance], :duration=>duration}) $a.register anim #anim = Anim.new(cam, 'position', {:from=>[-12, -11.feet, 48],:by => [obj.transformation.yaxis, distance] , :duration=>duration, :easing =>'quad_in'}) #$a.register anim $a.start end def dropandroll cdef = Sketchup.active_model.definitions['car'] pt = [0,0,0] distance = 1000.feet car = Sketchup.active_model.entities.add_instance(cdef, pt) a = Animator.new anim = Anim.new(car, 'position', {'from'=>ORIGIN, 'to' => [0, distance, 0], 'duration'=>200}) a.register anim a.start 10.times do car = Sketchup.active_model.entities.add_instance(cdef, pt) anim = Anim.new(car, 'position', {'from'=>ORIGIN, 'to' => [0, distance, 0], 'duration'=>rand(150)+50, 'delay' => rand(10)}) a.register anim end 10.times do car = Sketchup.active_model.entities.add_instance(cdef, pt) anim = Anim.new(car, 'position', {'to'=>ORIGIN, 'from' => [-10.feet, distance, 0], 'duration'=>rand(250)+50, 'delay' => rand(10)}) a.register anim end end def main(z=0) $a = Animator.new # CHoose a random easing easings = Easings.singleton_methods groups = Sketchup.active_model.entities.find_all{|e| e.is_a?Sketchup::Group} #ins = Sketchup.active_model.entities.instances all = groups#.concat ins dist = z all.each {|e| pt = [ rand(dist), rand(dist), rand(dist)] #a.register( Anim.new(e, 'position', pt, {'duration' => 1 , 'easing' => easing, 'use_seconds' => true } ) ) easing = easings[rand(easings.length)] anim = Anim.new(e, 'skx_position', {:to => pt, :from=>ORIGIN, :duration => rand(50)+20, :easing => easing})#, 'use_seconds' => false, 'loop' => 1}) #anim.continue_to ORIGIN, 2 #p anim $a.register(anim) } $a.start nil end def drop #$a = Animator.new groups = Sketchup.active_model.entities.find_all{|e| e.is_a? Sketchup::Group} #ins = Sketchup.active_model.entities.instances all = groups#.concat ins all.each {|e| next unless e.transformation.origin.z > 0 target_pt = e.transformation.origin.clone target_pt.z = 0 anim = Anim.new(e, 'skx_position', {:to => target_pt ,:duration => 150, :easing => 'bounceOut'})#, :use_seconds => true}) $a.register(anim) } #a.start end def delay a = Animator.new groups = Sketchup.active_model.entities.groups ins = Sketchup.active_model.entities.instances all = groups.concat ins target_pt = [0, 20, 0] duration = 5 delay = duration / 2.0 all.each {|e| anim = Anim.new(e, 'position', target_pt, {'duration' => duration, 'easing' => 'linear'}) a.register(anim) anim = Anim.new(e, 'position', ORIGIN, {'duration' => duration, 'easing' => 'linear', 'delay' => delay}) a.register(anim) #a.register(anim2) } a.start end def fwd(d) a = Animator.new car = Sketchup.active_model.entities.instances[0] tr = car.transformation dest = tr.origin.offset(tr.yaxis, d) #dest = Geom::Transformation.new(Geom::Point3d.new(car.transformation.origin.offset(car.transformation.yaxis, d))) anim = Anim.new(car, 'position', {'to' => dest, 'duration' => 30}) a.register anim a.start end def rt(angle) a = Animator.new car = Sketchup.active_model.entities.instances[0] tr = car.transformation pivot = tr.origin rot = Geom::Transformation.rotation(pivot, Z_AXIS, -angle.degrees) * tr anim = Anim.new(car, 'transformation', {'to' => rot, 'duration'=>50}) a.register anim a.start end