我基本上是使用原始UV球构建3D散点图,并且试图一次创建多个点时遇到了内存问题。我在使用2.1Ghz处理器的笔记本电脑上受限,但想知道是否有更好的方式编写此代码:

import bpy
import random

while count < 5:
    bpy.ops.mesh.primitive_uv_sphere_add(size=.3,\
    location=(random.randint(-9,9), random.randint(-9,9),\
    random.randint(-9,9)), rotation=(0,0,0))

    count += 1


我意识到,使用这样一个简单的脚本,任何性能提升都可以忽略不计,但无论如何都想尝试一下。

最佳答案

一些可能的建议


我将预先计算x,y,z值,将它们存储在mathutil向量中,并将其添加到要迭代的字典中。
复制应提供的内存占用空间比
实例化新对象。 bpy.ops.object.duplicate_move(OBJECT_OT_duplicate=(linked:false, TRANSFORM_OT_translate=(transform)


编辑:

进行进一步研究时,每次将bpy.ops。*称为重绘函数时,它都会出现。一位用户记录了生成紫外线球所需的时间呈指数增长。

CoDEmanX向其他用户提供了以下代码段。

import bpy

bpy.ops.object.select_all(action='DESELECT')
bpy.ops.mesh.primitive_uv_sphere_add()
sphere = bpy.context.object


for i in range(-1000, 1000, 2):
    ob = sphere.copy()
    ob.location.y = i
    #ob.data = sphere.data.copy() # uncomment this, if you want full copies and no linked duplicates
    bpy.context.scene.objects.link(ob)
bpy.context.scene.update()


这只是修改代码以设置对象位置的一种情况

obj.location = location_dict[i]

10-08 10:56