处理3D体素数据的最佳方法是什么?
目前我把体素(voxel)存储在一个简单的列表里。比如说,列表的内容是这样的:([0,0,0,0,0,1,0,0,1 ... ])
为了从这个列表中获取体素的位置,我使用了一个函数:
def getBlockKey(self, x, y, z):
blockX = x % CFG_CHUNK_SIZE
blockY = y % CFG_CHUNK_SIZE
blockZ = z % CFG_CHUNK_SIZE
return blockX + blockY * CFG_CHUNK_SIZE + blockZ * (CFG_CHUNK_SIZE * CFG_CHUNK_SIZE)
但是,当处理大量数据时,这个方法非常慢。比如说,要遍历一个256*256*256的块里的每一个立方体,就要花50秒。
我觉得用字典(dict)会更快,但它占用的内存太多了。
你能帮我找到这两者之间的折中方案吗?
2 个回答
1
如果你需要处理大量的体素(可以理解为三维像素),你可以看看梦工厂提供的一个开源库。