max2008 EXR issue and possible fix?


#1

Dear Community,
due to the current job i have to use Max10 and the EXR file format…but i had quite the same issues with max9 and EXR:

When i render a single EXR frame locally (having added all necessary render elements in advance of cause) i get all the desired render elements such as NoreRenderIDs, etc. all good!

When i render a sequence of EXRs (active time segment or range, doesn´t matter) i get only R,G,B and Alpha…

same happens when i render a sequence at the farm with backburner! R,G,B and Alpha…

When i render single frames divided by commata it seems to work though!!!

Any experience with that anyone?

Or is there a script maybe that takes the active time segment, divides it by commata and copies the values to the frames line in the render dialog or script listener…?

thanks in advance and kindest regards,
anselm


#2

i dont really use EXRs like that much but here’s a quick script that you asked for:

(
 renderSceneDialog.close()
 local frames = ""
 local start = animationRange.start
 local end = animationRange.end
 for i = start to end do
 (
 str = i as string
 str = substring str 1 (str.count-1)
 append frames str
 if i != end then append frames ","
 )
 rendPickupFrames = frames
 )

#3

hey Gravey,
that was a quick reply :slight_smile: thank you VERY MUCH for the script :slight_smile: that will help me alot until there is a solution for the EXR issues.

kindrest regards,
Anselm


#4

Are you setting Render Elements in the RE dialog or the openEXR extra Channels?

Via the standard Render Elements Dialog, we’ve used them extensively without issues.

XP pro 32 and 64 mixed / Max 9-sp2 / Vray 1.50.00 / Backburner 2k7.0.1


#5

i set the EXR extra channels within the setup dialog of the exr format. all the elements are set to active just to make sure the compositors have all they need :smiley:


#6

Yeah this is an issue with the EXR settings and the .INI file that stores them. The settings aren’t transfered with the files. Solution: setup EXR how you usually work, copy the file to a shared location, send a per server BB job through backburner with a batch file, done. Here is what I use here at the office:

Hope that helps,
-Eric


#7

cant i manipulate the openexr.ini file and copy it to all mashines? like setting all necessary “FALSE” values to “TRUE”?
hope i get this right, so if i cant copy&paste the *.ini to all mashines and set it to “read only” so max can´t modify it at it´s will i have to send a command line render job and have to generate the *.bat files from your code?

I´m with stupid atm…too many nightshifts :frowning:

my openexr.ini

[ExrDefaultOptions]
  UseInternalImportDefaults=FALSE
  UseInternalExportDefaults=FALSE
  [ExrNetServerParamOverrideOptions]
  NetServersUseExportIniFileSettings=FALSE
  NetServersUseImportIniFileSettings=FALSE
  [ExrImportInternalDefaultParams]
  Dflt_StorageType=FLOAT32
  Dflt_Exponent=1,000000
  Dflt_BlackPoint=0,000000
  Dflt_WhitePoint=1,000000
  Dflt_RGBLevel=1,000000
  Dflt_RGBOffset=0,000000
  [ExrExportInternalDefaultParams]
  Dflt_RGBABitDepth=FLOAT
  Dflt_SaveRedChannel=TRUE
  Dflt_SaveGreenChannel=TRUE
  Dflt_SaveBlueChannel=TRUE
  Dflt_SaveAlphaChannel=TRUE
  Dflt_UseRealPixels=FALSE
  Dflt_ApplyColorTransform=FALSE
  Dflt_Exponent=1,000000
  Dflt_PreMultipliedAlpha=TRUE
  Dflt_OverrideFrameNumDigits=FALSE
  Dflt_FrameNumDigits=4
  Dflt_Compression=ZIP16
  Dflt_AddAttr_Comment=FALSE
  Dflt_AddAttr_ComputerName=FALSE
  Dflt_AddAttr_SystemTime=FALSE
  Dflt_AddAttr_LocalTime=FALSE
  Dflt_AddAttr_VersionEXR=FALSE
  Dflt_AddAttr_Version3dsMax=FALSE
  Dflt_AddChan_ZBuffer=FALSE
  Dflt_AddChan_ObjectID=FALSE
  Dflt_AddChan_MaterialID=FALSE
  Dflt_AddChan_RenderID=FALSE
  Dflt_AddChan_UV=FALSE
  Dflt_AddChan_Velocity=FALSE
  Dflt_AddChan_Normal=FALSE
  Dflt_AddChan_Coverage=FALSE
  [ExrImportParams]
  StorageType=FLOAT32
  ApplyColorTransform=FALSE
  Exponent=1,000000
  BlackPoint=0,000000
  WhitePoint=1,000000
  RGBLevel=1,000000
  RGBOffset=0,000000
  [ExrExportParams]
  RGBABitDepth=HALF
  SaveRedChannel=TRUE
  SaveGreenChannel=TRUE
  SaveBlueChannel=TRUE
  SaveAlphaChannel=TRUE
  UseRealPixels=FALSE
  ApplyColorTransform=FALSE
  Exponent=1,000000
  PreMultipliedAlpha=FALSE
  Compression=ZIP16
  OverrideFrameNumDigits=FALSE
  FrameNumDigits=0
  

