处理三维体素数据的最佳方法是什么?

2024-10-01 11:20:38 发布

您现在位置:Python中文网/ 问答频道 /正文

目前我在一个简单的列表中存储体素。([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会更快,但它占用了太多的内存。在

你能帮我在这两者之间找到一个折衷办法吗?在


Tags: 数据函数self列表sizereturndefcfg
2条回答

如果需要处理大量的体素,您可能需要查看DreamWorks的开源库。在

http://www.openvdb.org

您可以用^{}替换该列表。假设每个体素保留一位信息,则每个字节可以存储8个体素。在

您也可以从NumPy尝试^{}。您可以高效地构造一个256×256×256数组,它比普通的Python数据结构占用更少的空间,访问和操作更快(在某些方面)。在

相关问题 更多 >