Read image output format settings from Render Output

Hi all,
I have a problem with format setting.
I setup format settings for Render Output file in 3ds max (ex. png, 16bit, alpha) and save a file.
Then i create a job in deadline and use a postload script to change a rendOutputFilename to new path with same file type. But the output file is saved with other format settings.
How i can save same format setting when change a rendOutputFilename? Maybe i can read format settings from rendOutputFilename?

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
antomor's picture

thanks all for answers

thanks all for answers
All solutions not uses for me
Think in maxsript i can not read format options for rendOutputFilename.
I solved my problem with another method

pixamoon's picture

`

Hi,

Try this one:

  output_filename = rendOutputFilename
 
  rendOutputFilename = ""
 
  pngio.setType #true48
  pngio.setAlpha true
 
  rendOutputFilename = output_filename
 
  renderSceneDialog.update()

Best,
Pixamoon

antomor's picture

thank you, but i do not know

thank you, but i do not know format options in rendOutputFilename and want leave this options but change a rendOutputFilename.

pixamoon's picture

`

ah, sorry, looked on your question too fast.

To get output settings I think you need to do it with actual dialogs and get info from them:
1. open Render Setup dialog
2. press Files... button
3. press Setup... button
4. get info from PNG Configuration dialog

Try this code:

(
 
  local png_type, png_alpha
 
  fn press_button_by_name hwnd str =
  (
    for o in windows.getChildrenHWND hwnd where (o[4] == "Button" or o[4] == "CustButton") and matchpattern o[5] pattern:str do UIAccessor.PressButton o[1]
  )
 
  fn dialog_ops_re =
  (
    try
    (
      local hwnd = DialogMonitorOPS.GetWindowHandle()
      local wnd_text = UIAccessor.GetWindowText hwnd
 
      if wnd_text != undefined then
      (
 
        if wnd_text == "Render Output File" then
        (
          press_button_by_name hwnd "Setup..."
 
          press_button_by_name hwnd "Cancel"
        )
 
        if wnd_text == "PNG Configuration" then
        (
 
          for o in windows.getChildrenHWND hwnd do
          (
            if checked_type == undefined do
            (
              local checked_type = findItem #("Optimized palette  (256)", "RGB 24 bit  (16.7 Million)", "RGB 48 bit  (281 Trillion)", "Grayscale 8 bit  (256)", "Grayscale 16 bit  (65,536)") o[5]
 
              if checked_type > 0 and (windows.sendMessage o[1] 0x00F0 0 0) == 1 do
              (
                png_type = case checked_type of 
                (
                  1 : #paletted
                  2 : #true24
                  3 : #true48
                  4 : #gray8
                  5 : #gray16
 
                  default : undefined
                )
              )
            )
 
            if o[5] == "Alpha channel" do 
            (
              png_alpha = ((windows.sendMessage o[1] 0x00F0 0 0) == 1)
            )
          )
 
          press_button_by_name hwnd "Cancel"
        )
 
      )
    )
    catch(print (getCurrentException()))
 
    true
  )
 
  fn get_output_png_settings = 
  (
 
    DialogMonitorOPS.unRegisterNotification id:#pixamoon_output_png_settings
    DialogMonitorOPS.RegisterNotification dialog_ops_re id:#pixamoon_output_png_settings
    DialogMonitorOPS.Enabled = true
 
 
    if not renderSceneDialog.isopen() do renderSceneDialog.open()
 
    local hwnd
 
    for o in windows.getChildrenHWND (windows.getDesktopHwnd()) where o[4] == "#32770" and matchPattern o[5] pattern:"Render Setup:*" and o[6] == windows.getMaxHwnd() do
    (
       hwnd = o[1]
       exit
    )
 
    if hwnd == undefined then
    (
      messageBox "Couldn't find Render Setup Dialog"
    )
    else
    (
      press_button_by_name hwnd "Files..."
    )
 
 
    DialogMonitorOPS.unRegisterNotification id:#pixamoon_output_png_settings
    DialogMonitorOPS.Enabled = false
 
  )
 
 
 
  if renderSceneDialog.isopen() do renderSceneDialog.commit()
 
  if rendOutputFilename != undefined and toLower (getFilenameType rendOutputFilename) == ".png" then
  (
    png_type = undefined
    png_alpha = undefined
 
    get_output_png_settings()
 
    print png_type
    print png_alpha
  )
  else
  (
    messageBox "Output format is diffrent then .png"
  )
 
  ok
)

Best,
Pixamoon

antomor's picture

Thank you for you solution.

Thank you for you solution. But this not my variant.

pixamoon's picture

`

Sorry, so far I can find only this variant,

Let me know if you find other way to get output settings.

Best,
Pixamoon

jahman's picture

.

does it work?

(
	renderSceneDialog.close()
	rendOutputFilename = ""
	current_type = pngio.gettype() -- {#paletted|#true24|#true48|#gray8|#gray16} 
 
	case current_type of
	(
		#paletted : pngio.settype #true24
		#true24   : pngio.settype #true48
		#true48   : pngio.settype #gray8
		#gray8    : pngio.settype #gray16 
		#gray16   : pngio.settype #paletted
		default:    pngio.settype #paletted	
	)
 
 
	rendOutputFilename = "c:\\abc.png"
	rendSaveFile = true
	renderSceneDialog.update()
	renderSceneDialog.open()
)
jahman's picture

.

if you know that output file is png perhaps you can access output settings like this?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.