Blenderでオブジェクト選択


ルービックキューブの続きです。Scriptingを選択して、左下にpython consoleが配置される構成にします。

毎度文字が小さすぎて、コンソールに何が書いてあるか分かりませんでした。文字を大きくしてみます。

>>> bpy.context.space_data.font_size=32

pythonコンソールの文字が大きくなりました。

文字が大きくて見やすくなると、いろいろ見えてきますね。
pythonコンソールの起動時のバナー表示に、
Convenience Variables: C = bpy.context, D = bpy.data
というのがあります。使ってみましょう。

Dを使って、全オブジェクトを表示します。リストに変換するだけで、内容が表示されます。

>>> list(D.objects)
[bpy.data.objects['Camera'],bpy.data.objects['Cube'],
 bpy.data.objects['Cube.001'],bpy.data.objects['Cube.002'],

(省略) 

 bpy.data.objects['Cube.023'],bpy.data.objects['Cube.024'],
 bpy.data.objects['Cube.025'],bpy.data.objects['Cube.026'],
 bpy.data.objects['Lamp']] 
>>> 
(各行は、見やすく改行しています。)

次は、オブジェクトの名前だけ拾ってみます。

>>> list(o.name for o in D.objects)
['Camera', 'Cube', 'Cube.001',
 'Cube.002', 'Cube.003', 'Cube.004',
 'Cube.005', 'Cube.006', 'Cube.007',
 'Cube.008', 'Cube.009', 'Cube.010',
 'Cube.011', 'Cube.012', 'Cube.013',
 'Cube.014', 'Cube.015', 'Cube.016',
 'Cube.017', 'Cube.018', 'Cube.019',
 'Cube.020', 'Cube.021', 'Cube.022',
 'Cube.023', 'Cube.024', 'Cube.025',
 'Cube.026', 'Lamp'] 
>>> 


このルービックキューブは、レイヤー2にあります。レイヤー2のオブジェクトのみ、選択してみましょう。

>>> bpy.ops.object.select_by_layer(layers=2)
{'FINISHED'}

>>>

上のコマンドを実行すると、以下のようにCubeが9つ選択されます。

C(bpy.context)を使って選択したオブジェクトを使ってみましょう。
ここでは、locationの各値を3倍にしています。

>>> for o in C.selected_objects:
...     o.location.x = o.location.x * 3
...     o.location.y = o.location.y * 3
...     o.location.z = o.location.z * 3
...
>>>

UNDOします。

>>> bpy.ops.ed.undo()
{'FINISHED'}

今度は、選択しているオブジェクトを、他のレイヤーへ移動してみましょう。
20番目のレイヤーへ移動します。

>>> l=[False]*20
>>> l
[False, False, False, False, False, False, False,
False, False, False, False, False, False, False,
False, False, False, False, False, False]

>>> l[19]=True
>>> bpy.ops.object.move_to_layer(layers=l)
{'FINISHED'}

>>>


選択中のすべてのオブジェクトをそれぞれ回転させてみましょう。

>>> for o in C.selected_objects:
...     o.rotation_mode='XYZ'
...     o.rotation_euler.rotate_axis('Z',0.52)
...
>>>

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA