To create vectors from 3D data, use the begin_raw() and end_raw() commands.


def setup():
    py5.size(400, 400, py5.P2D)
    py5.begin_raw(py5.PDF, "raw.pdf")

def draw():
    py5.line(py5.pmouse_x, py5.pmouse_y, py5.mouse_x, py5.mouse_y)

def key_pressed():
    if py5.key == ' ':
def setup():
    py5.size(400, 400, py5.P2D)

    with py5.begin_raw(py5.PDF, "/tmp/raw.pdf"):
        for _ in range(10):
            py5.square(py5.random(py5.width), py5.random(py5.height), 10)


To create vectors from 3D data, use the begin_raw() and end_raw() commands. These commands will grab the shape data just before it is rendered to the screen. At this stage, your entire scene is nothing but a long list of individual lines and triangles. This means that a shape created with sphere() function will be made up of hundreds of triangles, rather than a single object. Or that a multi-segment line shape (such as a curve) will be rendered as individual segments.

When using begin_raw() and end_raw(), it’s possible to write to either a 2D or 3D renderer. For instance, begin_raw() with the PDF library will write the geometry as flattened triangles and lines, even if recording from the P3D renderer.

If you want a background to show up in your files, use rect(0, 0, width, height) after setting the fill() to the background color. Otherwise the background will not be rendered to the file because the background is not a shape.

This method can be used as a context manager to ensure that end_raw() always gets called, as shown in the last example.

Using hint(ENABLE_DEPTH_SORT) can improve the appearance of 3D geometry drawn to 2D file formats.

Underlying Processing method: beginRaw


    raw_graphics: Py5Graphics,  # Py5Graphics object to apply draw commands to
) -> None

    renderer: str,  # for example, PDF or DXF
    filename: str,  # filename for output
) -> Py5Graphics

Updated on March 06, 2023 02:49:26am UTC