Beispiel #1
0
    directional = base.render.attach_new_node(directional)
    base.render.set_light(directional)

    for filename, tile_list in tile_lists.items():
        cols = 8
        rows = max(tile.tile_id for tile in tile_list.values()) // cols + 1

        win = base.openWindow(type='offscreen', size=(cols * width, rows * height), makeCamera=True)

        level = base.render.attachNewNode("level")

        for tile in tile_list.values():
            placeholder = level.attachNewNode("tile-placeholder")
            col = tile.tile_id % cols
            row = tile.tile_id // cols
            placeholder.setPos((cols - col - 1) + 0.5, 0, -((row + 1.0) * aspect - 0.5) * 2**0.5 - 0.1)
            tile.node.instanceTo(placeholder)
            if isinstance(tile, Train):
                train_node = tile.train.instanceTo(placeholder)

        lens.setFilmSize(cols, rows * aspect)
        base.camNode.setLens(lens)
        base.camera.set_pos(cols / 2, 8, -rows * 2**0.5 * aspect / 2 + 8)
        base.camera.look_at(cols / 2, 0, -rows * 2**0.5 * aspect / 2)

        base.graphicsEngine.renderFrame()
        base.screenshot(namePrefix=Path('data') / filename, defaultFilename=False)

        level.removeNode()
        base.closeWindow(win)