3D问界—3DMAX使用python脚本对所有对象进行重命名(从高到低)

近期做了一个玲珑宝塔,在做低模的时候为了与高低模的ID完美匹配,需要将所有对象的名字进行重命名整理。其实对于重命名这一块儿3DMAX已经有对应的功能,但是整理出来后没有任何逻辑可言,我就想着如果可以从上到下(按顺序)进行命名多好,于是,就有了这个文章。当然,若你还有其他需要定制的需求欢迎联系,见文末方式。


在这里插入图片描述

一、需求概述

目前高模已经有了,需要根据高模拓一个低模出来。为了最后高低模烘焙方便,每个模型部件的高模都需要标注high,对应的低模都需要标注low,就像这样:

tower_high_001
tower_low_001

在创建低模之前,需要对高模的名字进行整理。在MAX中,已经有对应的功能可以实现重命名,比如这里:
在这里插入图片描述
在这里插入图片描述

但是这样重命名有个弊端,你会发现编号1的模型在这里,编号2的模型就飞到了其他地方,杂乱无章,如果可以根据模型坐标的高度对模型进行重命名,就大善了。对,就是这个需求!

二、3DMAX使用脚本

1. 关于3DMAX与python

并不是所有版本的MAX都支持Python,经过了解发现:

从 3ds Max 2021 开始,Autodesk 引入了对 Python 3 的原生支持。

比如我用的2025版本,内部的python引擎是V3.11.4

在这里插入图片描述当然,如果你用的版本比较低,建议去研究一下MAXScript,也不是很难,本篇主要讲解一下Python。

2. 关于交互式输入法

在MAX中直接按下F11,就会出现这个窗口:
在这里插入图片描述记得选Python,就可以了,然后输入自己的脚本,按下Shift + Enter,就可以开始执行了。

我这里给你放一段测试代码,创建一个box,可以试一下子。

import pymxs

rt = pymxs.runtime

# 创建一个正方体
mybox = rt.Box()
mybox.name = "MyBox"

# 设置正方体的位置和大小
mybox.position = rt.Point3(0, 0, 0)
mybox.length = 10
mybox.width = 10
mybox.height = 10

# 更新视口
rt.redrawViews()

# 打印正方体的信息
print(f"Created box with name: {mybox.name}, Position: {mybox.position}, Size: {mybox.length}, {mybox.width}, {mybox.height}")

3. 关于脚本式输入法

同样的位置,可以打开脚本编辑器,记得选择是python:
在这里插入图片描述在这里插入图片描述
同样,可以直接把代码写在这里,但是注意,这里运行代码方式稍微不同,快捷键是Ctrl + E:

在这里插入图片描述

这种方式适合大型脚本,交互式输入适合小型脚本。
对了,你也可以将上边创建box的代码放在这里试一下,很nice。

三、开始进行重命名

介绍完怎么使用,我们开始讲一下怎么应用于实战。

1. 选择所有物体

因为我接下来的代码是基于选中物体的,所以就直接先选中所有物体。

在这里插入图片描述

2. 打开脚本输入编辑器

输入这串代码并运行。

import pymxs

rt = pymxs.runtime

# 获取所有选定的对象
selected_objects = rt.selection

# 按对象的 Z 坐标(高度)排序
sorted_objects = sorted(selected_objects, key=lambda obj: obj.position.z)

# 按顺序重命名对象
for i, obj in enumerate(sorted_objects):
    # 格式化索引为三位数
    index = f"{i + 1:03d}"
    obj.name = f"tower_high{index}"

print("Objects renamed to Tower_highXXX format.")

在这里插入图片描述在这里插入图片描述

只要序号连续,位置就是临近的,岂不完美。至于代码解释,啊这,篇幅有限就不过多讲解了,后续工作过程中若遇到值得分享的代码,我会及时发出来,如果你有需要定制的内容,可以随时联系。

四、文章最后

注意咯,我在这里,有问题或有需要可以随时联系。
请添加图片描述

(若找不到主图可以直接搜“第五设计”店铺)

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值