18 November 2021
Mari now ships with a built version of our open source USD plug-ins. Our mission at Foundry is to continually grow Mari's USD integration by adding to the features available in our USD plug-ins. For Studios who want to build their own version of the plug-in, to better tailor how it reads or writes USD suited to Studio pipeline needs, a handy preference is available (Preferences > USD > General > Load USD Plugin) to disable the shipped USD plug-in, allowing Studio versions to load unconflicted in its place.
Artists can now start projects and create Mari objects from USD formatted mesh files. Currently the mesh importer only supports UsdGeomMesh
and UsdGeomXform
primvar types. It does not support UsdShade
, UsdGeomCamera
, UsdLux
or other Usd Schemas.
Additionally, the mesh importer has native support for OpenSubdiv parameters present on UsdGeomMesh
prims. Which can drive how Mari's Subdivision operates on a per-sub mesh basis, for when a complex object is imported with some portions set to subdivide and others to be left as-is, giving artists the ability to control how Mari and other DCCs, downstream of modelling, will subdivide their meshes.
Mari now includes a new Shader type that approximates the look of the UsdPreviewSurface.
The USD Preview Surface shader can be used in tandem with your primary render vendor Shader or Mari’s own Principled BRDF. As the preview Shader exists together with your primary Shader, you can take advantage of this by using different resolutions, bit depths and combine the Channels of your primary Shader to create consolidated preview Channels.
Artists looking to elevate the richness of their characters, vehicles, props and environments in Hydra powered viewports can now paint with more confidence, knowing their preview looks in other DDCs will match what they see in Mari.
Mari 5 ships with the first phase of a USD export workflow designed to reduce pipeline friction between Mari and Katana.
This first iteration will enable artists to author flattened preview Looks from a USD Preview Surface Shader source in your Project and view them in DCCs with Hydra powered viewports, like Katana. This will allow artists to develop a preview look alongside their project’s primary render engine Shader.
You will find an additional tab in the Export Manager named USD Export. From here you can pick a USD Preview Surface Shader per Object in your Project and export the attached Channels/Bake Points to texture files, along with a USD file that defines a material, assignments and shader tree. Shader inputs, without texture Channels connected, will write their values to the Look, so that you don't have to export textures for all non-default shader parameter values. The UV set name of you object can also be specified here to ensure the texture files map correctly within the Look. If you want a USD file that also combines the Look with the original model file, you can specify the payload (original model file) and target path for an assembly USD file and Mari will write this composited stage to disk.
In Mari, certain Filter effects like Blur could only be applied to a Paint layer/node. In order to perform a Blur operation on a graph network of procedural nodes, artists would have to first convert the graph to a Paint node, then apply the Filter there. This would disrupt the flow of the artists' creativity and was a completely destructive workflow.
We have addressed this opportunity to increase Mari's proceduralism by bringing Filters to Mari's Bake Points.
Artists can now insert a Bake Point into their Node Graph network and apply a stack of Filters to the baked result.
This new workflow includes the following features:
Bringing Filters to the Bake Point node makes applying Filters to your procedural recipes completely repeatable and non-destructive - truly unlocking Mari's procedural potential.
We've introduced new brush dynamic controls to the Brush Settings. With the addition of precise range controls for new Jittering techniques, artists can now create more stylistic brush strokes than have ever been possible before.
Artists can now randomly jitter the brush color between the foreground and background colors. In previous Mari versions, jittering the color would use the Alpha channel of the paint stroke to blend the brush stroke color between the foreground and background. This legacy effect can still be achieved by ticking the Use Legacy Coloring checkbox.
The hue of the chosen foreground color can now be jittered. The hue range controller allows you to precisely specify how the hue jittering reacts. For example you could have blue as your foreground color and only have the jittering go 20% towards green hues and 0% towards purple hues, giving you complete control.
The saturation of the chosen foreground color can now be jittered. Like the hue range control, you can precisely specify within which range of saturation amounts the jittering occurs.
The value of the chosen foreground color can now be jittered. Again, the value range control allows you to specify precisely within which range of values the jittering occurs.
Each new brush color value control can be configured to either:
Additionally each individual brush tip color value control can have their jitter method set independently from each other. For example you can have the Hue change on each new stroke, while the Saturation can jitter each tip splat and the Value can change with the pressure of your stylus.
All these new jittering effects allow artists to create more stylistic brush strokes than has ever been possible before.
Previously, bringing in custom brush tip images into Mari required artists to ensure the desired brush Alpha was encoded into an image's Alpha Channel. Our improved Brush Engine now allows you to specify whether a brush tip's Alpha is generated from an image file's Red, Green, Blue, Alpha or Luminance Channels, giving artists complete control on how their custom brush tips are generated.
Have you ever wanted to create a brush that stamped down a full color image, along with all the ability to stylistically control each splat with the various jittering controls of the brush settings. Now you can, with the new ability to utilize the full RGBA color data from an image file. Including colorspace controls, this new addition unlocks artistic freedom with Mari's brush engine.
We’ve introduced five new types of Procedural patterns that can be used in conjunction with our Projectors and Locators to create powerful Procedural Masks that drive complex materials.
Whether you work in the Layerstack or the NodeGraph, you now have access to the following:
We've introduced new math nodes to perform various mathematical operations on incoming vector data:
Mari's Node Graph now comes with Grid Snapping.
From Mari's Preferences, artists can now toggle grid snapping with Node Graph > Grid > Snap to Grid and enable a visual grid in the Node Graph view background with Node Graph > Grid > Show Grid.
This new grid can have its width and height of each cell customized as well as its appearance.
Being able to snap nodes inline with a grid will help make messy, hard to follow, Node Graph networks a thing of the past.
Mari's third party libraries have now been upgraded to the versions specified by the VFX Reference Platform. The following table shows a comparison of the specific versions used in Mari 5.0/4.8 and Mari 4.x:
Mari 5.0/4.8 | Mari 4.x | |
---|---|---|
gcc | 6.3.1 | 4.8.2 |
glibc | 2.17 | 2.12 |
Python | 3.7.7* | 2.7.13 |
Qt | 5.12.10 | 5.6.1 |
Qt for Python(PySide) | 5.12 | 2.0 |
OpenEXR | 2.4.2 | 2.2.0 |
Ptex | 2.3.2 | 2.1.28 |
OpenSubdiv | 3.4.3 | 3.1.x |
Alembic | 1.7.10 | 1.6.x |
FBX | 2020.1.1 | 2017 |
OpenColorIO | 2.0 | 1.0 |
ACES | 1.1 | 1.0.x |
Boost | 1.70.0 | 1.61 |
C++ API/SDK | C++14 | C++11 |
To line up with Nuke 13.1 Mari has upgraded OCIO to version 2.0 ahead of VFX RP 2021
ID 63758 / BZ 33870 - Image-based brush tips can now be derived from any channel of the supplied image, or from the luminance of the image. It is also possible to simply use the image itself.
Additional enhancements are as follows:
ID 277575 - Brushes now have the ability to jitter the foreground/background color blend of each splat of the brush tip by random value and/or pen pressure.
The Brush Settings in the Tool Properties palette now contain two new buttons to clear all edited settings for either shape or value categories.
The following control groups are cleared by each of new buttons:
The new GPU preference Fence Synchronization Allowed greatly improves the speed of flattening layers/nodes to texture maps on Bake Points, Paint layers or when exporting.
This is achieved by allowing the GPU to generate flattened patch textures into a queue for the CPU to write to disk in parallel to each other. Without this preference enabled, Mari will use the legacy behaviour where the CPU and GPU would block each other by waiting for each to complete their tasks before handing over to the other.
When testing the flattening of a Tiled procedural with 128 patches at 4K with 16-bit depth, the flattening took up to 50% less time to complete.
The new GPU preference Persistent Mapping Allowed to turn on/off the Persistent Mapped Buffers feature of OpenGL which can optimize baking times.
By skipping unnecessary mipmap generation, the speed of exporting textures to disk is improved.
Mari now uses an improved method of writing the Project file to disk, which should make saving your large Projects take less time than before.
The default value for the GPU preference item Bake Bucket Size is set more smartly for optimized baking.
The default value for the GPU preference item Bake Resolution is increased to better leverage available VRAM.
Experimental environment variable MARI_MAX_WRITE_PENDING_SIZE_FACTOR
has been introduced to adjust how much of the max data cache size is assigned to the data writing queue, for performance testing of the new flattening engine.
ID 321010 - Mari's Node Graph now has Grid Snapping for easier arrangement of nodes.
ID 481754 - The Color Picker palette and dialogs' color/scalar icon is now a button that allows to explicitly switch between the color and scalar picking modes
ID 484888 - Opening the Color Picker window from the following color swatches, now respect the associated color/scalar setting.
Python API: mari.colors.pick()
function takes in an optional parameter for launching the Color Picker window in the Scalar mode.
ID 265317 - 284183 - 176231 - The Bake Point node UI now has a new Filters tab, allowing users to add and adjust Filters like Blur that apply to the baked result in a non-destructive, repeatable manner.
ID 427518 - Tiled and Tri-Planar nodes now have an option to account for rotation/scaling when using tangent space normal map as image inputs.
ID 483217 - The Constant node slider now ranges from 0 to 1 and the components default value has changed to RGB.
ID 428967 - The Material Ingest Tool will now retain user loaded tool presets in the preset drop down menu between sessions.
Procedural nodes generated by the Material Ingest Tool are now positioned to the left of the output nodes. When using a material template, constant nodes are now positioned where the unmatched image procedural node were that have been replaced.
On Project load, if there are Bake Points using custom Filters that are not registered in the current Mari session, a message window will show, informing you which filters are in the Project, but no longer available as well as warning you that a Project save in this state will permanently remove the missing Filters from all Bake Points.
A new preference item Delete Unused Image Sets has been added to allow Mari to delete unused image sets to save project data disk usage.
The preference items Delete Unused Patches and Delete Unused Image Sets have a new option Prompt, which prompts confirmation dialogs when deletion is about to occur.
Removing a Bake Point node now also removes any Export Items that were associated with the node as its source.
Mari displays a new splash screen at its launch featuring creature artwork by Gael Kerchenbaum.
Python API and Custom Shader API functions which were marked for deprecation have been removed.
For full details please visit this Knowledge Base Article.
The new mari.IndexRangeList
class supports general index range lists
The mari.FaceSelectionGroup
class has the new function, meshLocationToFaceSelectionIndexRangeList()
, which returns a dict
mapping of mesh location str
keys to mari.IndexRangeList
instances representing the face indices members of the Selection Group.
Properties of type MriFloatRange
can now have their min and max values queried and set.
You can now register/deregister a function that returns a custom QWidget
to be added to the Export Manager as an additional Tab in the interface, with the following new commands:
mari.system.batch_export_dialog.registerCustomTabWidgetCallback(tab_name: str, generate_usd_export_widget: function)
mari.system.batch_export_dialog.deregisterCustomTabWidgetCallback(tab_name: str)
The class mari.system.material_ingest.TextureSet
now has to_dict
and from_dict
functions to allow for easier use in automated Material Ingestion pipelines.
A new Python API function mari.GeoVersion.sourceMeshLocationsList()
returns a list of all the mesh locations from the original scene graph that made the Object Version.
Register custom GLSL filters to be used with Bake Point Filter system
For developers creating mari.ExportItem
instances to drive custom pipeline exporters, Export Items that have the metadata name "_HIDDEN"
set as True
, will no longer appear in the main Export Manager view.
For any node's connected input port, you can use the newly added function,mari.Node.inputConnection(input_port_name: str)
, to return the connections source node instance (mari.Node
) and output port name (str
) .
Added two functions to mari.GroupNode
to get the input or output node's by passing the port name to the following functions:
groupInputNode(inputName: str)
groupOutputNode(outputName: str)
New signals mari.ExportManager.itemAdded
and mari.ExportManager.itemRemoved
have been added.
A new function, mari.ExportItem.resolvedColorspace()
, has been added to return the resolved str
name of the Export Item's configured colorspace.
mari.DDI.garbageCollect(UnusedPatches)
now has an optional bool
argument to force unused patch garbage collection.
A palette instance now holds a reference to the given body widget so that it won't disappear after the python script completes.
You can now query some version info from the command line by launching Mari using the --version
flag
The mari.utils.signal_helpers
module has two new context manager classes (SignalBlocker
& SignalsBlocker
) that block the Qt signals of the widgets initialised with the class.
ID 436343 - Windows Only - Mari did not bundle certain Visual Studio Redistributable libraries which prevented Mari from launching.
ID 485092 - When in scalar picking mode, overriding the color picking colorspace from the "Same As 8bit" default from either the Color Picker window or the Colors palette, colors picked from the Canvas would display incorrect RGB values.
ID 482136 - HSV and RGB values are displayed down to the first decimal places.
ID 493105 - Deleting Export Items from the Export Manager had unpredictable results where not all or the wrong items were removed.
ID 491857 - The Legacy shader mode has been removed as it is no longer stable while the replacement Optimized shader mode is now very stable and well established.
ID 491830 - If a shader failed to compile Mari would incorrectly display the "busy" spinning wheel in the canvas indefinitely. Mari will now correctly show an error screen in the canvas.
ID 470471 - Under certain circumstances, Mari would crash when enabling shadows in the GPU preferences.
ID 492595 - Mari would crash when attempting to load a project that had image data corrupted. Instead, it will now load the project minus the image that had corrupted data.
ID 490831 - Fixed several GL issues related to updating Qt version.
ID 486878 - Unused patch deletion mechanism would shuffle the patches incorrectly.
ID 479321 - Given that an Ingest preset file had been initially loaded, all subsequent user changes to the Ingest Tool's controls would be overridden by the previous preset on the following launch if the drop down menu had not been set to an empty item before closing the tool.
ID 483084 - Mari would crash on Intel's 10th and 11th gen CPUs
Mari now uses OpenSSL version 1.0.2u
ID 486131 - Dragging and dropping an image from the Image Manager to the Node Graph would no longer create Tilednodes.
ID 490871 - The Texture Sets palette would not correctly update the contents when the path is changed in the Preferences dialog.
ID 487767 - Mari would paint an unexpected splat occasionally when navigating the scene in the Canvas on Linux.
2D transform controls for Paint Buffer Transform and Paint Through tools would not operate correctly in some occasions on Linux.
ID 491920 - Mari would crash if an invalid image path was specified for the Paint Through tool.
ID 490677 - Mari would crash when running on 11th gen Intel CPUs due to an outdated verison of OpenSSL. Mari now uses the OpenSSL 1.0.2u version.
ID 490779 - Under certain conditions, the up-to-date state of Bake Point nodes would be incorrectly invalidated.
ID 482617 - The Custom Shader API Documentation was missing descriptions for arguments of Input elements.
ID 483393 - The mari.Shelf.isGrouped()
function would incorrectly return True
when the path property was not empty, but contained the root character /
.
ID 487198 - The mari.Channel.resize()
function would break the active history macro.
ID 491883 - The mari.ShelfItem.saveAs()
function failed to save the shelf item to disk.
ID 492467 - Under certain circumstances, the mari.nodes.nodeCreated
signal was emitted before the created node was fully initialised, giving incomplete data about the node when queried via the API.
ID 471286 - Mari crashes when a project is created or opened while using Nvidia GPU driver version 461.92, 462.31 and 462.59
ID 494813 - When the environment variable MARI_MATERIAL_INGEST_PRESETS_SEARCHPATHS
is set, the Material Ingest Tool fails to launch.
ID 494883 - Windows Only - When making very short, low pressure brush strokes using a tablet, the first touch of the pen to the Canvas registers as a full pressure click. This issue is a side effect of Windows Ink settings.
ID 494369 - Mari can intermittently crash on launch when loading Shelf thumbnails from disk.
ID 494971 - Using the Script Console help button, no longer brings up any developer documentation.
ID 494962 - Procedural color swatches in the layer/node properties UI display differently than the color seen in the Canvas.
ID 483855 - When Mari is launched with Administrator Privileges, you are unable to Drag and Drop items from Windows Explorer into Mari.
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.
Linux Desktop Managers: Mari is officially tested on GNOME and MATE. While it generally performs well on other desktop managers like KDE, most of our bug fixes will target those specified above. Some desktop managers like XFCE have not been tested with Mari and therefore will not be supported.
*Displacement preview is currently only available on the cards and drivers that support OpenGL 4.0 or newer.
*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.
The configurations listed below are those that Foundry have tested with Mari. Due to the constantly changing nature and wide variety of computer hardware available in the market, 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 Customer Support directly through the Support Portal at the following address: https://support.foundry.com.
NVIDIA Prosumer Graphics Cards |
|
---|---|
NVIDIA Enterprise Graphics Cards |
|
Copyright © 2021 The Foundry Visionmongers Ltd.