You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何保存渲染对象图像?新手脚本实现单对象渲染存图与FBX导出

解决选中对象单独导出FBX并渲染为同名PNG的问题

嘿,作为脚本新手能写出这样的核心逻辑已经很棒了!你的代码目前有两个小问题导致渲染结果不符合预期:一是渲染输出文件名写死成了固定值,每次循环都会覆盖之前的图片;二是遍历的是场景里所有几何体,而不是你选中的对象集合。

下面是修改后的完整脚本,我会逐个说明关键改动:

-- 先获取当前选中的对象集合,确保只处理你手动选中的内容
selectedObjs = selection as array

-- 遍历每个选中的对象
for obj in selectedObjs do (
    -- 单独选中当前对象(确保导出和渲染只针对这一个)
    select obj
    
    -- 处理FBX导出的路径与文件名
    exportDir = pathConfig.GetDir #Export
    fbxFileName = obj.name + ".fbx"
    fbxFilePath = (exportDir + "/" + fbxFileName)
    
    -- 导出当前对象为FBX文件
    exportFile fbxFilePath #noPrompt selectedOnly:true using:FBXEXP
    
    -- 处理渲染输出的路径与文件名(用对象名命名PNG)
    renderFileName = obj.name + ".png"
    renderFilePath = (exportDir + "/" + renderFileName)
    
    -- 渲染当前选中对象,输出为同名PNG
    render renderType:#selected outputFile:renderFilePath frame:1
)

关键改动拆解:

  • 锁定处理范围:用selection as array获取你选中的对象集合,替换原代码的geometry,这样就不会误处理场景里没选中的几何体了
  • 动态生成文件名:把固定的"testRender.png"改成obj.name + ".png",每个对象的渲染图都会用自己的名字保存,再也不会被覆盖
  • 拆分路径逻辑:把FBX和渲染的路径分开处理,逻辑更清晰,后续要改保存位置也更方便
  • 明确渲染帧:保留frame:1确保渲染第一帧,避免出现意外的帧渲染问题

可选优化建议(适合进阶):

  • 清理非法文件名:如果对象名称包含/ \ : * ? " < > |这些系统不允许的字符,会导致保存失败,可以加一段代码替换:
    -- 替换所有非法字符为下划线
    cleanName = replaceString obj.name "/" "_"
    cleanName = replaceString cleanName "\\" "_"
    cleanName = replaceString cleanName ":" "_"
    cleanName = replaceString cleanName "*" "_"
    cleanName = replaceString cleanName "?" "_"
    cleanName = replaceString cleanName "\"" "_"
    cleanName = replaceString cleanName "<" "_"
    cleanName = replaceString cleanName ">" "_"
    cleanName = replaceString cleanName "|" "_"
    -- 之后用cleanName代替obj.name生成文件名
    
  • 确保导出目录存在:如果默认导出目录还没创建,脚本会报错,可以提前检查并创建:
    exportDir = pathConfig.GetDir #Export
    if doesDirectoryExist exportDir == false do
        makeDir exportDir
    
  • 关闭渲染窗口:如果不想每次渲染都弹出窗口,可以给render命令加个参数:
    render renderType:#selected outputFile:renderFilePath frame:1 showRenderWindow:false
    

这样修改后,你选中的每个对象都会被单独导出为FBX,同时生成一张以对象名称命名的PNG渲染图,全部保存在3ds Max的默认导出目录里~

内容的提问来源于stack exchange,提问作者Van C

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:56:18