[Blender]スクリプトを使用し、選択したオブジェクトにモディファイアを追加する

Blender 2.6 Python
選択したオブジェクトに一括でモディファイアを追加したい場合のスクリプト

今回の例では、サブデビジョンサーフェスモディファイアを追加する。
スクリプトを実行する前に、モディファイアを追加したい対象オブジェクトを選択する。

import bpy

sentaku = bpy.context.selected_objects

kazu = len(sentaku)

for i in range(0,kazu):
    bpy.context.scene.objects.active = sentaku[i]
    bpy.ops.object.modifier_add(type="SUBSURF")

使い方や、解説は続きから。

●スクリプトの使い方。



▼テキストエディターを表示する。


▼テキストエディターのNEWボタンを押す。


▼スクリプトを記述して、Run Scriptボタンを押す。

●スクリプトの解説

import bpy
#↑スクリプトを使用するための文

sentaku = bpy.context.selected_objects
#↑選択したオブジェクトを、変数sentakuに入れる。

kazu = len(sentaku)
#↑変数sentakuの中の要素数(選択したオブジェクトの数)を数えて、変数kazuに入れる。

#↓for文を使用し、選択したオブジェクトの数だけ処理を繰り返す。
for i in range(0,kazu):
    bpy.context.scene.objects.active = sentaku[i]
    #↑変数sentakuのi番目をアクティブにする。
    bpy.ops.object.modifier_add(type="SUBSURF")
    #↑アクティブなオブジェクトにサブデビジョンサーフェスモディファイアを追加する。

▼今回躓いた点。

【 スクリプトでは、選択する事とアクティブである事は同じではない。 】
この事に気づけなかったせいで詰まってしまった。

bpy.ops.object.modifier_add(type=”追加したいモディファイア”)
↑はアクティブなオブジェクトにモディファイアを追加する文であって、
選択したオブジェクトにモディファイアを追加する文ではない。

当初は、↓の名前によるオブジェクトの選択を行っていた。
bpy.ops.object.select_pattern(pattern=”オブジェクト名”)
↑では選択は出来ても、アクティブにはならない。
ビューポートで選択したものがアクティブであり続ける。

アクティブにするには、↓の文にする必要がある。
bpy.context.scene.objects.active = オブジェクト

▼スクリプトを使用しなくてもモディファイアのコピーは一括で出来る。
[Blender]別のオブジェクトに、モディファイアをコピーする。

▼Blenderでpythonを扱う際の参考情報
コンソール・エディター・タイプ  内蔵された Python コンソールにアクセスする
Blender 2.63.5 – API documentation



Pythonスタートブック

pythonの基本は↑の本で学習中。

広告

[Blender]スクリプトを使用し、選択したオブジェクトにモディファイアを追加する」への1件のフィードバック

Kousuke へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。

スパム対策用の計算式と画像認証です。↓の欄を入力しないとコメントが出来ません。 *

*