我正在尝试使用其Python接口将数万个网格基元添加到blender中的场景中。我一直在使用以下效果:
for i in range(10000):
bpy.ops.mesh.primitive_cube_add(radius=1, location=(i, i, i))
但这种方法需要很长时间。有没有更有效的方法呢?
答案 0 :(得分:1)
bottom
在我的机器上花大约15秒钟。如果您不需要具有唯一的多维数据集(即,不打算单独修改其几何),则可以将同一网格附加到多个对象。有可能更快的方法,如创建单个网格和点云,并使用dupliverts(在点云的每个顶点复制子对象)。
只有点和dupliverts的例子(正如预期的那样,片刻完成,但当然不是一回事):
import bpy
from mathutils import Vector;
n = "cube";
bpy.ops.mesh.primitive_cube_add(radius=1);
orig_cube = bpy.context.active_object;
for i in range(10000):
m = orig_cube.data.copy();
o = bpy.data.objects.new(n, m);
o.location = Vector((i, i, i));
bpy.context.scene.objects.link(o);
bpy.ops.object.delete();