python 如何快速生成大量立方体网格?

In python how do I generate a large amount of cube meshes fast?

我正在尝试生成大量(> 100 万)立方体网格,然后我将不得不在 Blender 中重新处理这些网格。

目前,我通过使用 Python API 在 Blender 中实际生成立方体来做到这一点,就像这样:

bpy.ops.mesh.primitive_cube_add() 

但是随着立方体数量的增加,它变得越来越慢。

我可以使用其他方法吗?唯一的要求是我以后可以在 Blender 中导入的文件格式,这应该不是什么限制。

primitive_add_cube是一个运算符,它会引起场景更新。添加的对象越多,每次添加后需要更新的对象就越多。所以它变得指数级变慢。

您应该使用低级别 API 来避免这种情况。如果您想一次又一次地添加相同的网格(立方体),只需复制该对象即可。如果你不认为这是一个链接副本,也复制网格数据:

import bpy

bpy.ops.mesh.primitive_cube_add()
ob = bpy.context.object

for i in range(-100, 100, 3):
    copy = ob.copy()
    copy.data = ob.data.copy()
    copy.location.x = i

    # use this only for blender < 2.9
    # bpy.context.scene.objects.link(copy)
    
    bpy.context.collection.objects.link(object)


bpy.context.scene.update() # only once

# Moving
ob.location.z = 5