我有一个纹理连接到输出修改器然后连接到材质的漫反射插槽(CoronaMtl)。
我需要在文件夹中循环多个纹理,将它们分配给素材(分配给对象),渲染它,然后保存图像。
一切正常,但输出修饰符我无法理解如何应用。我当前的脚本已经搜索文件,创建数组,将纹理应用到正确的材质,渲染和保存,但是,如果没有输出调整,它就毫无意义。
任何人都能发光吗?
这是我的材料: https://i.stack.imgur.com/AZe1r.png
到目前为止,这是脚本:
carMake = "Chevy" -- Case Sensitive
liveriesFiles = "C:\\Path\\PaintSchemes\\" + carMake as string + "\\PAINT_*_PRIMARY.png"
glossFiles = "C:\\Path\\PaintSchemes\\" + carMake as string + "\\PAINT_*_PRIMARY_MAT_ID.png"
liveries = getFiles liveriesFiles
gloss = getFiles glossFiles
for livery in liveries do (
sceneMaterials["CHEVY"].texmapDiffuse = Bitmaptexture fileName: livery
index = findItem liveries livery
sceneMaterials["CHEVY"].texmapReflectGlossiness = Bitmaptexture fileName: gloss[index]
CoronaRenderer.CoronaFp.showvfb true
actionMan.executeAction 0 "50031" -- Render
splitString = filterString livery "\ ."
elementName = replace splitString[12] 1 6 ""
savePath = "C:\\Path\\PaintSchemes\\" + carMake as string + "\\renders\\" + elementName as string + ".png"
CoronaRenderer.CoronaFp.saveAllElements savePath
)
答案 0 :(得分:0)
要创建输出纹理,请使用outputTex = Output map1:bitmapTex
,其中bitmapTex是包含您要分配的BitmapTexture的变量。输出纹理贴图的输出属性(术语的双重用法可能会令人困惑)将在outputTex.output中。
您可以使用showproperties outputTex
和showproperties outputTex.output
检查可用的属性。例如,通过outputTex.output.clamp = true
和outputTex.output.invert = true
设置反转和钳位复选框。另一点,您可以使用@前缀一个字符串常量来表示忽略转义字符的文字路径字符串,或者在MaxScript路径字符串中使用/作为\的替换。
注意 - 如果尚未存在输出纹理贴图,则无法为其创建颜色曲线。只有通过单击"启用颜色映射"才能通过UI创建曲线。这是MaxScript的限制。但是,这个限制可以通过C ++解决(有关请求的更多细节)。
使用标准材质代替CoronaMtl和Corona渲染器,这是一个示例脚本:
-- See available properties the Output map, assuming on the Diffuse slot of Standard material
showproperties (sceneMaterials["CHEVY"].diffusemap)
showproperties (sceneMaterials["CHEVY"].diffusemap.output)
-- Run the test
carMake = "Chevy" -- Case Sensitive
rootPath = @"D:\Temp\PaintSchemes" + carMake as string + @"\"
liveriesFiles = rootPath + @"Test_Map*A.png"
glossFiles = rootPath + @"Test_Map*B.png"
liveries = getFiles liveriesFiles
gloss = getFiles glossFiles
for livery in liveries do (
bitmap1 = Bitmaptexture fileName: livery
output1 = Output map1:bitmap1
output1.output.clamp = true
sceneMaterials["CHEVY"].diffuseMap = output1
index = findItem liveries livery
bitmap2 = Bitmaptexture fileName: gloss[index]
output2 = Output map1:bitmap2
output2.output.invert = true
sceneMaterials["CHEVY"].glossinessMap = output2
max quick render
splitString = filterString livery "\ ."
elementName = splitString[4]
r = getLastRenderedImage()
r.filename = rootPath + @"\renders\" + elementName as string + ".png"
save r
)