Release Notes for Mari 3.0v2

 

Release Date

15 December 2015

Warning:  The information regarding the migration from PythonQt to PySide was unintentionally omitted from the first set of Release Notes for Mari 3.0v2, see PythonQt to PySide Change for more information.

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 for 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 107889/48031 - A button has been added in the Node Properties palette to delete all the node property panels.

• ID 126666/51423 - It is now possible to view detailed information about a node by selecting it and either pressing I, or right-clicking and selecting Edit > Info Viewer.

• ID 127421/51517 - There is now an R (reset) button in the Mari Preferences, in the Node Graph tab for the Advanced View option.

Bug Fixes

• ID 95164/44548 - EXR images were exported through the Nuke<>Mari bridge with overly high color values.

• ID 99336/46312 - The Hard Mix blend mode didn't work correctly with .hdr images.

• ID 99433/46361 - The Vivid Light blend mode didn't work correctly with .hdr images.

• ID 112496/48031 - Caching and baking a node with multiple outputs didn't work correctly.

• ID 118765/50117 - When added to Mari as merged geometry, .fbx and .abc geometry didn't preserve their selection sets.

• ID 120314/50389 - The Modo Bake and Render functions were not enabled when Mari was launched using safe mode.

• ID 123505/50878 - When converting a channel from 8-bit to 16-bit, the automatic colorspace remained in sRGB rather than linear.

• ID 124200/51044 - The names of a merge node's inputs didn't reflect the ones in the Node Properties, although they meant the same thing.

• ID 124993/51131 - When taking a snaphot, Mari didn't respect the colorspace of the file being written to.

• ID 125514/51208 - Mari 3.0 was significantly slower at importing image data than Mari 2.6 and earlier.

• ID 125799/51243 - The Add Channel dialog didn't appear when creating a Channel node.

• ID 126101/51299 - Nodes sometimes jumped away from the position of the mouse, when it was moved after having panned in the Node Graph using the middle mouse button.

• ID 126455/51383 - The Paint Buffer size was smaller than the canvas size upon first launch of Mari.

• ID 126975/51476 - The canvas was slow to appear when changing tabs.

• ID 127248/51510 - A Channel node created automatically at the start of a new project was not aligned properly with its first layer in the Node Graph.

• ID 128148/51596 - The parameters StartFrame and EndFrame were not evaluated properly when trying to import a camera from an Alembic file, through Python.

• ID 128202/51606 - Mari incorrectly brought up Duplicate File Names dialogs for PTEX export with $GEO keywords.

• ID 128495/51655 - Trying to export Ptex textures for a scene consisting of lots of objects, caused Mari to become unresponsive.

• ID 128695/51681 - Paint nodes, which had been exported and imported back in a gizmo file, were not deep-copied and thus shared paint with other paint nodes.

• ID 128807/51702 - Mac OS X only: Subdividing certain Ptex objects caused Mari to crash.

• ID 128843/51711 - When upgrading a project from an earlier version, Mari asked you whether you wanted the colorspace changes to be applied to each channel, even though the All button was pressed on the first channel converted.

• ID 128987/51725 - Mari failed to reload the OCIO Colorspace toolbar when a Mari Python module was imported through an external script.

• ID 166197/51874 - Creating a merged Ptex project from geometry that had multiple objects and some of which had normals missing caused Mari to crash.

• ID 166255/51876 - The Help > SDK > C API > Open Examples Folder link opened the incorrect example folder.

• ID 166260/51878 - Multiple Group nodes were created on top of each other if the first Group node was within the boundaries of a backdrop.

• ID 166269/51880 - The Help > SDK > Python > Open Examples Folder link was incorrect and didn't open anything.

• ID 166606/51891 - Using the color picker found in the Select Color dialog resulted in a color being in the wrong colorspace when the Pick raw pixels mode was used.

• ID 166607/51892 - When picking colors through the Select Color dialog, the resulting color was in the incorrect colorspace when the Pick screen pixels mode was enabled.

• ID 166975/51900 - Subdividing a model, the UV of which after subdivision required extra patches to be generated, caused Mari to crash. Mari generated redundant extra UV patches (UDIMs) for geometries where the UV just touched integer boundaries.

• ID 167108/51912 - The link to Python in the documentation was outdated and pointed to an old version of Python.

• ID 167228/51920 - Ptex face resizing didn't work for triangulated objects.

• ID 167337/51920 - Loading some OBJ sequences with Ptex option enabled caused Mari to crash.

• ID 167607/51924 - Sending byte channels to Nuke through the Nuke<>Mari bridge resulted in Mari becoming unresponsive.

• ID 167672/51926 - Mac OS X only: Changing the resolution of a Paint node, in some cases, caused Mari to crash.

• ID 167716/51927 - The tooltip to the "p" button in the Group node properties for promoting parameters was missing.

• ID 167883/167883 - When upgrading a project that contained a Tiled procedural from 2.6 to 3.0, the frame rate dropped dramatically due to Mari continually loading the tile procedural's corresponding image every frame.

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 CAPI 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 PythonAPI to support CAPI Image plug-in.

Added code to pass extra parameters from Python to CAPI 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.

Deprecated old COLOR and SCALAR system in Python API.

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

There are no feature enhancements in this release.

Bug Fixes

• ID 91297/43466 - Printing to the Python buffer became increasingly slower as more messages were printed.
The performance of Python script console output has been improved and a new Python API function has been added, mari.app.clearScriptOutput(), to clear the Python script output.

• ID 118423/50057 - Python for the Texture Access API didn't work.

• ID 120342/50391 - The shaderAdded signal was emitted before the shader name was set.
GeoEntity.shaderAdded now emits after the name is set. The GeoEntity.shaderAdded function has been deprecated, which still works. The GeoEntity.shaderCreated signal has been introduced for consistency, and fixed GeoEntity.shaderRemoved, which was not emitted correctly.

• ID 128312/51631 - Python API: PaintBuffer.depthChanged was not emitted.

• ID 129295/51774 - Mari exported an image in the wrong colorspace when done through the Python API by setting each image's colorspace in an image set.

• ID 129160/51748 - Python documentation didn't list the correct function argument names.

• ID 166679/51895 - Loading C API animation failed.
The restriction on animation geometry loading has been eased so that some missing data for some animation frames is supplemented by another frame.