Blender批量修改名称

2023-09-15 23:48:56

假如在Blender里按顺序添加了多个mesh,名字后缀按照数字1,2,3…编号,此时又要插入一个新的mesh,那么这个mesh之后的其它mesh名字都要加1,此时该怎么办呢?

比较简单的办法是把新mesh后面的mesh名称一个一个手动加1,如果数量少还可以,如果很多就有点浪费时间了。

Blender自身也提供了批量修改的功能,按Ctrl+F2可以调出批量改名的窗口,如下,
image.png

对于简单的替换这个是没问题的,但对于本文的case则不好操作了。好在Blender提供了执行python脚本的功能,通过python脚本,很容易实现各种批量改名字。

本文讲述如何在Blender里使用Python脚本来实现批量修改名称。主要分为2块:

  1. 批量修改mesh名称
  2. 批量修改动画名称

一 批量修改mesh名称

打开Blender,然后在里面再添加3个立方体,加上默认的,总共有4个立方体,
image.png
其名称依次是
image.png

假设现在要添加一个新的立方体,名字要命名为Cube.002,那么当前的Cube.002和Cube.003要依次改为Cube.003和Cube.004,首先让我们调出Python窗口,按照如下步骤,

image.png

最后变成这样,
image.png
此时我们在电脑里某个地方创建一个python脚本,叫rename.py,其内容如下,

import bpy
          
for 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按钮打开,接着点击右侧红框里的执行按钮,
image.png

最后就发现立方体名字变了,Cube.002和Cube.003分别加1变成了Cube.003和Cube.004
image.png


二 批量修改动画名称

有了第一节的知识,批量修改动画名称就很简单了,假设每个立方体上都有个动画,对应关系如下,

  • Cube: CubeAction
  • Cube.001: Cube.001Action
  • Cube.002: Cube.002Action
  • Cube.003: Cube.003Action

同样要把Cube.002Action和Cube.003Action里的数字加1,同样的,我们把rename.py里的内容替换为如下,

import bpy
             
for one in reversed(bpy.data.actions):
     temp1 = one.name.split(".", 1)
     if len(temp1) < 2:
        continue
     temp2 = temp1[1].split("Action")
     if (len(temp2) == 2):
         if int(temp2[0]) >= 2:
             one.name = temp1[0]+".{:03}Action".format(int(temp2[0])+1)

执行后显示如下,

image.png

更多推荐

SpringBoot-AOP-Logback用切面拦截操作日志

在SpringBoot中使用切面来拦截操作日志,以及配合使用MyBatis-Plus框架进行操作,并使用Thymeleaf视图显示商品列表,同时配置Logback日志输出到文件。CREATETABLEproduct(idBIGINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(255)NOT

typescript type 类型别名详解

TypeScript中的Type类型别名是一种强大的工具,用于创建自定义类型。通过类型别名,我们可以为复杂的类型结构创建更具可读性和可维护性的名字。TypeScript中的Type类型别名简介在TypeScript中,我们可以使用type关键字来定义一个类型的别名,这就是所谓的类型别名。通过类型别名,我们可以为复杂的类

Zookeeper集群 + Kafka集群

Zookeeper概述//Zookeeper定义*Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。//Zookeeper工作机制*****Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦

javascript基础第二天笔记

JavaScript基础-第2天理解什么是流程控制,知道条件控制的种类并掌握其对应的语法规则,具备利用循环编写简易ATM取款机程序能力运算符语句综合案例运算符算术运算符数字是用来计算的,比如:乘法*、除法/、加法+、减法-等等,所以经常和算术运算符一起。算术运算符:也叫数学运算符,主要包括加、减、乘、除、取余(求模)等

易基因|ONT:三代原核甲基化在痤疮杆菌噬菌体表观遗传印迹中的工程选择性研究

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。痤疮表皮杆菌(Cutibacteriumacnes,C.acnes)是一种革兰氏阳性细菌,是人类皮肤微生物组成员。尽管是最丰富的皮肤共生体,但某些成员与常见的炎症性疾病(如痤疮)有关。各种C.acnes分支的完整基因组序列可以鉴定推定的甲基转移酶,其中一些可

如何用CRM软件系统提升销售成绩

现如今,不少企业通过办公软件优化业务效率,加强销售管理。其中CRM销售管理系统能够有效提升销售人员的工作效率,提高销售成功率。为什么CRM系统能够提升销售业绩?下面小编从三个方面来概括说一下:为什么CRM系统能够提升销售业绩?1、CRM系统帮助企业建立“以客户为中心”的商业策略。传统企业大多是“以产品为中心,只管推出产

群晖 Docker版qbittorrent 下载显示错误 解决方法

这些天在折腾AIO玩,PVE虚拟机底层,核显直通,群晖安装,免不了踩些坑。今天写篇博客,讲述一下群晖Docker版qbittorrent下载显示错误的解决方法,顺便记录一下配置,以便日后折腾可以参考。直接说结论如果下载显示错误,并且由于自己更改了存储路径,那多半是由于权限设置。去相关的文件夹中添加Owner用户的完全控

透过《眼睛的故事》:需求为何成为纪录片的“价值锚点”?

我们正处在一个内容过载、追求流量的时代。对于观众来说,这是幸运的,也是不幸的。一方面,相比以前能接受到的内容指数级增长,自己的视野无限扩大,但另一方面,“流量思维”下粗制滥制的内容不在少数,对观众来说极其不友好。在内容极为丰盛的时代,观众越来越占主导地位。早在1935年,诺贝尔经济学奖得主哈耶克就提出了“soverei

springboot 调用第三方接口的方式(一)使用RestTemplate方法

简介常用的调用第三方接口的方式:方式一:使用RestTemplate方法方式二:使用原始httpClient请求方式三:使用Feign进行消费通过HTTPClient进行访问第三方接口。但是过程比较复杂,Feign比较适合在springCLoud多模块项目中使用,所以平时基本都是使用RestTemplate方式,这样比

如何使用正则表达式实现Java日志信息的抓取与收集

首先,什么是Java日志信息?简单来说,Java应用程序在运行过程中会输出一些信息,这些信息可以用来追踪程序运行状态、调试错误等。而Java日志信息就是这些输出信息的集合。那么为什么要抓取和收集Java日志信息呢?一方面,这些信息可以帮助我们更好地了解程序的运行情况,及时发现和解决问题;另一方面,对于大型应用程序来说,

Leetcode 01-算法入门与数组-③数组排序

LeetCode01-算法入门与数组-③数组排序一.冒泡排序1.冒泡排序算法思想冒泡排序(BubbleSort)基本思想:经过多次迭代,通过相邻元素之间的比较与交换,使值较小的元素逐步从后面移到前面,值较大的元素从前面移到后面。这个过程就像水底的气泡一样从底部向上「冒泡」到水面,这也是冒泡排序法名字的由来。接下来,我们

热文推荐