Пример #1
0
 def __init__(self, position, target, up_dir, projection):
     """Initialize a camera with its position, target point, and up_dir
     @position: Point3d
     @target: Point3d [this is the point towards it is facing
     @up_dir: Vector3d
     """
     self.position = position
     self.target = target
     self.up_dir = up_dir
     self.facing_dir = Vector3d.new(self.position, self.target)
     # check if facing_dir and up_dir are perpendicular
     if self.facing_dir.dot(self.up_dir) != 0.0:
         raise Exception("facing dir and up dir are not perpendicular")
     self.__matrix = None
     self.projection = projection
Пример #2
0
            return None

    def render_scene(self):
        for obj in self.objects:
            obj.render(self)
        self.__rendered = True

    def save_scene(self, filepath):
        if not self.__rendered:
            raise Exception('Scene not rendered/updated. Call render_scene() first.')
        self.image.save(filepath)


if __name__ == '__main__':
    projection = Projection(5, 5, 5)
    # camera properties
    pos = Point3d(0, 0, 1)
    target = Point3d(0, 0, 2)
    up = Vector3d.new(Point3d.origin(), Point3d(0, 1, 0))
    camera = Camera(pos, target, up, projection)
    size = 100
    space = Space3d(camera, size, size, size, 10)
    print(space.transform_point(Point3d(1,1,2)))
    assert False
    space.add_axes()
    space.add_cells()
    print(len(space.objects))

    space.render_scene()
    space.save_scene('test.png')