def draw(self, time, frametime, target): # Enable depth testing and face fulling self.ctx.disable(moderngl.DEPTH_TEST | moderngl.CULL_FACE) cam_mat = self.sys_camera.view_matrix # Skybox sky_matrix = matrix44.create_from_matrix33( matrix33.create_from_matrix44(cam_mat)) self.sky_shader['m_mv'].write(sky_matrix.astype('f4').tobytes()) self.sky_sphere.render(self.sky_shader) self.ctx.enable(moderngl.DEPTH_TEST | moderngl.CULL_FACE) # Sun position self.sun_pos = cam_mat[3][0:3].astype('f4') # Sun self.sun_shader['m_mv'].write( self.sys_camera.view_matrix.astype('f4').tobytes()) self.sun_shader['m_proj'].write(self.projection_bytes) self.sun_shader['time'].value = time self.sun_shader['texture0'].value = 1 self.sun_texture.use(location=1) self.sun_sphere.render(self.sun_shader) # Earth self.earth.draw(time, frametime, target)
def test_multiply(self): m1 = Matrix33(np.arange(self._size)) m2 = Matrix33(np.arange(self._size)[::-1]) m = m1 * m2 self.assertTrue(np.array_equal(m, matrix33.multiply(m1, m2))) m1 = Matrix33(np.arange(self._size)) m2 = Matrix44(np.arange(16)) m = m1 * m2 self.assertTrue(np.array_equal(m, matrix33.multiply(m1, matrix33.create_from_matrix44(m2))))
def test_multiply(self): m1 = Matrix33(np.arange(self._size)) m2 = Matrix33(np.arange(self._size)[::-1]) m = m1 * m2 self.assertTrue(np.array_equal(m, matrix33.multiply(m2, m1))) m1 = Matrix33(np.arange(self._size)) m2 = Matrix44(np.arange(16)) m = m1 * m2 self.assertTrue(np.array_equal(m, matrix33.multiply(matrix33.create_from_matrix44(m2), m1)))
def render(self, time=0, frametime=0, projection=None, modelview=None, target=None): self.ctx.enable_only(moderngl.NOTHING) sky_matrix = matrix44.create_from_matrix33( matrix33.create_from_matrix44(modelview)) self.prog['m_mv'].write(sky_matrix.astype('f4').tobytes()) self.prog['m_proj'].write(projection) self.texture.use(0) self.prog['intensity'] = self.track_intensity.time_value(time) self.sphere.render(self.prog)
def create_from_matrix44(self): m44 = np.arange((4, 4)) result = matrix33.create_from_matrix44(m44) self.assertTrue(np.allclose(result, m44[:3][:3]))
def test_matrix33(self): m1 = Matrix44.identity() * Matrix44.from_x_rotation(0.5) m = m1.matrix33 self.assertTrue(np.array_equal(m, matrix33.create_from_matrix44(m1)))
def create_from_matrix44(self): m44 = np.arange((4,4)) result = matrix33.create_from_matrix44(m44) self.assertTrue(np.allclose(result, m44[:3][:3]))