Skip to content

图示

注意

这是 group 的一个beta版本。点、曲线、螺旋线和标签目前无法使用 groupgroupsize 属性存在,但没有实际意义。

组是对象的集合。移动或旋转组会影响组中的所有对象。但是,属于组的对象保留其身份,可以单独旋转、调整大小、着色等(相比之下,用于创建 compound 的对象一旦被合并就会失去其个体身份。Compound 在计算上比 group 更加廉价)。

例如,使用一个组可以创建一个汽车,整个组移动时车轮会转动,就像这个 示例程序 中所示。

创建一个组:

  1. 首先创建组
  2. 然后通过将组的名称指定为每个对象的 group 属性来向组添加对象。组中对象的位置是相对于组的位置的。
python
mygroup = group(pos=vec(1,-1,3) )

参数:

参数名类型说明
pos向量组的位置。默认值为 <0,0,0>。这不一定是对象集合的中心,也不一定在一端。
axis向量默认值为 <1,0,0>。修改 axis 会改变组中所有对象的方向。
color向量修改组的颜色会改变组中每个对象的颜色;组成员对象的原始颜色会丢失。最初,组的颜色设置为白色,尽管组成员对象保留其自己的颜色。将任何值赋给 color 会永久性地改变组中所有对象的颜色。
visible布尔值如果为False,则对象不显示。默认值为True。
canvas对象默认为 scene
make_trail布尔值如果为True,则对象移动时会留下轨迹。
up向量与 axis 垂直的向量。
python
mygroup = group(pos=vec(0,0,0))
p1 = pyramid(group=mygroup, pos=vec(1,0,0), color=color.red)
p2 = pyramid(group=mygroup, pos=vec(1,2,0), color=color.yellow)
scene.pause()
mygroup.pos=vec(-3,0,0)
scene.pause()
mygroup.rotate(angle=pi/2, axis=vec(0,0,1))

组的方法

mygroup.group_to_world(myvec)

将相对于组位置的位置转换为世界坐标中的位置。

mygroup.world_to_group(myvec)

将世界坐标中的位置转换为相对于组位置的位置。

mygroup.rotate(axis=vec(0, 0, 1), angle=pi / 2)

与3D对象的旋转相同。