I wanted to animate my klein bagel to spin around.
I’ve written this script to create a series of scenes to accomplish this in a reasonably smooth playing way. However, as soon as I click on the first scene to play the animation, the style changes back to the default and the original style cannot be recovered.
How to resolve this so I can preserve the original style settings when playing an anim?
Here is my script so far
class FooRotation
def self.capture_render_opts(model)
render_options = model.rendering_options
local_ops = Hash.new
render_options.each { |key,val|
print("key: #{key}, val: #{val}")
local_ops[key] = val
}
return local_ops
end
def self.clear_scenes(model)
scenes = model.pages
scenes.to_a.each do |scene|
scenes.erase(scene)
end
end
def self.create_scenes(model, view, num_scenes, orbit_radius, orbit_height, orbit_speed)
(0..num_scenes-1).each do |i|
# compute camera position
angle_degrees = i * orbit_speed
angle_radians = angle_degrees.degrees
x = orbit_radius * Math.cos(angle_radians)
y = orbit_radius * Math.sin(angle_radians)
camera_position = [x,y,orbit_height]
target_position = [0,0,0]
# set camera position and target
camera = view.camera
camera.perspective = true
camera.set(camera_position, target_position, [0,0,1])
# create a new scene and update it
scene = model.pages.add("Scene #{i+1}")
scene.use_camera = true
scene.transition_time = 0.2
view.refresh
sleep(1)
end
end # method create_scenes
end # end class FooRotation
# these are all the render options of the desired look of the model
# render option: BackgroundColor: Color(255, 255, 255, 255)
# render option: BandColor: Color( 0, 0, 0, 127)
# render option: ConstructionColor: Color( 0, 0, 0, 255)
# render option: DepthQueWidth: 4
# render option: DisplayColorByLayer: false
# render option: DisplayDims: true
# render option: DisplayFog: false
# render option: DisplayInstanceAxes: false
# render option: DisplaySectionCuts: true
# render option: DisplaySectionPlanes: false
# render option: DisplaySketchAxes: false
# render option: DisplayText: true
# render option: DisplayWatermarks: true
# render option: DrawBackEdges: false
# render option: DrawDepthQue: false
# render option: DrawGround: false
# render option: DrawHidden: false
# render option: DrawHorizon: true
# render option: DrawLineEnds: false
# render option: DrawProfilesOnly: false
# render option: DrawSilhouettes: false
# render option: DrawUnderground: true
# render option: EdgeColorMode: 0
# render option: EdgeDisplayMode: 0
# render option: EdgeType: 0
# render option: ExtendLines: false
# render option: FaceBackColor: Color(164, 178, 187, 255)
# render option: FaceColorMode: 0
# render option: FaceFrontColor: Color(255, 255, 255, 255)
# render option: FogColor: Color(255, 255, 255, 255)
# render option: FogEndDist: -1.0
# render option: FogStartDist: -1.0
# render option: FogUseBkColor: true
# render option: ForegroundColor: Color( 0, 0, 0, 255)
# render option: GroundColor: Color(255, 255, 255, 255)
# render option: GroundTransparency: 23
# render option: HideConstructionGeometry: false
# render option: HighlightColor: Color( 0, 1, 255, 255)
# render option: HorizonColor: Color( 0, 0, 0, 0)
# render option: InactiveFade: 0.25
# render option: InactiveHidden: false
# render option: InstanceFade: 0.5
# render option: InstanceHidden: false
# render option: JitterEdges: false
# render option: LineEndWidth: 9
# render option: LineExtension: 3
# render option: LockedColor: Color(255, 0, 0, 255)
# render option: MaterialTransparency: true
# render option: ModelTransparency: false
# render option: RenderMode: 2
# render option: SectionActiveColor: Color(255, 135, 0, 255)
# render option: SectionCutDrawEdges: true
# render option: SectionCutWidth: 3
# render option: SectionDefaultCutColor: Color( 0, 0, 0, 255)
# render option: SectionInactiveColor: Color(112, 105, 97, 255)
# render option: ShowViewName: true
# render option: SilhouetteWidth: 2
# render option: SkyColor: Color(255, 255, 255, 255)
# render option: Texture: true
# render option: TransparencySort: 0
model = Sketchup.active_model
view = model.active_view
model.start_operation('capture_render_opts', true)
print("capture render opts")
local_ops = FooRotation.capture_render_opts(model)
model.commit_operation
model.start_operation('erase_previous_scenes', true)
print("clear scenes")
FooRotation.clear_scenes(model)
model.commit_operation
model.start_operation('create_scenes', true)
print("create scenes")
num_scenes = 180
orbit_radius = 1200.0
orbit_height = 180.0
orbit_speed = 360.0 / num_scenes
FooRotation.create_scenes(model, view, num_scenes, orbit_radius, orbit_height, orbit_speed)
model.commit_operation
Thank you for any thoughts
-j_jones