# SWITCH_use_frame # SWITCH_use_bake import bpy from math import * verts = [] faces = [] edges = [] if( (frame < s_frame) | (frame > e_frame) ): pass else: obj = bpy.data.objects[objname] x, y, z = obj.location if( s_frame == frame ): bpy.x = x bpy.y = y bpy.z = z bpy.angle = 2 * pi / (e_frame - s_frame - 1) bpy.ops.object.select_all(action='DESELECT') bpy.ops.mesh.primitive_cone_add() for so in bpy.data.objects: if( so.select ): bpy.conename = so.name break ob = bpy.data.objects[bpy.conename] tmesh = ob.data bpy.conemname = tmesh.name bpy.ops.object.select_all(action='DESELECT') bpy.ops.mesh.primitive_cylinder_add() for so in bpy.data.objects: if( so.select ): bpy.cylindername = so.name break ob = bpy.data.objects[bpy.cylindername] tmesh = ob.data bpy.cylindermname = tmesh.name bpy.ops.object.select_all(action='DESELECT') bpy.ops.mesh.primitive_ico_sphere_add() for so in bpy.data.objects: if( so.select ): bpy.spherename = so.name break ob = bpy.data.objects[bpy.spherename] tmesh = ob.data bpy.spheremname = tmesh.name bpy.ops.object.select_all(action='DESELECT') bpy.ops.mesh.primitive_monkey_add() for so in bpy.data.objects: if( so.select ): bpy.monkeyname = so.name break ob = bpy.data.objects[bpy.monkeyname] tmesh = ob.data bpy.monkeymname = tmesh.name bpy.ops.object.select_all(action='DESELECT') bpy.ops.mesh.primitive_cube_add() for so in bpy.data.objects: if( so.select ): bpy.boxname = so.name break ob = bpy.data.objects[bpy.boxname] tmesh = ob.data bpy.boxmname = tmesh.name if( s_frame != frame ): y = bpy.y x = bpy.x + cos(bpy.angle * frame) z = bpy.z + sin(bpy.angle * frame) obj.location = ( x, y, z ) if( frame % 5 == 0 ): sobjname = bpy.conename if( frame % 5 == 1 ): sobjname = bpy.cylindername if( frame % 5 == 2 ): sobjname = bpy.spherename if( frame % 5 == 3 ): sobjname = bpy.monkeyname if( frame % 5 == 4 ): sobjname = bpy.boxname sobj = bpy.data.objects[sobjname] srcmesh = sobj.data objmesh = obj.data meshname = objmesh.name for vert in srcmesh.vertices: x, y, z = vert.co point = (x, y, z) verts.append( point ) for edge in srcmesh.edges: edges.append((edge.vertices[0], edge.vertices[1])) for face in srcmesh.faces: if( len(face.vertices) == 4 ): faces.append((face.vertices[0], face.vertices[1], face.vertices[2], face.vertices[3])) else: faces.append((face.vertices[0], face.vertices[1], face.vertices[2])) objmesh.user_clear() bpy.data.meshes.remove( objmesh ) dstmesh = bpy.data.meshes.new(meshname) dstmesh.from_pydata(verts, edges, faces) dstmesh.update() obj.data = dstmesh if( e_frame == frame ): del bpy.x del bpy.y del bpy.z del bpy.angle bpy.ops.object.select_all(action='DESELECT') bpy.ops.object.select_name(name=bpy.conename) bpy.ops.object.delete() bpy.data.meshes[bpy.conemname].user_clear() bpy.data.meshes.remove(bpy.data.meshes[bpy.conemname]) bpy.ops.object.select_all(action='DESELECT') bpy.ops.object.select_name(name=bpy.cylindername) bpy.ops.object.delete() bpy.data.meshes[bpy.cylindermname].user_clear() bpy.data.meshes.remove(bpy.data.meshes[bpy.cylindermname]) bpy.ops.object.select_all(action='DESELECT') bpy.ops.object.select_name(name=bpy.spherename) bpy.ops.object.delete() bpy.data.meshes[bpy.spheremname].user_clear() bpy.data.meshes.remove(bpy.data.meshes[bpy.spheremname]) bpy.ops.object.select_all(action='DESELECT') bpy.ops.object.select_name(name=bpy.monkeyname) bpy.ops.object.delete() bpy.data.meshes[bpy.monkeymname].user_clear() bpy.data.meshes.remove(bpy.data.meshes[bpy.monkeymname]) bpy.ops.object.select_all(action='DESELECT') bpy.ops.object.select_name(name=bpy.boxname) bpy.ops.object.delete() bpy.data.meshes[bpy.boxmname].user_clear() bpy.data.meshes.remove(bpy.data.meshes[bpy.boxmname]) del bpy.conename del bpy.cylindername del bpy.spherename del bpy.monkeyname del bpy.boxname del bpy.conemname del bpy.cylindermname del bpy.spheremname del bpy.monkeymname del bpy.boxmname