From 6a735e49b8153711e516d5d82c601bd4b227cb57 Mon Sep 17 00:00:00 2001 From: Grant Sanderson Date: Sat, 27 Jun 2020 12:17:53 -0700 Subject: [PATCH] Refresh rotation matrix after interpolation --- manimlib/camera/camera.py | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/manimlib/camera/camera.py b/manimlib/camera/camera.py index bee560ef..4ed30be8 100644 --- a/manimlib/camera/camera.py +++ b/manimlib/camera/camera.py @@ -124,16 +124,9 @@ class CameraFrame(Mobject): return self.focal_distance def interpolate(self, frame1, frame2, alpha, path_func): - self.euler_angles[:] = interpolate( - frame1.euler_angles, - frame2.euler_angles, - alpha - ) - self.points = interpolate( - frame1.points, - frame2.points, - alpha, - ) + self.euler_angles[:] = interpolate(frame1.euler_angles, frame2.euler_angles, alpha) + self.refresh_camera_rotation_matrix() + self.points = interpolate(frame1.points, frame2.points, alpha) class Camera(object): @@ -324,6 +317,7 @@ class Camera(object): # Rendering def set_mobjects_as_static(self, *mobjects): + # Create vbo's holding each mobjects shader data for mob in mobjects: info_list = mob.get_shader_info_list() for info in info_list: @@ -348,10 +342,6 @@ class Camera(object): self.render(shader_info) def render(self, shader_info): - raw_data = shader_info["raw_data"] - if not raw_data: - return - shader, vert_format = self.get_shader(shader_info) if shader is None: return @@ -364,8 +354,9 @@ class Camera(object): if "vbo" in shader_info: vbo = shader_info["vbo"] else: + raw_data = shader_info["raw_data"] vbo = self.ctx.buffer(raw_data) - # vao = self.ctx.simple_vertex_array(shader, vbo, *shader_info["attributes"]) + vao = self.ctx.vertex_array( program=shader, content=[(vbo, vert_format, *shader_info["attributes"])]