Blender是faster with one object,它有一百万个顶点,而不是1000个对象,每个对象有1000个顶点。使用bmesh在一个网格对象中添加多个多维数据集,而不是创建多个多维数据集并将它们连接在一起。在
另一个需要考虑的是use of operators,每个操作符调用都会进行场景更新和重画,通过直接处理网格数据,然后进行一次更新,可以防止大量不必要的更新。在
使用随机颜色而不是ct图像,下面的脚本在大约10%的时间内运行。我也做了更大的立方体,如果初始立方体太小,删除双精度可以合并比你想要的更多,你可以总是缩小后建立网格。在import bpy
import bmesh
import mathutils
import numpy as np
# replace these two lines with your data filling code
x_size = y_size = z_size = 10
data = np.random.rand(x_size, y_size, z_size)
me = w("Mesh_new")
scene = t.scene
obj = bpy.w("CT_Scan_new", me)
scene.objects.link(obj)
scene.objects.active = obj
obj.select = True
bm = w()
for yy in range(y_size):
for xx in range(x_size):
for zz in range(z_size):
c = data[yy, xx, zz]
ate_cube(bm, size=0.1,
matrix=mathutils.Matrix.Translation((xx / 10, zz / 10, yy / 10)))
mat = bpy.w(name="MaterialName")
mat.diffuse_color = (c, c, c)
obj.data.materials.append(mat)
mat_idx = len(obj.data.materials)-1
sure_lookup_table()
for i in range(6):
# assign the last material to the last six faces created
bm.faces[-i].material_index = mat_idx
ve_doubles(bm, verts=bm.verts, dist=0.001)
<_mesh(me)本文发布于:2024-02-02 09:53:47,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170683882643020.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |