玛雅人从3d点关闭了表面

时间:2015-05-15 23:07:39

标签: python mayavi

我有大量的3D点(200k),用于模拟我用plot3d()绘制的对象。虽然程序没有崩溃并且仍在运行,但是它很慢。有没有内置的方法我只能渲染可见的点?或者更好的是,在外部点上创建一个表面?

我已经读过,加速它的一种方法是创建一个包含所有点的VTK对象,而不是每个点一个对象。

x,y,z,_,s = zip(*voxels)

print len(x) # 180k
points3d(x, y, z,s,scale_factor=0.8)
show()

1 个答案:

答案 0 :(得分:0)

嗯,这可能是一个解决方案,具体取决于您的数据的样子 你可以计算你的点集的复杂船体,即:

import numpy as np

from mayavi import mlab
from scipy.spatial import ConvexHull

x = np.random.rand(200000)
y = np.random.rand(200000)
z = np.random.rand(200000)
points = np.column_stack((x, y, z))

ch = ConvexHull(points)
hull_ids = ch.vertices

mlab.points3d(x[hull_ids], y[hull_ids], z[hull_ids])
mlab.show()

另一种方法是使用Delaunay函数计算alpha形状。这里有很好的解释,例如: http://sgillies.net/blog/1155/the-fading-shape-of-alpha/