Release Notes for Mari 3.0v3
Release Date
13 April 2016
System Requirements
Note: Mari increases its level of performance with newer, more advanced hardware configurations. However, Mari is tested and capable of operating on many older, prior-generation systems. For this reason we are listing below-minimum requirements, which are recommended, and on which tests have been performed. Your particular needs may vary from that of other users.
Officially Supported Operating Systems
• Mac OS X 10.9.5 (Mavericks) or higher
• Windows 7 64-bit or higher
• Linux 64-bit operating system (CentOS/RHEL 5.4)
Minimum Hardware Requirements
• Quad-core processor
• 10+GB disk space available for caching and temporary files
• At least 4GB RAM
• Display with 1680 x 1050 pixel resolution
• An NVIDIA or AMD* graphics card with the latest drivers
• 1GB of graphics memory
• OpenGL 3.2* or higher
*Displacement preview is currently only available on the cards and drivers that support OpenGL 4.0 or newer.
Recommended System Requirements
• 2.5+Ghz Quad-core processor
• 250+GB disk space available for caching and temporary files. SSD is preferable.
• 16GB RAM with additional virtual memory*
• Display with 1920 x 1080 pixel resolution
• An NVIDIA or AMD* graphics card with the latest drivers
• 2+GB of graphics memory
• OpenGL 4.4 or higher support
*The use of virtual memory improves stability and helps prevent data loss on large projects.
'Recommended' does not guarantee that it meets your particular needs.
Tested Workstation Hardware
The configurations listed below are those that The Foundry have tested with Mari. Due to the constantly changing nature and wide variety of computer hardware available in the market, The Foundry is unable to officially certify hardware. The list below can be used as a recommendation and does not guarantee that it meets your particular needs.
Please download and install the latest graphics driver from the NVIDIA or AMD websites, and ensure that you are using 8.982.1 drivers or higher for AMD cards.
If you encounter any issues, please contact support@thefoundry.co.uk.
|
Tested Workstation Hardware |
|
|---|---|
|
Apple |
• MacPro4,1 • MacPro5,1 • iMac13,2 • MacBookPro10,1 |
|
HP |
• HP Z600 • HP Z620 • HP Z800 |
|
Tested GPU Hardware |
|
|---|---|
|
AMD Prosumer Graphics Cards |
• AMD Radeon HD - D500 • AMD Radeon R7 - 260x |
|
AMD Enterprise Graphics Cards |
• AMD FirePro W7000 |
|
NVIDIA Prosumer Graphics Cards |
• NVIDIA Geforce GTX 680 • NVIDIA Geforce GTX Titan • NVIDIA Geforce GT 650M |
|
NVIDIA Enterprise Graphics Cards |
• NVIDIA Quadro 4000 • NVIDIA Quadro K5000 • NVIDIA Quadro M6000 |
New Features
There are no new features for this release.
Feature Enhancements
• ID 121132 - A new Python function named runGLSLCode has been added. It runs GLSL code and writes the result into the specified ImageSet with optional blending.
• ID 123179 - It is now possible to automatically merge selection groups with the same name imported into Mari .
• ID 174741 - In the Channel Transfer dialog, a new option to set the texture resolution of the destination channel has been added.
• ID 175230 - Mari now detects whether to subdivide each Alembic geometry piece, based on subdivision flags set in the file.
• ID 194832 - The accuracy of mip-map generation has been improved, at the cost of performance, by linearizing data before downsampling.
To disable this, and restore legacy functionality and performance, a new option has been added to the Preferences called Mip-Map Generation.
Bug Fixes
• ID 97445 - When using shared groups, Mari did not make it clear, on selection of a group, which other groups were shared, and therefore also selected. Additionally, shared layers and paint targets were also not clearly indicated.
• ID 101109 - Applying a Gaussian blur filter caused Mari to crash.
• ID 109277 - Node Graph: Clicking on any part of the pipe disconnected a node.
• ID 109721 - Node Graph: The default input and output nodes of Graph Layers overlapped each other.
• ID 110001 - Node Graph: Undoing an auto-insertion of a node required three undo actions.
• ID 110465 - Transparent channels were exported when flattened.
• ID 111329 - Node Graph: Auto-placing nodes within a backdrop disrupted the node positions.
• ID 112666 - Node Graph: Paint nodes were created at the position of the cursor, wherever it was placed in the Mari interface, instead of in the visible part of the Node Graph.
• ID 116323 - Node Graph: Layer icons in the Layers palette occasionally changed from paintable to procedural when a Dot node was added to the Node Graph.
• ID 119781 - The current color profile set on the Color Manager wasn't applied to the screenshots.
• ID 121798 - Changes made to the colorspace of an image in the Image Manager were not respected by the Paint Through tool.
• ID 122619 - Removing channels from a project stopped the Color Picker working correctly.
• ID 123448 - The Channel Transfer dialog showed objects that had been deleted in the available Object dropdown.
• ID 126386 - Node Graph: The node connectors did not go back to its default position when disconnected.
• ID 126970 - Paint Buffer Symmetry did not select the correct source point when painting using the Clone Stamp tool.
• ID 128337 - In the Shaders palette, the Display Features sub-section showed incorrect titles with extra apostrophes for the new shaders AiStandard, RedShiftArchitectural, and VrayMtl.
• ID 128730 - Color swatches didn't match the picked color when the Color Swatches and Pickers preference was set to Color Manager.
• ID 129902 - Mari rendered turntables incorrectly when the 4096x2160 preset was used.
• ID 129913 - Mari output rendered turntables in the incorrect colorspace for the selected image format.
• ID 165965 - The subdivision error log was repeated for each level chosen and for merged geometries.
• ID 167072 - In the OCIO Colorspace toolbar, clicking Clear current LUT disabled the Display filter of the corresponding color profile in the Color Manager palette.
• ID 167239 - Resizing faces of a model whose UV data was missing caused Mari to crash.
• ID 168832 - The File Space parameter, when adding a new channel through the Node Graph, was always set to the default value Normal, even when another File Space was specified through the Add Channel dialog.
• ID 168923 - Exporting and importing Alembic geometry through session scripts did not take into account merging of geometry.
• ID 169544 - Tiled procedurals were not correctly saved and referenced, causing Mari to lose them when the associated image was deleted from the Image Manager.
• ID 170071 - The Abs node had a redundant "text" input.
• ID 170079 - The Shuffle node was oval in shape rather than rectangular.
• ID 170414 - Running the safe mode command safe=7 caused Mari to crash.
• ID 170682 - Environment lights didn't support the new OCIO colorspace system, making it impossible to use a colorspace specified in the project.
• ID 170940 - The Open Archive dialog showed the wrong title.
• ID 171562 - The Clone Stamp action in Paint Through mode did not work.
• ID 171743 - The Group Properties palette's tree was expanded by default.
• ID 171746 - Under the Group Node Knobs dialog, the Group Properties panel has been renamed to Pick Knobs to Add.
• ID 171830 - Rendering turntables omitted some tiles and the final result displayed random missing sections in random frames.
• ID 171831 - Cutting and pasting merged layers in the same channel resulted in a loss of data.
• ID 172660 - Deleting the default input node from a Graph layer resulted in breaking the layer.
• ID 172693 - When using the Paint Through and Clone Stamp tools on 8-bit image data, the paint displayed in the paint buffer appeared extremely pixelated compared to the expected resolution of the paint buffer.
• ID 173066 - Copying and pasting layers across objects resulted in a loss of the paint information of the layers.
• ID 173110 - The scalar option was missing from the colorspace settings on images, meaning that when painting masks or heights, unless you remembered to switch off the OCIO toolbar, colors came out too dark.
• ID 173378 - When choosing a custom OCIO config file, the OCIO Python module resulted in an error.
• ID 174570 - The Repeat mode of the Paint Through tool was not working correctly for the 8-bit paint buffer.
• ID 174753 - When painting 8-bit image data, Mari introduced quantization errors due to the lack of precision. Baking, converting procedurals to paintable, mip-map generation, and so on introduced severe banding.
• ID 174809 - The colorspace selected through the Open an Image dialog was ignored, and the image reverted and used the automatic colorspace instead.
• ID 175718 - Mari introduced severe quantization errors when baking into, converting procedurals into paintable, and generating mip-maps on byte (8-bit) image data.
• ID 176057 - Changing File Space in the Paint node properties caused Mari to crash.
• ID 176388 - The roughness of the AiStandard shader was incorrectly calculated.
• ID 177653 - Creating a Paint node using the color picker in the Select Color dialog caused Mari to become unresponsive.
• ID 178398 - Mari's environment light lost the reference to its corresponding image and displayed nothing when upgrading between different versions releases of Mari 3.0.
• ID 184235 - When stamping the gradient down, Mari filled the areas outside the gradient with black when they should have been unaffected.
• ID 194958 - The camera movement around subdivided models didn't perform correctly in earlier versions of Mari 3.0.
Developer Notes
These are the changes relevant to developers.
New Features
PythonQt to PySide Change
In 3.0v1, Mari migrated from PythonQt to PySide for Python bindings. Although the functionalities remain the same, there are some differences such as function signatures, which may affect existing scripts. This section lists the changes to Mari's Python engine, and some notes regarding new features in Mari 3.0v1 as well as the changes resulting from the migration from PythonQt to PySide.
Major Changes
• Updated the version of Python shipped with Mari from 2.6.5 to 2.7.3.
• Changed the Python API bindings generation from PythonQt to PySide.
• Added Python API bindings for the new Node Graph feature.
• Added Python API bindings for the new OpenSubdiv feature.
• Added Python API bindings for the new Colorspace support.
• Added Python API bindings for the new Locator feature.
• Added Python API bindings to interact with new Image and Geometry C API plug-ins.
• Added many functions to OpenColorIO support.
Implicit Python API Changes Resulting from the Change to PySide Binding Generation
You should not use temporary objects when connecting to signals as they make PySide crash due to reference counting. Always store off the temporary object so a reference is held to it and it doesn't get garbage collected. The following example crashes:
def createComboBox(): return PySide.QtGui.QComboBox() def doSomething(): print 'Hello World!' createComboBox().currentIndexChanged.connect(doSomething)
As a workaround, do the following:
combo_box = createComboBox() combo_box.currentIndexChanged.connect(doSomething)
Note: This is stated in the PySide documentation, see: https://wiki.qt.io/PySide_Shiboken_Object_Ownership#Common_pitfalls.
PySide is strict on types, so some functions do not accept the equivalent integer value to an enum. For example, the following no longer works:
channel = mari.current.channel() channel.setDepth(16, 1)
Do the following instead:
channel.setDepth(mari.Image.DEPTH_HALF, mari.Channel.CONVERT_ALL)
List of Minor API Changes Since 2.6v5
• Exposed MkdirCommand to the Python API.
• Added MriRegExpChannelNameExtractor and Python API.
• Added extra signals to ImageManager for Python API.
• Added transform() method to Image Python API.
• Added project signal callbacks to Python API.
• Added Python bindings for selection group. This implied creating five more API objects, SelectionGroupManager, SelectionGroup, ObjectSelectionGroup, FaceSelectionGroup and PatchSelectionGroup. Also, added an example script in the Python examples folder that apppears in Mari Python examples menu.
• Texture Transfer - Added Python API for displacement, height, and Gaussian blur operations.
• Texture Transfer - Added supporting GUI for new operations chains through Python.
• Added select selection groups through Python.
• Node Graph API.
• Added Python API to support C API Image plug-in.
• Added code to pass extra parameters from Python to C API texture and geometry.
• OpenColorIO - Added OpenColorIO to Python API.
• OpenColorIO - Extended ImageManager in the Python API so the colorspace properties can be specified when opening an image.
• OpenColorIO - Extended Image in Python API so the colorspace properties can be accessed and modified.
• OpenColorIO - Extended Python API to include methods checking whether a colorspace or role is present in a configuration file.
• OpenColorIO - Made Python API throw an exception when a colorspace stage argument is out of range.
• OpenColorIO - Registered ColorspaceType enum with Python API.
• Custom Display Pythom API - Added Python function to create a PySide widget that hosts the custom widget for display driver API.
• Fixed Python API channel info decorator so it correctly sets the specified filespace.
• The old COLOR and SCALAR system in the Python API was deprecated.
• Added colorspace defaults changed signal to Python API.
• Added colorspace config changed signal to Python API.
• OpenColorIO - Added method to resolve automatic file names to the config class within the Python API.
• Added Python API for subdivision.
• Added method to Python API to determine whether a config file name is a standard one shipped with Mari.
• Added ability to specify the name of the colorspace config changed signal in the Python API.
• Added a Python API signal for changes made to a channel's scalar colorspace config.
• Renamed Python API class EventWrapper to WrappedEvent so that it would build and work with PySide.
• Switched Python API bindings over from PythonQt to PySide.
• Removed redundant PythonQt ways of signal connection in mari.utils.connect().
• Added Python LocatorEntity class.
• Extended GeoEntity to get and set transforms.
• Extended GeoManager to list locators.
• Added pause shader compilation on the canvas in Python API.
• Added support for passing compression option from Python API to OpenEXR file writer.
• Re-enabled the DIFFERENCE blend mode for layers in the Python API.
• Added hasAdjustmentStack, isAdjustmentStackEnabled, setAdjustmentStackEnabled to Python API.
• Python API - Separated ImageSet.importImages() and ImageSet.importImagesFromDict() to support importing images from a dict of Image objects and file paths.
Feature Enhancements
• ID 125486 - Mari now includes Python API documentation for Node Graph API.
Bug Fixes
• ID 89624 - Python API : The GeoEntityVersion.nameChanged signal was not emitting correctly.
• ID 123934 - Python API: The Channel.exportImagesFlattened() function did not respect the BACKGROUND_EXPORT flag.