当我在建模时,我喜欢渲染一个框架来显示我正在进行的进度。我想对渲染器进行编程以将渲染保存为渲染输出并在其末尾添加一个增量数字。所以最后我会有一些渲染,就像动画的渲染序列一样,但我决定制作的帧。这样做的目的是自动化创建制作的过程。
4 回答
这是一个在每一帧增加文件名的循环。使用最后一行的结果作为文件名。
如果您只是在文件名中“添加数字”,您将遇到的一个问题是其他应用程序(包括 ram 播放器)不会将它们识别为序列。使用下面的解决方案,您可以正确添加它,使用 0001 - 0002 等。
如果您想在输出中添加更多的 0,请更改“.4i”行。
--Here you'd get the start frame from the UI
startframe = 0
--Here you'd get the end frame from the UI
endframe = 10
--temp variable to hold our start frame number.
tempframe = startframe
--variable to hold our desired filename
filename = "Filename_"
for i = startframe to endframe do
(
tempframe +=1
print "Framenumber is now:"
print tempframe as string
print "Filename at this frame would be:"
format "filename% \n" (formattedPrint tempframe format:".4i" + ".ext")
)
运行它的结果可以在脚本监听器中看到。
似乎是一个老问题,但我认为您需要一个带有全局变量的 MacroScript 来保留文件名计数器并为该宏创建一个键盘快捷方式,以便您可以在建模时快速渲染。
这是我为相同目的制作的一个简单的宏脚本:
macroScript RenderProgress category:"pX Tools" buttonText:"Render Progress"
(
global rpFileNumber
global rpCameraName
global rpFileName = "c:\\temp\\renderprogress"
if rpFileNumber==undefined then rpFileNumber = 0
if rpCamera==undefinded then rpCamera = $Camera01
local NewFileName = rpFileName + (rpFileNumber as string) + ".jpg"
local bm
if rpCamera == undefined then
(
bm = render vfb:false
) else
(
bm = render camera:rpCamera vfb:false
)
bm.FileName = NewFileName
Save bm
rpFileNumber += 1
)
如果此相机不存在,它将使用“Camera01”渲染单个帧,当前活动视口被渲染。
使用 MaxScript Listener 窗口重置文件编号计数器设置 rpFileNumber = 0 使用 rpFileName = "c:\myfolder\myfilename" 设置路径和文件名
该脚本需要大量改进,但目前可以接受。
您可以在这里尝试另一个更复杂的解决方案: http ://forums.cgsociety.org/archive/index.php/t-715599.html
文件 = 渲染()
然后你用任何名字和你想要的任何地方保存文件。
如果您将文件保存到一个新的空文件夹,那么每次保存文件时,您都可以在文件名后附加一个整数,该文件名对应于目录中的文件数。
folder = "c:\\tmp\\renders"
dir = dotNetClass "System.IO.Directory"
files = dir.GetFiles(folder)
file = folder + "\\render" + files.count as String + ".bmp"
render outputfile:file