#!/usr/bin/env python # coding: utf-8 # # Regular (dense) voxels # In[ ]: import k3d from math import sqrt, sin, cos width = 100 height = 100 length = 100 def r(x, y, z): r = sqrt((x - width / 2) * (x - width / 2) + (y - height / 2) * (y - height / 2) + (z - length / 2) * (z - length / 2)) r += sin(x / 2) * 3 r += cos(y / 10) * 5 return r def f(x, y, z): return 0 if r(x, y, z) > width / 2 else (1 if y + sin(x / 20) * 10 > height / 2 else 2) color_map = (0xffff00, 0xff0000) voxels = [[[f(x, y, z) for x in range(width)] for y in range(height)] for z in range(length)] # add red voxels in the corners, just for for x in [0, -1]: for y in [0, -1]: for z in [0, -1]: voxels[z][y][x] = 2 plot = k3d.plot() obj = k3d.voxels(voxels, color_map, compression_level=1) plot += obj plot.display() # In[ ]: plot.objects[0].wireframe=True # In[ ]: plot.objects[0].wireframe=False plot.objects[0].outlines=True # In[ ]: plot.objects[0].outlines_color=255 # In[ ]: plot.screenshot_scale = 3.0 # In[ ]: plot.objects[0].opacity = 0.5 # # Sparse voxels # In[ ]: import k3d import numpy as np N = 20 sparse_voxels = np.random.randint(0, 5, size=(N, 4), dtype=np.uint16) sparse_voxels[:, 3] = np.random.randint(1, 3, size=(N,)) sparse_voxels[:5] # In[ ]: # default color_map used plot = k3d.plot() obj = k3d.sparse_voxels(sparse_voxels, [10, 10, 10], compression_level=1) plot += obj plot.display() # In[ ]: