annotate write_animation.py @ 2:d22d386c5e04

some old addons that need updating
author drewp@bigasterisk.com
date Sat, 28 Mar 2020 15:57:33 -0700
parents e4669be1d49d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
drewp@bigasterisk.com
parents:
diff changeset
1 import bpy
drewp@bigasterisk.com
parents:
diff changeset
2 from pathlib import Path
drewp@bigasterisk.com
parents:
diff changeset
3
drewp@bigasterisk.com
parents:
diff changeset
4 bl_info = {
drewp@bigasterisk.com
parents:
diff changeset
5 "name": "Write animation",
drewp@bigasterisk.com
parents:
diff changeset
6 "blender": (2, 80, 0),
drewp@bigasterisk.com
parents:
diff changeset
7 "location": "Render > Write animation",
drewp@bigasterisk.com
parents:
diff changeset
8 }
drewp@bigasterisk.com
parents:
diff changeset
9
drewp@bigasterisk.com
parents:
diff changeset
10
drewp@bigasterisk.com
parents:
diff changeset
11 class WriteAnimation(bpy.types.Operator):
drewp@bigasterisk.com
parents:
diff changeset
12 """Write a new webm next to the blend file"""
drewp@bigasterisk.com
parents:
diff changeset
13 bl_idname = "render.write_animation" # Unique identifier for buttons and menu items to reference.
drewp@bigasterisk.com
parents:
diff changeset
14 bl_label = "Write animation" # Display name in the interface.
drewp@bigasterisk.com
parents:
diff changeset
15 bl_options = {'REGISTER'}
drewp@bigasterisk.com
parents:
diff changeset
16
drewp@bigasterisk.com
parents:
diff changeset
17 def execute(self, context):
drewp@bigasterisk.com
parents:
diff changeset
18 if not bpy.data.filepath.replace('.', ''):
drewp@bigasterisk.com
parents:
diff changeset
19 raise ValueError('Please save the file somewhere first.')
drewp@bigasterisk.com
parents:
diff changeset
20 output_base = Path(bpy.data.filepath.replace('.blend', ''))
drewp@bigasterisk.com
parents:
diff changeset
21 for num in range(1, 1000):
drewp@bigasterisk.com
parents:
diff changeset
22 output_path = Path(f'{output_base}_{num}.webm')
drewp@bigasterisk.com
parents:
diff changeset
23 if output_path.exists():
drewp@bigasterisk.com
parents:
diff changeset
24 continue
drewp@bigasterisk.com
parents:
diff changeset
25 break
drewp@bigasterisk.com
parents:
diff changeset
26 else:
drewp@bigasterisk.com
parents:
diff changeset
27 raise NotImplementedError()
drewp@bigasterisk.com
parents:
diff changeset
28
drewp@bigasterisk.com
parents:
diff changeset
29 render = context.scene.render
drewp@bigasterisk.com
parents:
diff changeset
30
drewp@bigasterisk.com
parents:
diff changeset
31 render.filepath = str(output_path)
drewp@bigasterisk.com
parents:
diff changeset
32 render.image_settings.file_format = 'FFMPEG'
drewp@bigasterisk.com
parents:
diff changeset
33 render.ffmpeg.format = 'WEBM'
drewp@bigasterisk.com
parents:
diff changeset
34 render.ffmpeg.codec = 'WEBM'
drewp@bigasterisk.com
parents:
diff changeset
35 render.ffmpeg.constant_rate_factor = 'HIGH'
drewp@bigasterisk.com
parents:
diff changeset
36 render.image_settings.color_mode = 'RGBA'
drewp@bigasterisk.com
parents:
diff changeset
37 bpy.ops.render.render('INVOKE_DEFAULT', animation=True)
drewp@bigasterisk.com
parents:
diff changeset
38
drewp@bigasterisk.com
parents:
diff changeset
39 return {'FINISHED'}
drewp@bigasterisk.com
parents:
diff changeset
40
drewp@bigasterisk.com
parents:
diff changeset
41
drewp@bigasterisk.com
parents:
diff changeset
42 def register():
drewp@bigasterisk.com
parents:
diff changeset
43 bpy.utils.register_class(WriteAnimation)
drewp@bigasterisk.com
parents:
diff changeset
44
drewp@bigasterisk.com
parents:
diff changeset
45
drewp@bigasterisk.com
parents:
diff changeset
46 def unregister():
drewp@bigasterisk.com
parents:
diff changeset
47 bpy.utils.unregister_class(WriteAnimation)
drewp@bigasterisk.com
parents:
diff changeset
48
drewp@bigasterisk.com
parents:
diff changeset
49
drewp@bigasterisk.com
parents:
diff changeset
50 if __name__ == "__main__":
drewp@bigasterisk.com
parents:
diff changeset
51 register()