Esempio n. 1
0
 def prender(self, obj, va, col, bright):
     """Render the obj and its images in bounded 3D space."""
     self.prog['rot'].write(
         matrix44.create_from_matrix33(obj.rot, dtype=np.float32))
     self.prog['pos'].write(obj.pos)
     self.prog['color'].write(color(col, bright))
     va.render(moderngl.TRIANGLES)
Esempio n. 2
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)
Esempio n. 3
0
 def test_create_from_matrix33(self):
     mat = np.array([[1., 2., 3.], [3., 4., 5.], [6., 7., 8.]])
     result = matrix44.create_from_matrix33(mat)
     np.testing.assert_almost_equal(result[:3, :3], mat, decimal=5)
     orig = mat.copy()
     mat[0, 0] = 2.
     np.testing.assert_almost_equal(result[:3, :3], orig, decimal=5)
Esempio n. 4
0
    def test_multiply(self):
        m1 = Matrix44(np.arange(self._size))
        m2 = Matrix44(np.arange(self._size)[::-1])
        m = m1 * m2
        self.assertTrue(np.array_equal(m, matrix44.multiply(m1, m2)))

        m1 = Matrix44(np.arange(self._size))
        m2 = Matrix33(np.arange(9))
        m = m1 * m2
        self.assertTrue(np.array_equal(m, matrix44.multiply(m1, matrix44.create_from_matrix33(m2))))
Esempio n. 5
0
    def test_create_from_matrix33( self ):
        mat = matrix33.create_identity()
        result = matrix44.create_from_matrix33( mat )

        expected = numpy.eye( 4 )

        self.assertTrue(
            numpy.array_equal( result, expected ),
            "Matrix44 create_from_matrix33 incorrect"
            )
Esempio n. 6
0
    def test_multiply(self):
        m1 = Matrix44(np.arange(self._size))
        m2 = Matrix44(np.arange(self._size)[::-1])
        m = m1 * m2
        self.assertTrue(np.array_equal(m, matrix44.multiply(m2, m1)))

        m1 = Matrix44(np.arange(self._size))
        m2 = Matrix33(np.arange(9))
        m = m1 * m2
        self.assertTrue(np.array_equal(m, matrix44.multiply(matrix44.create_from_matrix33(m2), m1)))
Esempio n. 7
0
 def test_create_from_matrix33( self ):
     mat = np.array([
         [1.,2.,3.],
         [3.,4.,5.],
         [6.,7.,8.]
     ])
     result = matrix44.create_from_matrix33(mat)
     np.testing.assert_almost_equal(result[:3,:3], mat, decimal=5)
     orig = mat.copy()
     mat[0,0] = 2.
     np.testing.assert_almost_equal(result[:3,:3], orig, decimal=5)
Esempio n. 8
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)
    def prep(self, shader, aspect_ratio, scale_val=None, angle=90.0):
        self.shader = shader
        self.shader.use()

        if scale_val:
            self.scale = scale_val

        view = matrix44.create_from_translation(Vector3(DEFAULT_VIEW))
        self.shader.set_mat4('view', view)

        projection = matrix44.create_perspective_projection_matrix(
            angle, aspect_ratio, PROJECTION_NEAR, PROJECTION_FAR)
        self.shader.set_mat4('projection', projection)

        scale = matrix33.create_from_scale(
            Vector3([self.scale, self.scale, self.scale]))
        scale = matrix44.create_from_matrix33(scale)
        self.shader.set_mat4('scale', scale)
Esempio n. 10
0
 def test_matrix44(self):
     m1 = Matrix33.identity() * Matrix33.from_x_rotation(0.5)
     m = m1.matrix44
     self.assertTrue(np.array_equal(m, matrix44.create_from_matrix33(m1)))
Esempio n. 11
0
 def test_matrix44(self):
     m1 = Matrix33.identity() * Matrix33.from_x_rotation(0.5)
     m = m1.matrix44
     self.assertTrue(np.array_equal(m, matrix44.create_from_matrix33(m1)))