Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
0
Help us understand the problem. What is going on with this article?
@KTakahiro1729

メッシュの名前を「MESH_オブジェクト名*たち*」にする (Python for Blender クックブック)

More than 1 year has passed since last update.

メッシュの名前を「MESH_オブジェクト名たち」にする

Pythonを使ってBlenderでできる事をまとめています。解説もあります。
はじめに
レシピ一覧

Pythonの難易度: ★★★☆☆

動機

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

細かい仕様

  • メッシュ名を「MESH_オブジェクト名」にしてください。
  • 複数のオブジェクトに共有されている場合、オブジェクト名の間を_で繋いでください
  • オブジェクトに使われていないメッシュは「MESH_NOUSER」と名付けてください。

サンプルコード

import bpy

meshes = bpy.data.meshes

mesh_obj_dict = {mesh.name:[] for mesh in meshes} # mesh_obj_dictを初期化

for obj in bpy.data.objects: # mesh_obj_dictのvalueを埋める
    if obj.type == "MESH":
        mesh = obj.data
        mesh_obj_dict[mesh.name].append(obj.name)

for mesh, objs in mesh_obj_dict.items(): # meshの名前を変更する
    if len(objs) == 0:
        meshes[mesh].name = "MESH_NOUSER"
        continue
    meshes[mesh].name = "MESH_{0}".format("_".join(objs))

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

解説

全体の流れ

まず、{メッシュ:そのメッシュを使っているオブジェクトのlist}(コード中ではmesh_obj_dict)を初期化し、最初のfor文で完成させます。

その次のfor文ではmesh_obj_dictを元にmeshの名前を上書きしています。

mesh_obj_dict

オブジェクトからそれ使用しているメッシュを知るにはobject.dataを除けばいいだけです。
一方、メッシュからそれ使用しているオブジェクトをたどる事は(一発では)出来ません。どうしてかは知りません。
そのため、bpy.data.objects内を探して、各オブジェクトが参照するメッシュごとに分類しています。

また、オブジェクトやmaterialなどデータの名前を一度変えてしまうと、そのデータを探すのが非常に難しくなります。
そのため、最初のfor文では名前の変更はしません。

0
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
KTakahiro1729
素人ゆえ自由

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
0
Help us understand the problem. What is going on with this article?