mirror of
https://github.com/3b1b/manim.git
synced 2025-08-05 16:49:03 +00:00
preview timing improvements + imcorporated into script wrapper
This commit is contained in:
parent
b527568f5c
commit
4198581f8a
2 changed files with 23 additions and 18 deletions
|
@ -63,13 +63,14 @@ def find_scene_class_and_args(scene_string, args_extension,
|
||||||
|
|
||||||
def command_line_create_scene(sys_argv, scene_classes, movie_prefix = ""):
|
def command_line_create_scene(sys_argv, scene_classes, movie_prefix = ""):
|
||||||
try:
|
try:
|
||||||
opts, args = getopt.getopt(sys_argv, "ho:s:a:l")
|
opts, args = getopt.getopt(sys_argv, "h:s:a:l:p")
|
||||||
except getopt.GetoptError as err:
|
except getopt.GetoptError as err:
|
||||||
print str(err)
|
print str(err)
|
||||||
sys.exit(2)
|
sys.exit(2)
|
||||||
scene_string = ""
|
scene_string = ""
|
||||||
args_extension = ""
|
args_extension = ""
|
||||||
display_config = PRODUCTION_QUALITY_DISPLAY_CONFIG
|
display_config = PRODUCTION_QUALITY_DISPLAY_CONFIG
|
||||||
|
preview = False
|
||||||
for opt, arg in opts:
|
for opt, arg in opts:
|
||||||
if opt == '-h':
|
if opt == '-h':
|
||||||
print HELP_MESSAGE
|
print HELP_MESSAGE
|
||||||
|
@ -80,6 +81,9 @@ def command_line_create_scene(sys_argv, scene_classes, movie_prefix = ""):
|
||||||
args_extension = arg
|
args_extension = arg
|
||||||
elif opt == '-l':
|
elif opt == '-l':
|
||||||
display_config = LOW_QUALITY_DISPLAY_CONFIG
|
display_config = LOW_QUALITY_DISPLAY_CONFIG
|
||||||
|
elif opt == '-p':
|
||||||
|
display_config = LOW_QUALITY_DISPLAY_CONFIG
|
||||||
|
preview = True
|
||||||
if len(args) > 0:
|
if len(args) > 0:
|
||||||
scene_string = args[0]
|
scene_string = args[0]
|
||||||
if len(args) > 1:
|
if len(args) > 1:
|
||||||
|
@ -92,6 +96,9 @@ def command_line_create_scene(sys_argv, scene_classes, movie_prefix = ""):
|
||||||
name = SceneClass.__name__ + SceneClass.args_to_string(*args)
|
name = SceneClass.__name__ + SceneClass.args_to_string(*args)
|
||||||
print "Constructing %s..."%name
|
print "Constructing %s..."%name
|
||||||
scene = SceneClass(*args, display_config = display_config)
|
scene = SceneClass(*args, display_config = display_config)
|
||||||
|
if preview:
|
||||||
|
scene.preview()
|
||||||
|
else:
|
||||||
scene.write_to_movie(movie_prefix + name)
|
scene.write_to_movie(movie_prefix + name)
|
||||||
|
|
||||||
|
|
||||||
|
|
30
tk_scene.py
30
tk_scene.py
|
@ -1,6 +1,8 @@
|
||||||
from scene import *
|
from scene import *
|
||||||
import Tkinter
|
import Tkinter
|
||||||
from PIL import ImageTk, Image
|
from PIL import ImageTk, Image
|
||||||
|
import itertools as it
|
||||||
|
import time
|
||||||
|
|
||||||
class TkSceneRoot(Tkinter.Tk):
|
class TkSceneRoot(Tkinter.Tk):
|
||||||
def __init__(self, scene):
|
def __init__(self, scene):
|
||||||
|
@ -17,23 +19,19 @@ class TkSceneRoot(Tkinter.Tk):
|
||||||
self.canvas.configure(background='black')
|
self.canvas.configure(background='black')
|
||||||
self.canvas.place(x=-2,y=-2)
|
self.canvas.place(x=-2,y=-2)
|
||||||
|
|
||||||
self.frame_index = 0
|
last_time = time.time()
|
||||||
self.num_frames = len(self.scene.frames)
|
for frame in it.cycle(self.scene.frames):
|
||||||
self.frame_duration_in_ms = int(1000*scene.frame_duration)
|
try:
|
||||||
# self.after(0,self.show_new_image)
|
self.show_new_image(frame)
|
||||||
while(1):
|
except:
|
||||||
self.frame_index = 0
|
break
|
||||||
self.show_new_image()
|
sleep_time = self.scene.frame_duration
|
||||||
|
sleep_time -= time.time() - last_time
|
||||||
|
time.sleep(max(0, sleep_time))
|
||||||
|
last_time = time.time()
|
||||||
self.mainloop()
|
self.mainloop()
|
||||||
|
|
||||||
|
def show_new_image(self, frame):
|
||||||
|
|
||||||
def show_new_image(self):
|
|
||||||
self.frame_index += 1
|
|
||||||
if self.frame_index >= self.num_frames:
|
|
||||||
return
|
|
||||||
frame = self.scene.frames[self.frame_index]
|
|
||||||
|
|
||||||
image = Image.fromarray(frame).convert('RGB')
|
image = Image.fromarray(frame).convert('RGB')
|
||||||
image.resize(self.frame.size())
|
image.resize(self.frame.size())
|
||||||
photo = ImageTk.PhotoImage(image)
|
photo = ImageTk.PhotoImage(image)
|
||||||
|
@ -42,5 +40,5 @@ class TkSceneRoot(Tkinter.Tk):
|
||||||
0, 0,
|
0, 0,
|
||||||
image = photo, anchor = Tkinter.NW
|
image = photo, anchor = Tkinter.NW
|
||||||
)
|
)
|
||||||
self.after(self.frame_duration_in_ms, self.show_new_image)
|
# self.after(self.frame_duration_in_ms, self.show_new_image)
|
||||||
self.update()
|
self.update()
|
||||||
|
|
Loading…
Add table
Reference in a new issue