Skip to content

Primitive objects

Rendering function

from fdray import *


def render(*args):
    return Scene(
        Camera(20, 30, view_scale=2.2),
        LightSource((0.5, 90, 40), "white"),
        Cylinder((0, 0, 0), (2, 0, 0), 0.02, Color("red")),
        Cylinder((0, 0, 0), (0, 2, 0), 0.02, Color("green")),
        Cylinder((0, 0, 0), (0, 0, 2), 0.02, Color("blue")),
        *args,
    ).render(width=300, height=300)

Box

render(Box(0, (1, 1.4, 1.8), Color("#ff33ff77")))

Cuboid

render(Cuboid(0, (1, 1.4, 1.8), Color("#33ffff77")))

Cube

render(Cube(0.5, 1.5, Color("gold", 0.5)))

render(Cube().pigment(Color("gold", 0.5)))

Cone

render(Cone("x", 1, "y", 0.5, Color("darkgreen", 0.5)))

render(Cone("-0.5*x", 1, "z", 0.5, "open", Color("dimgrey", 0.5)))

Cylinder

render(Cylinder("-z", "y", 0.5, Color("dimgrey", 0.5)))

Plane

render(Plane("y", 0.5, Color("pink", 0.5)))

Sphere

render(Sphere(0, 1.5, Color("coral", 0.5)))

render(Sphere().pigment(Color("brown", 0.5)).finish(phong=0.3))

Sphere sweep

render(
    SphereSweep(
        "linear_spline",
        [0, (0, 1, 0), (0, 0, 1.5), (2, 0, 0)],
        [0.1, 0.2, 0.1, 0.2],
    )
    .pigment(Color("yellow", 0.5))
    .finish(phong=0.3),
)

Polyline

render(
    Polyline([(0, 0, 0), (0, 1, 0), (0, 0, 1.5), (2, 0, 0)], 0.2)
    .pigment(Color("purple", 0.5))
    .finish(phong=0.5, brilliance=0.5),
)

Curve

render(
    Curve([(0, 0, 0), (0, 1, 0), (0, 0, 1.5), (2, 0, 0)], 0.2)
    .pigment(Color("ivory", 0.5))
    .finish(phong=0.5, brilliance=0.5),
)

Text

Text.set_font("DejaVuSerif")

'/usr/share/fonts/truetype/dejavu/DejaVuSerif.ttf'

render(Text("text", 0.1, Color("teal")))

render(Text("text", 0, Color("teal")).align())

render(Text("text", 0, Color("teal")).align(20, 30))

Torus

render(
    Torus(1, 0.4, Color("cyan", 0.5))
    .finish(phong=0.3, reflection=0.5)
    .rotate(90, 10, 20),
)