目前我在一个简单的列表中存储体素。([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会更快,但它占用了太多的内存。在
你能帮我在这两者之间找到一个折衷办法吗?在
如果需要处理大量的体素,您可能需要查看DreamWorks的开源库。在
http://www.openvdb.org
您可以用^{} 替换该列表。假设每个体素保留一位信息,则每个字节可以存储8个体素。在
您也可以从NumPy尝试^{} 。您可以高效地构造一个256×256×256数组,它比普通的Python数据结构占用更少的空间,访问和操作更快(在某些方面)。在
相关问题 更多 >
编程相关推荐