The OpenEXR class exposes an interface to access the settings of the OpenEXR Output plug-in introduced in 3ds Max 2011.
This BitmapIO is a complete replacement of the previously availbale MaxOpenEXR BitmapIO plug-in. The older plugin introduced in 3ds Max 8 has been completely removed.
Constructor:
Class instances not creatable by MAXScriptAliases:
OpenEXR fopenexr
Interface: fopenexr
The fopenexr interface exposes no properties and the following methods:
Methods:
<boolean>fopenexr.setDefaults ()Ininitalizes OpenEXR handling and its default values.
<boolean>fopenexr.loadEXRParams <&String>exrName
exrName is In and Out parameter Loads the EXR parameters from the specified EXR file name.
<boolean>fopenexr.saveEXRParams <&String>exrName
exrName is In and Out parameterSaves the EXR parameters from the specified EXR file name.
<boolean>fopenexr.delAllAppDatas ()Deletes all appData.
Returns true on success, false otherwise.
The following methods give access to the Format and Type settings in the Main Render Output group of controls of the OpenEXR Output Settings dialog.


The following methods give access to the Compression, Storage Type and Image Region settings of the OpenEXR Output Settings dialog.

<integer>fopenexr.getCompression ()Returns an integer corresponding to the selection index of the Compression drop-down list.
Please see the table below for possible values.
Note that the selection index is 0-based.
<boolean>fopenexr.SetCompression <integer>compressionSets the Compression drop-down list to the item specified by the integer argument.
The possible values are:
| Code | Compression Type |
|---|---|
| 0 | No compression |
| 1 | Run-length encoding (RLE) |
| 2 | ZLIB compression, one scanline at a time |
| 3 | ZLIB compression, in blocks of 16 scanlines |
| 4 | PIZ-based wavelet compression |
| 5 | Lossy 24-bit float compression |
| 6 | Lossy 4-by-4 pixel block compression |
| 7 | Lossy 4-by-4 pixel block compression (fixed rate) |

<boolean>fopenexr.getSaveScanline ()Returns true if the Storage Type is set to "Store Image as Scanlines", false if it is set to "Store Image as Tiles".
<boolean>fopenexr.setSaveScanline <boolean>saveScanlineSets the Storage Type to "Store Image as Scanlines" if the argument is true.
Sets the Storage Type to "Store Image as Tiles" if the argument is false.
<integer>fopenexr.getTileSize ()Returns the tile size used when Storage Type is set to Scanline.
The tile size is not exposed to the User Interface.
<boolean>fopenexr.setTileSize <integer>tileSizeSets the tile size used when Storage Type is set to Scanline.
The tile size is not exposed to the User Interface.

