78 data = np.zeros(12 * N ** 3, dtype=mesh.Mesh.dtype)
84 vox_center = np.array([bbox[0] + l * (1 + 2 * i), bbox[2] + l * (1 + 2 * j), bbox[4] + l * (1 + 2 * k)])
85 v1 = vox_center + l * np.array([-1, -1, 1])
86 v2 = vox_center + l * np.array([1, -1, 1])
87 v3 = vox_center + l * np.array([1, 1, 1])
88 v4 = vox_center + l * np.array([-1, 1, 1])
89 v5 = vox_center + l * np.array([-1, -1, -1])
90 v6 = vox_center + l * np.array([1, -1, -1])
91 v7 = vox_center + l * np.array([1, 1, -1])
92 v8 = vox_center + l * np.array([-1, 1, -1])
95 if (i == 0
and vox[i, j, k])
or (i > 0
and (vox[i, j, k]
and not vox[i - 1, j, k])):
96 data[
'vectors'][p] = np.array([v1, v4, v5])
97 data[
'vectors'][p + 1] = np.array([v5, v4, v8])
100 if (j == 0
and vox[i, j, k])
or (j > 0
and (vox[i, j, k]
and not vox[i, j - 1, k])):
101 data[
'vectors'][p] = np.array([v6, v2, v1])
102 data[
'vectors'][p + 1] = np.array([v6, v1, v5])
105 if (k == 0
and vox[i, j, k])
or (k > 0
and (vox[i, j, k]
and not vox[i, j, k - 1])):
106 data[
'vectors'][p] = np.array([v7, v8, v5])
107 data[
'vectors'][p + 1] = np.array([v7, v5, v6])
110 if (i == N - 1
and vox[i, j, k])
or (i < N - 1
and (vox[i, j, k]
and not vox[i + 1, j, k])):
111 data[
'vectors'][p] = np.array([v3, v6, v2])
112 data[
'vectors'][p + 1] = np.array([v3, v7, v6])
115 if (j == N - 1
and vox[i, j, k])
or (j < N - 1
and (vox[i, j, k]
and not vox[i, j + 1, k])):
116 data[
'vectors'][p] = np.array([v7, v3, v4])
117 data[
'vectors'][p + 1] = np.array([v7, v4, v8])
120 if (k == N - 1
and vox[i, j, k])
or (k < N - 1
and (vox[i, j, k]
and not vox[i, j, k + 1])):
121 data[
'vectors'][p] = np.array([v4, v1, v2])
122 data[
'vectors'][p + 1] = np.array([v4, v2, v3])
125 mesh = mesh.Mesh(data, remove_empty_areas=
True)
def SaveVoxelGridStl(filename, vox, bbox, span)
Definition: SaveToStl.py:63