Adding objects to plot

In this example we will draw a simple 3D primitive, add it to the plot, and display the result.

To draw the triangle we will use the mesh() method from the k3d module. This method creates a Mesh object, which can be added to a K3D Plot.

In [ ]:
import k3d
plot = k3d.plot()


vertices = [[0, 0, 0], [0, 0, 1], [1, 0, 0]]
indices = [[0, 1, 2]]

mesh = k3d.mesh(vertices, indices)

plot += mesh

plot.display()

Expected result: An isosceles triangle in the y=0 plane

The arguments we passed to the mesh() function are a vertex array (a list or NumPy's ndarray is OK) which is composed of $(x, y, z)$ coordinates and an array of index triplets (ints). Each triplet refers to the vertex array, defining one triangle.

We can of course add objects directly to the plot, without creating variables:

In [ ]:
plot += k3d.mesh([0, 1, 1, 
                 1, 1, 0, 
                 1, 1, 1,
                 
                 1, 1, 1,
                 1, 2, 2,
                 2, 1, 1], [0, 1, 2, 3, 4, 5], color=0x00ff00)

plot

Expected result: One blue and two green triangles

This is a plot of two meshes. Please note -- in the second case we didn't nest the triplets - the numbers run continuously in a flat list. We also used an optional argument, color to specify the color of the second object. K3D objects have many attributes, which we can find out about from the docstrings and from other examples, dedicated to the specific object type.

Back to the main topic. The plot keeps track of the objects that it contains:

In [ ]:
len(plot.objects)

We have 2 displays of the plot in the notebook, associated with 2 different cell outputs. However, they are the same plot - you should see the same scene (3 triangles) on both of them. Each view of the plot can be adjusted separately using the mouse.

When the plot becomes too cluttered with objects, we may want to remove some of them. This is easily done with the -= operator. This is the place, where having named our objects beforehand comes in handy:

In [ ]:
plot -= mesh
plot

Expected result: Just the second mesh

Having variables is also convenient when we want to modify the objects already shown. This will be demonstrated in another example.

In [ ]: