Povray Backend¶
The povray backend generates high-quality, ray-traced snapshots of scenes by externally calling a povray binary. To use this backend, povray should be installed and accessible on your executable path.
-
class
plato.draw.povray.
Scene
(primitives=[], features={}, size=(40, 30), translation=(0, 0, -50), rotation=(1, 0, 0, 0), zoom=1, pixel_scale=20, **kwargs)[source]¶ A container to hold and display collections of primitives.
Scene keeps track of global information about a set of things to be rendered and handles configuration of optional (possibly backend-specific) rendering parameters.
Global information managed by a Scene includes the size of the viewing window, translation and rotation applied to the scene as a whole, and a zoom level.
Primitives can be added to a scene through the primitives argument of the constructor or the add_primitive method. Primitives can be retrieved by iterating over the scene:
for prim in scene: # (do something with prim)
Primitives can also be accessed in the order they were added to the scene using list-like syntax:
first_three_prims = scene[:3] last_prim = scene[-1]
Optional rendering arguments are enabled as features, which are name-value pairs identifying a feature by name and any configuration of the feature in the value.
This Scene supports the following features:
- antialiasing: Enable antialiasing using the given value (default 0.3).
- ambient_light: Enable trivial ambient lighting. The given value indicates the magnitude of the light (in [0, 1]).
- directional_light: Add directional lights. The given value indicates the magnitude*direction normal vector.
- multithreading: Enable multithreaded rendering. The given value indicates the number of threads to use.
- transparent_background: Render with a transparent background when calling save() or show()
-
render
()[source]¶ Render all the shapes in this scene.
Returns: povray string representing the entire scene
3D Graphics Primitives¶
-
class
plato.draw.povray.
Box
(*args, **kwargs)[source]¶ A triclinic box frame.
This primitive draws a triclinic box centered at the origin. It is specified in terms of three lattice vector lengths Lx, Ly, Lz and tilt factors, defined using the hoomd-blue schema.
Rather than directly initializing via attributes, Box objects can also be automatically created from box-type objects using the
from_box()
method.Examples:
Lx = Ly = Lz = 10 xy = xz = yz = 0 box_primitive = draw.Box(Lx=Lx, Ly=Ly, Lz=Lz, width=width, color=color) box_tuple = (Lx, Ly, Lz, xy, xz, yz) box_primitive = draw.Box.from_box(box_tuple)
- This primitive has the following attributes:
- start_points: Beginning coordinate for each line segment
- end_points: Ending coordinate for each line segment
- widths: Width of each line segment
- colors: Color, RGBA, [0, 1] for each line segment
- Lx: Length of first box vector
- Ly: Length of second box vector
- Lz: Length of third box vector
- xy: Tilt factor between the first and second box vectors
- xz: Tilt factor between the first and third box vectors
- yz: Tilt factor between the second and third box vectors
- width: Width of box line segments
- color: Color, RGBA, [0, 1] for the box line segments
-
class
plato.draw.povray.
ConvexPolyhedra
(**kwargs)[source]¶ A collection of identically-shaped convex polyhedra.
Each shape can have its own position, orientation, and color.
- This primitive has the following attributes:
- positions: Position of each particle
- orientations: Orientation quaternion of each particle
- colors: Color, RGBA, [0, 1] for each particle
- vertices: Vertices in local coordinates for the shape, to be replicated for each particle
- outline: Outline width for all shapes
- outline: Outline width for all particles
-
colors
¶ Color, RGBA, [0, 1] for each particle
-
orientations
¶ Orientation quaternion of each particle
-
outline
¶ Outline width for all particles
-
positions
¶ Position of each particle
-
vertices
¶ Vertices in local coordinates for the shape, to be replicated for each particle
-
class
plato.draw.povray.
ConvexSpheropolyhedra
(**kwargs)[source]¶ A collection of identically-shaped convex spheropolyhedra.
Each shape can have its own position, orientation, and color. The rounding radius is shared over all shapes.
- This primitive has the following attributes:
- positions: Position of each particle
- orientations: Orientation quaternion of each particle
- colors: Color, RGBA, [0, 1] for each particle
- vertices: Vertices in local coordinates for the interior (non-rounded) shape, to be replicated for each particle
- radius: Rounding radius to be applied to all shapes
-
class
plato.draw.povray.
Ellipsoids
(**kwargs)[source]¶ A collection of ellipsoids with identical dimensions.
Each ellipsoid can have its own position, orientation, and color. All shapes drawn by this primitive share common principal axis lengths.
- This primitive has the following attributes:
- positions: Position of each particle
- orientations: Orientation quaternion of each particle
- colors: Color, RGBA, [0, 1] for each particle
- a: Radius in the x-direction
- b: Radius in the y-direction
- c: Radius in the z-direction
-
class
plato.draw.povray.
Lines
(**kwargs)[source]¶ A collection of line segments.
Each segment can have a different color and width. Lines can be used in both 2D and 3D scenes, but they are currently not shaded and may look out of place in 3D.
- This primitive has the following attributes:
- start_points: Beginning coordinate for each line segment
- end_points: Ending coordinate for each line segment
- widths: Width of each line segment
- colors: Color, RGBA, [0, 1] for each line segment
- cap_mode: Cap mode for lines (0: default, 1: round)
-
cap_mode
¶ Cap mode for lines (0: default, 1: round)
-
colors
¶ Color, RGBA, [0, 1] for each line segment
-
end_points
¶ Ending coordinate for each line segment
-
start_points
¶ Beginning coordinate for each line segment
-
widths
¶ Width of each line segment
-
class
plato.draw.povray.
Mesh
(**kwargs)[source]¶ A 3D triangle mesh.
Meshes are specified by an array of vertices and indices identifying triangles within that vertex array. Colors are assigned per-vertex and interpolated between vertices.
Meshes with a common set of vertices and face indices can be replicated multiple times using a set of positions and orientations. In order to set the color of individual replicas of the Mesh object, use the shape_colors and shape_color_fraction attributes.
- This primitive has the following attributes:
- vertices: Vertex array specifying coordinates of the mesh nodes
- indices: Indices of the vertex array specifying individual triangles (Nx3)
- colors: Color, RGBA, [0, 1] for each vertex
- positions: Central positions for each mesh to be replicated
- orientations: Orientations for each mesh to be replicated
- shape_colors: Color, RGBA, [0, 1] for each replica (shape) of the mesh
- shape_color_fraction: Fraction of a vertex’s color that should be assigned based on shape_colors
-
class
plato.draw.povray.
Spheres
(**kwargs)[source]¶ A collection of spheres in 3D.
Each sphere can have a different color and diameter.
- This primitive has the following attributes:
- positions: Position of each particle
- colors: Color, RGBA, [0, 1] for each particle
- radii: Radius of each particle
-
class
plato.draw.povray.
SphereUnions
(**kwargs)[source]¶ A collection of identical sphere-union bodies in 3D.
A SphereUnions object is a union of spheres, each of which has its own color, radius, and local position. The SphereUnions object can be rigidly rotated and translated via its position and orientation attributes.
- This primitive has the following attributes:
- positions: Position of each particle
- orientations: Orientation quaternion of each particle
- colors: Color, RGBA, [0, 1] for each sphere in the union
- points: Positions in local coordinates for the spheres in the union, to be replicated for each particle
- radii: Radius of each sphere in the union