假如在Blender里按顺序添加了多个mesh,名字后缀按照数字1,2,3…编号,此时又要插入一个新的mesh,那么这个mesh之后的其它mesh名字都要加1,此时该怎么办呢?
比较简单的办法是把新mesh后面的mesh名称一个一个手动加1,如果数量少还可以,如果很多就有点浪费时间了。
Blender自身也提供了批量修改的功能,按Ctrl+F2可以调出批量改名的窗口,如下,
对于简单的替换这个是没问题的,但对于本文的case则不好操作了。好在Blender提供了执行python脚本的功能,通过python脚本,很容易实现各种批量改名字。
本文讲述如何在Blender里使用Python脚本来实现批量修改名称。主要分为2块:
- 批量修改mesh名称
- 批量修改动画名称
一 批量修改mesh名称
打开Blender,然后在里面再添加3个立方体,加上默认的,总共有4个立方体,
其名称依次是
假设现在要添加一个新的立方体,名字要命名为Cube.002,那么当前的Cube.002和Cube.003要依次改为Cube.003和Cube.004,首先让我们调出Python窗口,按照如下步骤,
最后变成这样,
此时我们在电脑里某个地方创建一个python脚本,叫rename.py,其内容如下,
import bpyfor one in reversed(bpy.data.objects):temp = one.name.split(".", 1)if len(temp) == 2:if int(temp[1]) >= 2:one.name = temp[0]+".{:03}".format(int(temp[1])+1)
PS:关键是这个reversed函数,会返回一个反向迭代器,这样可以从后往前去重命名,必须这样做,否则只有最后一个立方体可以命名成功。假如先从Cube.002开始重命名,变成Cube.003,但是此时原先的Cube.003还没修改名字,这样就会有2个Cube.003,blender会阻止这种事情,就会造成Cube.002重命名失败。
然后点击Open按钮打开,接着点击右侧红框里的执行按钮,
最后就发现立方体名字变了,Cube.002和Cube.003分别加1变成了Cube.003和Cube.004
二 批量修改动画名称
有了第一节的知识,批量修改动画名称就很简单了,假设每个立方体上都有个动画,对应关系如下,
- Cube: CubeAction
- Cube.001: Cube.001Action
- Cube.002: Cube.002Action
- Cube.003: Cube.003Action
同样要把Cube.002Action和Cube.003Action里的数字加1,同样的,我们把rename.py里的内容替换为如下,
import bpyfor one in reversed(bpy.data.actions):temp1 = one.name.split(".", 1)if len(temp1) < 2:continuetemp2 = temp1[1].split("Action")if (len(temp2) == 2):if int(temp2[0]) >= 2:one.name = temp1[0]+".{:03}Action".format(int(temp2[0])+1)
执行后显示如下,