3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

オブジェクトの名前にメッシュ名を合わせる (Python for Blender クックブック)

Last updated at Posted at 2018-10-29

オブジェクトの名前にメッシュ名を合わせる

Pythonを使ってBlenderでできる事をまとめています。解説もあります。

はじめに
レシピ一覧

Pythonの難易度: ★★☆☆☆

動機

オブジェクトの名前を変更しても、メッシュの名前までは変わりません。
いちいち変えるのも面倒くさいので、Pythonにやってもらいましょう。

細かい仕様

  • 様々な種類のオブジェクト(メッシュ、ランプ、カメラなど)があるファイルを使ってください。
  • 一つのメッシュデータが複数のメッシュオブジェクトに共有されている状態は考慮しなくてもいいです。
  • メッシュオブジェクトの中のメッシュデータの名前を、メッシュオブジェクトと同じにしてください。

サンプルコード

import bpy
for obj in bpy.data.objects:
  if obj.type == "MESH":
    obj.data.name = obj.name

上記サンプルコードを、Blender内蔵のテキストエディタに貼り付けた後、Alt-Pを実行してください。

解説

bpy.data.objects

PythonからBlenderを使うにはbpyというライブラリを使います。
例えば、bpy.opsには編集のための関数が格納されています。

bpy.dataにはBlender内の様々な変数(オブジェクトのインスタンス)が格納されています。
オブジェクト一覧はbpy.data.objectsから、マテリアル一覧はbpy.data.materialsからアクセスできます。
この一覧の型はbpy.types.bpy_collectionsであり、この型は辞書とリストを合わせたようなものです。1

実際、list(bpy.data.objects)dict(bpy.data.objects)のように型を変換してprintすると、見やすい形で出力されます。

今回はfor文で1つずつアクセスしています。

obj.typeについて

オブジェクトには、カメラやメッシュオブジェクトなど様々な種類があり、obj.typeにその種類が格納されています。例えば、スタートアップファイルで

for obj in bpy.data.objects:
  print(obj.type)

を実行すると、

CAMERA
MESH
LAMP

を出力します。

今回は、メッシュオブジェクトのメッシュを変更したいので、obj.type == "MESH"を条件にします。

obj.data

obj.dataは上記のobj.typeに応じて、様々なものが入っています。
obj.type == "MESH"ならobj.dataにはメッシュの実体が入っています。

このメッシュの型はbpy.types.Meshですので、サンプルコードは

import bpy
for obj in bpy.data.objects:
  if obj.type.data == bpy.types.Mesh:
    obj.data.name = obj.name

と書き換えることも出来ます。

.name

オブジェクトなどの名前を手に入れたり、変更したり出来ます。
これを変更するとアクセスが不便になるので、辞書型で変更を保存しておくと良いかもしれません。

  1. bpy.data.objectsの型がbpy_collectionsと説明しましたし、typeやisinstanceを使ってもその通りですが、実際にはbpy.types.BlendDataObjectsです。この辺りはどうやってるんだろう……

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?