ルービックキューブの続きです。
スクリプトからオブジェクトを操る方法を覚えていこうと思います。今回は、bpy.data.objectsとbpy.contextを触ってみます。
bpy.data.objectsは、全てのオブジェクトです。
>>> for obj in bpy.data.objects: ... print(obj) ... <bpy_struct, Object("Camera")> <bpy_struct, Object("Cube")> <bpy_struct, Object("Cube.001")> <bpy_struct, Object("Cube.002")> (省略) <bpy_struct, Object("Cube.026")> <bpy_struct, Object("Lamp")> >>>
Cubeだけ取得するには、名前でフィルタリングします。
>>> for obj in bpy.data.objects: ... if obj.name.startswith('Cube') ... print(obj) ... <bpy_struct, Object("Cube")> <bpy_struct, Object("Cube.001")> <bpy_struct, Object("Cube.002")> (省略) <bpy_struct, Object("Cube.026")> >>>
オブジェクトの位置を取得するには、locationを使います。
>>> bpy.data.objects['Cube.026'].location Vector((-2.0, -2.0, -2.0))
locationでフィルタリングもできます。
>>> for obj in bpy.data.objects: ... if obj.locaion.z == 2: ... print(obj) <bpy struct, Object("Cube.009")> <bpy struct, Object("Cube.010")> <bpy struct, Object("Cube.011")> <bpy struct, Object("Cube.012")> <bpy struct, Object("Cube.013")> <bpy struct, Object("Cube.014")> <bpy struct, Object("Cube.015")> <bpy struct, Object("Cube.016")> <bpy struct, Object("Cube.017")> >>>
では、z=2のCubeを選択してみます。
>>> for obj in bpy.data.objects: ... if obj.location.z == 2: ... obj.select = True ... >>>
選択されているオブジェクトのリストは、bpy.context.selected_objectsに格納されています。
>>> for obj in bpy.context.selected_objects: ... print(obj) <bpy struct, Object("Cube.017")> <bpy struct, Object("Cube.016")> <bpy struct, Object("Cube.015")> <bpy struct, Object("Cube.014")> <bpy struct, Object("Cube.013")> <bpy struct, Object("Cube.012")> <bpy struct, Object("Cube.011")> <bpy struct, Object("Cube.010")> <bpy struct, Object("Cube.009")> <bpy struct, Object("Cube")> >>>
では、現在選択されているオブジェクトを、回転させてみます。
3D View画面で、r、z、135、Enter
で、135度Z軸で回転します。
コメント