Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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))))
Exemplo n.º 3
0
    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)))
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
 def create_from_matrix44(self):
     m44 = np.arange((4, 4))
     result = matrix33.create_from_matrix44(m44)
     self.assertTrue(np.allclose(result, m44[:3][:3]))
Exemplo n.º 6
0
 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)))
Exemplo n.º 7
0
 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)))
Exemplo n.º 8
0
 def create_from_matrix44(self):
     m44 = np.arange((4,4))
     result = matrix33.create_from_matrix44(m44)
     self.assertTrue(np.allclose(result, m44[:3][:3]))