<boolean>fopenexr.getSaveRegion ()Returns true if the Image Region drop-down list is set to Save Region.
Returns false if the Image Region drop-down list is set to Save Full Image.
<boolean>fopenexr.setSaveRegion <boolean>saveRegionSets the Image Region option to Save Region if the Boolean argument is true.
Sets the Image Region option to Save Full Image if the Boolean argument is false.
<integer>fopenexr.numLayers ()Returns the current number of layers in the EXR file.
<integer>fopenexr.getLayerType <integer>layerReturns the type of the 0-indexed layer as an integer.
Possible values are:
0 - Main Render Layer - always returned for argument 0
1 - Render Element Layer
2 - G-Buffer Channel Layer
<Stringby value>fopenexr.getLayerName <integer>layer Returns the name used in 3ds Max of the layer specified by the 0-based argument.
For the Main Render Layer (integer 0), the value is always an empty string ("").
For Render Elements , this is the name that appears in the Render Elements panel of the Render Setup dialog.
For G-buffer Channels, it is the standard name that appears in the user interface.
<boolean>fopenexr.setLayerName <integer>layer <&String>name
name is In and Out parameter Sets the 3ds Max name for the specified layer.
<Stringby value>fopenexr.getLayerOutputName <integer>layerReturns the name used in the EXR file of the layer specified by the argument.
This is the name that appears in the Layer column of the Render Elements and G-Buffer Channels lists.
<boolean>fopenexr.setLayerOutputName <integer>layer <&String>namename is In and Out parameter
Sets the name used in the EXR file for the layer specified by the 0-based first argument, where 0 is the Main Render Layer.
This is the name that appears in the Layer column of the Render Elements and G-Buffer Channels lists.
<integer>fopenexr.getLayerOutputType <integer>layerReturns the output type of the specified layer.
Possible layer output types are:
0 - RGBA
1 - RGB
2 - Mono
3 - XYZ (G-Buffer Channels only)
4 - XY (G-Buffer Channels only)
5 - UV (G-Buffer Channels only)
<boolean>fopenexr.setLayerOutputType <integer>layer <integer>typeSets the output type of the layer specified by the first argument to the value of the second argument.
When the first argument is specified as 0, the Main Render Layer's type will be set.
Possible values of the second argument are:
0 - RGBA
1 - RGB
2 - Mono
3 - XYZ (G-Buffer Channels only)
4 - XY (G-Buffer Channels only)
5 - UV (G-Buffer Channels only)
<integer>fopenexr.getLayerOutputFormat <integer>layerReturns the output format for the specified layer.
Possible values are
0 - FLOAT32
1 - FLOAT16
2 - INT32
<boolean>fopenexr.setLayerOutputFormat <integer>layer <integer>formatSets the output format of the layer specified by the first argument to the type specified by the second argument.
When the first argument is specified as 0, the Main Render Layer's format will be set.
Possible values for the second argument are
0 - FLOAT32
1 - FLOAT16
2 - INT32
EXAMPLE:
Here is an example of setting the Main Layer's Output Format and Type:
fopenexr.setLayerOutputFormat 0 0 -- set Main Render to FLOAT32 fopenexr.setLayerOutputType 0 1 -- set Main Render to RGB
<maxObject>fopenxr.getRenderElementByLayer <integer>layerReturns the render element as a MAXObject at the specified layer. Available in in 3ds Max 2017 and higher.
<boolean>fopenxr.getLayerEnabled <integer>layerReturns true if the layer specified is enabled. Available in in 3ds Max 2017 and higher.
<boolean>fopenexr.isAutoAddRenderElements ()Returns the current state of the "Automatically Add/Remove Render Elements" option.
<boolean>fopenexr.setAutoAddRenderElements <boolean>addSets the state of the "Automatically Add/Remove Render Elements" option.
<boolean>fopenexr.addRenderElementLayer <&String>name <&String>outname <integer>type <integer>format
name is In and Out parameter
outname is In and Out parameterAdds a render element layer. You must specify the (3ds Max) name, output (EXR) name, type, and format.
<boolean>fopenexr.delRenderElementLayer <&String>name
name is In and Out parameterDeletes a render element layer, specified by its (3ds Max) name.
<boolean>fopenexr.addRenderElementLayerRef <maxObject>element <&String>outname <integer>type <integer>format
outname is In and Out parameterAdds a render element specified as a MAXObject obtained from the standard Render Element manager.
<boolean>fopenexr.delRenderElementLayerRef <maxObject>elementDeletes the specified render element layer, passed as a MAXObject.
EXAMPLE:
Here is an example of using a MAXObject variable to add a render element layer:
reMgr = maxOps.GetCurRenderElementMgr () el = reMgr.getRenderElement 1 fopenexr.addrenderelementlayerref el "diffuse" 0 0
With the two Ref functionsabove, you can manage render element layers that have identical names.
<integer>fopenexr.delAllRenderElementLayers ()Deletes all render element layers.
Returns the number of layers that were deleted.
<boolean>fopenexr.addGBufferChannelLayer <integer>channel <&String>name <integer>type <integer>format
name is In and Out parameterAdds a G-buffer channel layer. You must specify the channel, (3ds Max) name, type, and format.
<boolean>fopenexr.delGBufferChannelLayer <&String>name
name is In and Out parameterDeletes a G-buffer channel layer, specified by (3ds Max) name.
<integer>fopenexr.delAllGBufferLayers ()Deletes all G-buffer layers.
Returns the number of layers that were deleted.
Using MAXScript, you can save custom attributes, also known as "metadata" to an OpenEXR file. These attributes cancontain arbitrarydataandare ignored by 3ds Max.
The attributes might be data (such as thecamera attributesdescribedhere) that can be read and used by other OpenEXR applications.
While the purpose is similar to the custom attributes you can define in the 3ds Max user interface and MAXScript as parameter blocks to store additional object properties, custom attributes for EXR files are completely independent of object attributes.
Each custom attribute has a name and an index.
The name is auser-definedstring.
The index is the0-based indexof the attribute in the order it was added to the file.
<integer>fopenexr.numAttributes ()Returns the number of custom attributes in the EXR file.
<Stringby value>fopenexr.getAttributeName <integer>attributeReturnsthe name ofthe 0-based indexedattribute.
<integer>fopenexr.getAttributeType <integer>attributeReturnsthe attribute typeof the 0-based indexed attribute as an integer value.
The attribute type codes are as follows:
FOPENEXR_ATTRIB_STRING=0
FOPENEXR_ATTRIB_FLOAT=1
FOPENEXR_ATTRIB_INT=2
FOPENEXR_ATTRIB_MATRIX=3
<Stringby value>fopenexr.getAttributeStringValue <integer>attributeReturns the value of the specified 0-based indexedstring attribute.
<float>fopenexr.getAttributeFloatValue <integer>attributeReturnsthe value of the specified0-based indexedfloating-point attribute.
<integer>fopenexr.getAttributeIntValue <integer>attributeReturnsthe value of the specified0-based indexedinteger attribute.
<matrix3 by value>fopenexr.getAttributeMatrixValue <integer>attributeReturnsthe value of the specified0-based indexedtransform matrix attribute.
<boolean>fopenexr.addStringAttribute <&String>attribute <&String>value
attribute is In and Out parameter
value is In and Out parameterAdds an attribute with a string value, and specifies the name and value.
<boolean>fopenexr.addFloatAttribute <&String>attribute <float>value
attribute is In and Out parameterAdds an attribute with a floating-point value, and specifies the name and value.
<boolean>fopenexr.addIntAttribute <&String>attribute <integer>value
attribute is In and Out parameterAdds an attribute with an integer value, and specifies the name and value.
<boolean>fopenexr.addMatrixAttribute <&String>attribute <matrix3 by value>value
attribute is In and Out parameterAdds an attribute with a transform matrix value, and specifies the name and value.
<boolean>fopenexr.delAttribute <&String>attribute
attribute is In and Out parameterDeletes the specified attribute.
<integer>fopenexr.delAllAttributes ()Deletes all custom attributes from the EXR file.
Returns the number of attributes that were deleted.
Camera attributescan be savedwith an EXR file.
The rendering must be made from a Camera viewport.
These are the camera attribute values saved in the EXR file:
cameraTransform
cameraProjection
cameraFov
cameraAperture
cameraNearClip
cameraFarClip
cameraNearRange
cameraFarRange
cameraTargetDistance
Camera attributes are a special case of custom attributes.
<boolean>fopenexr.getSaveCameraAttributes ()Returns the current state of the Save Camera Attributes option.
True means the Camera Attributes will be saved with the OpenEXR file.
False means the Camera Attributes will not be saved with the OpenEXR file.
<boolean>fopenexr.setSaveCameraAttributes <boolean>saveCameraSets the state of Save Camera Attributes option to the Boolean argument.