or is it enough maybe to modify these lines?:

NetServersUseExportIniFileSettings=FALSE
NetServersUseImportIniFileSettings=FALSE

thanks in advance and kindest regards,
anselm


#8

any info anyone? :cry::banghead::bowdown:


#9

Cant you copy your ini to a shared network path and have a pre-render script that copies it to the current machine rendering? Just a thought…


#10

The batch file does the copying of the .ini file to all the machines. Saves a lot of time to simply send a BB job that handles the copying for you :). copyEXR.bat is the command sent to every render machine. replaceEXR.bat is the BB batch that submits the job to every BB machine. Basically copyEXR.bat does all the work, while replaceEXR.bat tells all the machines what batch file they should run, and the fact that all machines should run that job.

NOTE: I used the BB job approach because it doesn’t launch Max so there is no issue with the file being loaded and then replacing it, and wondering which file will be saved back once Max closes.

Hope that makes a little more sense,
-Eric

HOW TO USE IT:

  1. make the changes to your openexr.ini file and place it on a shared network location.
  2. Copy the code from copyEXR.bat to a new batch file and save it to a shared network location (Edit the code with the proper path to your openexr.ini file and Max install locations).
  3. Copy the code from replaceEXR.bat to a run command prompt (ignore the first and last line, and edit path to the copyEXR.bat), dos command prompt (ignore the first and last line, and edit path to the copyEXR.bat), or to a new batch file on any one machine (edit path to the copyEXR.bat).
  4. Run replaceEXR.bat code from one machine to submit the job to backburner and have all machines execute it.

#11

I looked into this here at work for myself and found we did have the same issue. Apparently no one on the floor thought uncompressed 128bit files where much of an issue…
Anyway, I solved the issue here with a PostFileOpen callback, which sets properties via MaxOpenEXR interface.
We can now decide what’s 16bit or 32bit per channel as well as w/wo Alpha and PreMulti, per submittal.

Or if you wish to NOT save the green channel, try the code below… :slight_smile:


  postOpenStr = ( "
  	MaxOpenEXR.SetSaveBitDepth 1
  	MaxOpenEXR.SetSaveCompressionType 4
  	MaxOpenEXR.SetSaveUseRealPix false
  	MaxOpenEXR.SetSaveAlpha true
  	MaxOpenEXR.SetSaveRed true
  	MaxOpenEXR.SetSaveBlue true
  	MaxOpenEXR.SetSaveGreen false
  	MaxOpenEXR.SetSavePreMultAlpha false
  	")
  callbacks.addScript #filePostOpen postOpenStr id:#SetEXRSettings persistent:true
  

I found using a bitDepth of 8 bits per channel produces a black frame everytime… ( plugin issue or Vray? not that there is a point to saving an 8bit .exr )


#12

We actually solved the issue of OpenExr channel settings not being transferred not by copying the openexr.ini to all machines but the openexr_temp.dat which is located in the same directory. Not sure if this had been changed in max 2008 but the openexr.ini alone did not make it work for us (on max2008).

Kind regards,
Friedolin Dreesen


#13

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.