gpt4 book ai didi

python - 在 blender 中快速添加大量网格图元

转载 作者:太空宇宙 更新时间:2023-11-03 14:06:52 25 4
gpt4 key购买 nike

我正在尝试使用其 Python 界面将数以万计的网格图元添加到 blender 中的场景中。我一直在使用一些东西来达到以下效果:

for i in range(10000):
bpy.ops.mesh.primitive_cube_add(radius=1, location=(i, i, i))

不过,这种方法需要很多分钟。有没有更有效的方法来做到这一点?

最佳答案

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();

在我的机器上大约需要 15 秒。如果您不需要具有独特的立方体(即不打算单独修改它们的几何形状),那么您可以将相同的网格附加到多个对象。可能有更快的方法,例如创建单个网格和点云以及使用 dupliverts(在点云的每个顶点上复制子对象)。

仅包含点和 duplivert 的示例(正如预期的那样,很快就会完成,但当然不是同一件事):

import bpy;
import bmesh;
from mathutils import Vector;

bpy.ops.mesh.primitive_cube_add(radius=1);
orig_cube = bpy.context.active_object;

bpy.ops.mesh.primitive_plane_add();
o = bpy.context.active_object;
me = o.data;
bm = bmesh.new();
for i in range(10000):
bm.verts.new().co=Vector((i, i, i));
bm.to_mesh(me);
o.dupli_type = 'VERTS';
orig_cube.parent = o;

关于python - 在 blender 中快速添加大量网格图元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48818274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com