Author Topic: Merge Corona Render Elements via maxscript  (Read 2206 times)

2018-02-05, 16:04:55

FlorianW.

  • Active Users
  • **
  • Posts: 53
    • View Profile
Is it possible to access the "Merge..." Button under the Render Elements Tab via maxscript to link it to one of my buttons to quickly import renderelement lists.

pretty sure this is independent from corona but maybe somebody knows!

Thanks!
3dsMax 2021 - Corona 5

2018-02-05, 19:58:36
Reply #1

Njen

  • Active Users
  • **
  • Posts: 557
    • View Profile
    • Cyan Eyed
I'm using .ini files to do this. Now my scripts are heavily weighted to work only in my setup, but the general flow is to collect all of the values of each render element, then set them to my config file. For example this one collects the 'essential' element:

Code: [Select]
setINISetting masterFilePath txt_rlLayerName.text "element essential" ((cbx_reRenderElementEssentialDirect.checked as string) + " " + (cbx_reRenderElementEssentialIndirect.checked as string) + " " + (cbx_reRenderElementEssentialReflect.checked as string) + " " + (cbx_reRenderElementEssentialRefract.checked as string) + " " + (cbx_reRenderElementEssentialTranslucency.checked as string) + " " + (cbx_reRenderElementEssentialEmission.checked as string) + " " + (cbx_reRenderElementEssentialVolumetrics.checked as string) + " " + (cbx_reRenderElementEssentialDenoise.checked as string))


I can read the render setting in an example like this:

Code: [Select]
if filteredElement[1] == "essential" then
(
elementData = GetINISetting masterFilePath ddl_rmCurrentRenderLayers.selected ("element essential")
elementComponents = filterstring elementData " "

cbx_reRenderElementEssentialDirect.checked = elementComponents[1] as booleanClass
cbx_reRenderElementEssentialIndirect.checked = elementComponents[2] as booleanClass
cbx_reRenderElementEssentialReflect.checked = elementComponents[3] as booleanClass
cbx_reRenderElementEssentialRefract.checked = elementComponents[4] as booleanClass
cbx_reRenderElementEssentialTranslucency.checked = elementComponents[5] as booleanClass
cbx_reRenderElementEssentialEmission.checked = elementComponents[6] as booleanClass
cbx_reRenderElementEssentialVolumetrics.checked = elementComponents[7] as booleanClass
cbx_reRenderElementEssentialDenoise.checked = elementComponents[8] as booleanClass
)

then I use a function to create the actual element:

Code: [Select]
fn addRenderElementsPerLayer elementList sel =
(
for i = 1 to elementList.count do
(
elementFiltered = filterString elementList[i] "_"
if elementFiltered[1] == "essential" then
(
elementLayerData = GetINISetting masterFilePath sel ("element essential")
elementComponents = filterstring elementLayerData " "

if elementComponents[8] == "true" then
(
denoise = true
)
else
(
denoise = false
)

if elementComponents[1] == "true" do re.addrenderelement (CESSENTIAL_Direct elementName:"essentialDirect" useDenoise:denoise)
if elementComponents[2] == "true" do re.addrenderelement (CESSENTIAL_Indirect elementName:"essentialIndirect" useDenoise:denoise)
if elementComponents[3] == "true" do re.addrenderelement (CESSENTIAL_Reflect elementName:"essentialReflect" useDenoise:denoise)
if elementComponents[4] == "true" do re.addrenderelement (CESSENTIAL_Refract elementName:"essentialRefract" useDenoise:denoise)
if elementComponents[5] == "true" do re.addrenderelement (CESSENTIAL_Translucency elementName:"essentialTranslucency" useDenoise:denoise)
if elementComponents[6] == "true" do re.addrenderelement (CESSENTIAL_Emission elementName:"essentialEmission" useDenoise:denoise)
if elementComponents[7] == "true" do re.addrenderelement (CESSENTIAL_Volumetrics elementName:"essentialVolumetrics" useDenoise:denoise)
)
)
)


I know it's not the one button approach you are after, but maybe it's something that can point you in the right direction.
« Last Edit: 2018-02-05, 20:09:11 by Njen »