bpy_render.py
2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- coding: UTF-8 -*-
import bpy
import json
import os
import sys
import shutil
def configure_output():
bpy.context.scene.frame_start = 0
bpy.context.scene.frame_current = bpy.context.scene.frame_start
bpy.context.scene.frame_end = bpy.context.scene.frame_start
bpy.context.scene.render.resolution_x = 640
bpy.context.scene.render.resolution_y = 480
bpy.context.scene.render.resolution_percentage = 100
bpy.context.scene.render.image_settings.file_format = 'H264'
bpy.context.scene.render.ffmpeg.format = 'MPEG4'
bpy.context.scene.render.ffmpeg.codec = 'H264'
bpy.context.scene.render.use_shadows = False
bpy.context.scene.render.use_raytrace = False
bpy.context.scene.render.use_envmaps = False
bpy.context.scene.render.use_motion_blur = False
bpy.context.scene.render.use_shadows = False
return
def file_rename(file_full_path):
file_path = os.path.dirname(os.path.abspath(file_full_path))
filename = os.path.basename(os.path.splitext(file_full_path)[0])
extension = os.path.splitext(file_full_path)[1]
filename_reversed = ""
valid_char = False
for char in reversed(filename):
if (valid_char == True):
filename_reversed += char
if (char == "_"):
valid_char = True
try:
filename_reversed = filename_reversed[::-1]
new_filename = os.path.join(file_path, "%s%s" % (filename_reversed, extension))
shutil.move(file_full_path, new_filename)
return new_filename
except Exception:
return ""
def render_video(video_output = ""):
getcwd = os.path.dirname(os.path.abspath(__file__))
base_path = os.path.join(getcwd, video_output)
bpy.context.scene.render.filepath = base_path + "_"
try:
bpy.ops.render.render(animation = True, write_still = False, layer = "", scene = "")
return str("%s%0.4i-%0.4i.mp4" % (bpy.context.scene.render.filepath, bpy.context.scene.frame_start, bpy.context.scene.frame_end))
except:
return ""
def main():
if (len(sys.argv) == 8):
json_obj = json.loads(sys.argv[7])
try:
video_output = json_obj["video_output"]
convert_to_webm = json_obj["convert_to_webm"]
except:
sys.exit(3)
try:
configure_output()
renamed_video = file_rename(render_video(video_output))
base_path = os.path.splitext(renamed_video)[0]
if (convert_to_webm):
subprocess.call(["avconv", "-loglevel", "0", "-y", "-i", renamed_video, "-r", "24", "-vcodec", "libvpx", base_path + ".webm"])
subprocess.call(["rm", renamed_video])
except:
sys.exit(4)
else:
sys.exit(5)
if __name__ == "__main__":
main()