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