Un contour est la courbe (en 3D la surface) qui visite des points de valeur égale. Pour les données numériques, il se situera sur les points de la grille ou entre eux par interpolation. La partie "externe" de votre cube est composée de zéros, donc il y a un saut aux index 10 et 90 qui crée la surface du contour.
Les limites internes sont créées lorsque les valeurs de votre grille croisent les valeurs de contour équidistantes (il y a apparemment 3 valeurs au total par défaut). Enfin, comme la partie extérieure du cube est entièrement nulle, sans transparence, vous ne verrez que cela et aucune variation de valeur n'indique une variation de couleur.
Je donne un exemple ci-dessous avec plus de niveaux (9) et sans la limite zéro, qui donne des plans de contour horizontaux.
import numpy as np
from mayavi import mlab
cube = np.zeros((100,100,100))
cube[:,:,:] = np.linspace(0, 1, np.prod(cube.shape)).reshape(cube.shape).T
mlab.contour3d(cube, colormap="jet", opacity=0.5, contours=9)
mlab.show()
Vous pouvez également envisager des "plans de coupe" qui produisent des tranches 2D dans des données 3D. Il y a des exemples dans ces pages: http://docs.enthought.com/mayavi/mayavi/mlab_case_studies.html et http://docs.enthought.com/mayavi/mayavi/auto/examples.html