创建几何体

a2+b2=c2a^2 + b^2 = c^2

几何体接口

1
2
3
def cube(size: float, location: tuple):
bpy.ops.mesh.primitive_cube_add(size=size, location=location)
return bpy.context.active_object

猴头模型

1
2
3
4
5
6
7
8
9
10
11
12
def monkey(size: float = 2.0, location: tuple = (0, 0, 0)):
"""
创建一个猴头 (Suzanne) 模型。
:param size: 猴头的大小。
:param location: 猴头的位置 (x, y, z)。
:return: 新创建的 bpy.types.Object。
"""
# 使用 primitive_monkey_add 操作符
bpy.ops.mesh.primitive_monkey_add(size=size, location=location)

# 返回新创建的猴头对象
return bpy.context.active_object

清空画面

1
2
3
4
5
6
7
8
9
10
11
def delete_all(exceptions=["CAMERA", "LIGHT"]):

if bpy.context.scene is not None:
all_objects = bpy.context.scene.objects

objects_to_delete = [obj for obj in all_objects if obj.type not in exceptions]

for obj in objects_to_delete:
obj.select_set(True)

bpy.ops.object.delete()

变换

变换接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
def move_object(obj, x: float = 0, y: float = 0, z: float = 0):
"""
移动一个对象。
:param obj: 要移动的 bpy.types.Object。
:param x, y, z: 在各轴上的移动距离。
"""
obj.location.x += x
obj.location.y += y
obj.location.z += z


def rotate_object(
obj, x: float = 0, y: float = 0, z: float = 0, use_degrees: bool = True
):
"""
旋转一个对象。
:param obj: 要旋转的 bpy.types.Object。
:param x, y, z: 在各轴上的旋转角度。
:param use_degrees: 如果为 True,则使用度数;否则使用弧度。
"""
if use_degrees:
x, y, z = math.radians(x), math.radians(y), math.radians(z)

obj.rotation_euler.x += x
obj.rotation_euler.y += y
obj.rotation_euler.z += z


def scale_object(obj, x: float = 1, y: float = 1, z: float = 1):
"""
缩放一个对象。
:param obj: 要缩放的 bpy.types.Object。
:param x, y, z: 在各轴上的缩放倍数。
"""
obj.scale.x *= x
obj.scale.y *= y
obj.scale.z *= z

关联

1
2
3
4
5
6
7
8
9
10
11
12
def parent_objects(parent_obj, child_obj):
"""
将一个对象设置为另一个对象的子对象。
:param parent_obj: 父对象。
:param child_obj: 子对象。
"""
# 清除子对象之前的父子关系(可选)
child_obj.parent = None

# 设置父子关系
child_obj.parent = parent_obj