MaxScript渲染输出文件名整数变量格式错误问题
问题
在循环中用自增整数给渲染输出文件命名,需要生成ImageName-00.jpeg、ImageName-01.jpeg这种符合Turbosquid要求的格式,但实际生成的却是ImageName-90001.jpeg、ImageName-90002.jpeg。
Turbosquid命名要求

当前生成的命名示例

相关代码
_frame = 0 for current in assetsList do( render camera:c fromframe:0 toframe:10 outputfile:(turnPath + "\\" + currentName + "-" + _frame as string + ".jpeg") _frame += 1 )
解决方案
问题根源
- 序号未补前导零:直接把整数
_frame转成字符串,没法生成两位数字的序号,不符合Turbosquid的格式要求。 - 变量初始值被污染:生成的序号从90001开始,说明
_frame在循环执行前已经被其他代码赋值成90000了,导致自增后起始序号不对。
修复后的代码
-- 用local声明变量,避免被全局环境修改,确保从0开始计数 local _frame = 0 for current in assetsList do( -- 把序号格式化为两位数字,自动补前导零 local frameStr = formattedPrint _frame format:"02d" render camera:c fromframe:0 toframe:10 outputfile:(turnPath + "\\" + currentName + "-" + frameStr + ".jpeg") _frame += 1 )
核心改动说明
- 用
local定义_frame,隔离全局变量的影响,保证循环始终从0开始计数。 - 使用
formattedPrint函数将整数格式化为两位数字的字符串:0会变成"00",1变成"01",10变成"10",完美匹配Turbosquid的命名规范。
内容的提问来源于stack exchange,提问作者Lucas Costanski
相关产品推荐
相关产品推荐

