Released by Jens Kafitz, 2015 - Extension Pack



 RELEASE DATE: December 8th, 2015


 REQUIRES: Mari 3.0v1 or higher *(Indie/Non-Commercial not supported)






= Nodegraph Only   = Demo Video available

NEW FEATURES

Click on a feature for more information


Extension Pack 6 has a new file and folder structure within your mari script directory to

make it a compact. easy to update and deploy package. Please refer to the installation section of the

online help for updated installation instructions or the install troubleshooting section if you have problems


  • Version Check


You can now check for newer Extension Pack Versions from the Mari Help Menu.



All Extension Pack Layer Nodes have been reworked for best use in the Nodegraph. 

Nodes now have their most useful parameters exposed as connections in the Nodegraph to allow 

node-driven parameters (Octaves driven by another Noise etc.). 

While Node connections are unmapped, Node Sliders are used. While Node Handles are mapped, Node Sliders are ignored.


Sample of a Node with exposed connections in the Nodegraph





A node similar to a Contrast Node but mimicking behavior of Substance Designers 'Histogram Scan' Node. 




Two new nodes were added to convert values between RGB + HSV (Hue/Saturation/Value).




Two new nodes were added to convert values between RGB + HSL (Hue/Saturation/Lightness).





A simple node generating a default tangent space normal color. Normal Map Channels should always be set to

colorspace 'Linear' or 'Raw Data' to ensure correct results.




A simple node letting you set a float value. Different Input Fields (Text field, sliders with different ranges etc.) for different requirements are available





NODEGRAPH ONLY


Nodes of this category can only be created in the Nodegraph



A manifold is a node to transform coordinates such as Position + Normal resulting in a change of scale,

translation or rotation.

All Extension Pack Procedurals now have a 'Manifold' connection in the Nodegraph to attach this to.

Standard Mari Nodes if supported have a 'Position' connection that is compatible.


Many Extension Pack Procedurals already have Scale/Translation/Rotation options built in but this node can be

used as a central control node to modify multiple nodes simultaneously.

Manifold 3D by default will use the Object Position as base coordinates unless you specify a different one by

mapping its 'Coordinates' Connection.


Scale, Rotation and Offset of Coordinates are exposed as parameters in the Nodegraph, allowing you to

optionally drive them by another Node if needed



Manifold UV is used to change scale, offset and rotation of 2D Coordinates (UV Coordinates).


All Extension Pack Procedurals now have a 'Manifold' connection in the Nodegraph to attach this to.

Standard Mari Nodes if supported have a 'UV' connection that is compatible although if available a

'Position' Input works as well.


When attaching a Manifold UV node to another node, the target node will be evaluated in UV Space instead of

its default (3D) Space. The behavior is the same as checking the 'UV Space' Checkbox in a Procedural

but the Manifold UV Node can be used to modify multiple Nodes at once.


'Manifold UV' by default uses your objects UV Coordinates.


Scale, Rotation and Offset of Coordinates are exposed as parameters in the Nodegraph, allowing you to

optionally drive them by another Node if needed





The 'Image' Node will allow you to load an image with similar options as you have on the default Mari 'Tiled' Node.

However this node does not contain any UV transformation options (repeat, offset). 


By attaching a 'Manifold UV' Node to the 'Image' Node you get the same options as on a Tiled node but with the advantage

of being able to use different tiling images in different channels while having only a single set of controls for repeat, offset etc.



Sample of 3 different Image Nodes with a shared Transformation Node (Manifold UV)





The Object Space Radial Gradient will create a 3-dimensional (spherical) radial gradient




The Object Space Linear Gradient (centered) will create a linear gradient on your object.

It is a modified version of Mari's default Object Space Linear Gradient Node, that was reworked

to make it more easily control-able and provide additional options for gradient generation.





NODEGRAPH ONLY


Nodes of this category can only be created in the Nodegraph



A Node to add detail to mask edges by isolating the soft transition areas and adding the effects from another

node into the transition.




The Input Switch Node will switch between 4 different Input Connections based on a user provided value




Very simple mix node to linear interpolate two colors by a mask. 

This is similar behavior to the Mari 'Merge' node but lighter and faster in performance since the 'Mix' Node

does not contain blend modes or advanced blendmodes.


For convenience a color A and color B can be set on the node. They will be ignored if the corresponding connections

are mapped in the nodegraph. 

The Nodes Mix Slider will always be evaluated regardless of the Mix Connection being mapped 

(in which case it's a multiplier on the nodes 'Mix' Connection)




NODEGRAPH ONLY


Nodes of this category can only be created in the Nodegraph



New nodes were added as part of the implementation of Material Regions. 


    • Region Base Value
    • Region
    • Region Merge
    • Region Output


Different Material Region Presets for different shader workflows 

(Roughness/Reflectance, Metallness/Roughness, Specular/Glossiness) are available.


Material Regions are a system to layer Materials on top of each other (Dust over Rust over Metal etc.)

while providing a logical grouping in the Nodegraph.


Other than a Layered Shader a Material Region does not compute any shading. It is layering the effects

of each channel (diffuse, spec, bump etc.) from the current region over the effects of each channel from the previous region.

In the end a material region chain outputs each combined channel into a channel for export.


Material Regions have full support for MaterialID Channels as Region masks.


Material Regions are only available in the advanced Nodegraph (Preferences/Nodegraph/Enable Advanced Nodegraph)


Sample of a basic material regions setup involving a region_base_value node, a material_region with a painted mask 

and the final output to the target channels




Two new nodes were added to convert Channels from a Metal-Roughness workflow to a 

Reflectance/Roughness or Specular/Glossiness workflow.





NODEGRAPH ONLY


Nodes of this category can only be created in the Nodegraph




The Bake Visible to Selected Paint Node is a special Node that allows you to repeatedly write the input

of the node into a selected paintable Node. This is different from Mari 3.0's default right mouse click

'Bake to Paint Node' since it does not require you to create a new Paintable Node each time.





NODEGRAPH ONLY


Nodes of this category can only be created in the Nodegraph



A variety of Math Nodes were added to allow more 'visual coding' of graphs:





'Project Paths' allows you to configure default paths (Texture Export & Import Locations,Camera Locations, Image Manager Folder default etc.)

and file templates for your project. Paths can be set relative to a project base path and automatic folder creation is supported.


Paths are saved with the project and restored on project load, so you only need to configure each project once and on the next 

project open you will find it how you left it without the need to set the paths again with the tool.







SETTINGS HISTORY


The last used settings (from whenever you last launched the 'Project Paths' Dialog) are preset on open to all fields but not applied to the project unless you choose to.


This allows you to configure your paths relative to a changing base path and on a newly created project you then only need to set the base path instead of all individual paths each time.






A new menu item was added to the Selection menu and the right-click viewport menu ('Visibility' submenu)

that allows you to isolate the visibility of your current selection. 


Unselected parts of your model will be hidden. Once you toggle back, your original visibility states will be restored.

A default shortcut CTRL+1, identical to Mayas 'Isolate Select' has been set if available 

but can be modified via the Shortcut Editor.






FACE & PATCH SELECTIONS ONLY


Isolate Selection cannot be run to toggle visibility in 'object' mode at the moment






A new tool was added to the 'Selection Group' Palette that will allow you to easily create a materialID

channel from your choice of selection groups. All selection group types (object, patch, faces) are supported.


Currently there are two ways to utilize Material IDs in Mari


    • create a 'Color to mask' Adjustment Layer and pick the ID Color
    • use the Extension Pack Material Regions with their built in support for Material IDs


Optionally the tool allows you to create individual mask layers for each selection group instead of one

material ID layer.





A bookmarking system for layer selections was implemented. Pinned Layers simplify the way of sharing

a layer, group or channel into a different channel or stack. Pinned Layers have two modes - Quick Pins & Collection Pin


Sample of different layers pinned to the layers menu for later access



Quick Pins can be used to quickly mark one or more layers for a sharing operation. 

It works similar to a copy+paste operation but instead of pasting a duplicate of a layer, 

it creates one or more shared layer(s) of the original selection at your target location. 

The same layer(s) can be 'pasted' multiple times in different places.


A quick pin can be stored via the Option Layer/Pin/Save Quick Pin, then inserted into a layerstack

by using the Layer/Add Pinned Layer/Quick Pin option. 

For convenience the default hotkeys CTRL+ALT+C and CTRL+ALT+V were set to save and insert a Quick Pin.




Collection Pins are useful if you need to repeatedly have access to the same layers for sharing. 

While Quick Pins work like a clipboard, Collection Pins allow you to pin layers,groups or channels to the menu for

later access. Collection Pins can be added by using the Layer/Pin/Pin to Collection Option.

For each selected layer, group or channel layer, one Collection Pin will be added to the 'Layer/Add Pinned Layer' Menu.


Collection Pins are stored per project and will be restored on project loading.

Collection Pins require a unique name. You cannot add two layers with the same name as different collection pins.





Layer/Pin/Edit Collection Pins is used to manage your existing collection pins





As part of the implementation of 'Pinned Layers' options were added to the channel palette.

To save a channel as a Quick Pin or Collection Pin use the Channel/Pin/Save Quick Pin or 

Channel/Pin/Pin to Collection Options.


The currently selected channel will be accessible for sharing as Channel Layer from the 

Layers/Add Pinned Layers/ Menu




A new option 'Duplicate Channel' was added to the Channels Menu. 

'Duplicate Channel' - other than Mari's default Copy/Paste way of duplicating Channels - 

will create a true duplicate of the source channel.


    • Channel Layers will be linked to original shared channel and channel duplication is avoided.


    • Channel Internal sharing of layers from one point of its layerstack to another is kept without 

referencing the original source channel.


    • Channel external sharing of Layers (layers from 3rd channel shared into source channel) 

is maintained and direct links to 3rd channel are restored in duplicated channel


    • Mixed or combined Internal & External Sharing is maintained without referencing original

source channel





It is now possible to export your geometry from inside Mari to an OBJ File. 

Export Object can export either subdivided or unsubdivided geometry if OpenSubd is applied.


When launched via the 'Object' Menu in the Main Window you are able to select what geometry to export.

When launched via the right mouse click menu in the object palette, the selected geometry will be exported.




A new submenu was added to the Object menu and right click object dropdown menu to toggle all objects

in your scene to their highest or lowest available subdivision levels. 


Locked Objects are respected and are not affected.



A new submenu was added to the Object menu and right click object dropdown menu to toggle all visible

objects in your scene to their highest or lowest available subdivision levels. 


Locked Objects are respected and are not affected.





New options were added to the 'Tool Properties' Toolbar of the Transform Paint Tool:


    • You can now switch your Paint Buffer Resolution from this toolbar using the 'Resolution' Dropdown

or the 'Halve' & 'Double' convenience buttons. This is the same as changing it in the 'Painting Palette'


    • You can now toggle the Paint Buffer Clamping on/off from this toolbar. This is the same as changing it in the 'Painting Palette'


    • You can now switch the Paint Buffer Bitdepth from this toolbar using the 'Depth' Dropdown.

 This is the same as changing it in the 'Painting Palette'.


    • A new feature was added to keep the Paint Buffer Bitdepth in sync with your current channel.

The Bitdepth will be dynamically switched whenever you switch channels with different bit depth.

This setting is saved across projects.


    • New features were added to easily flip your Paint Buffer horizontally or vertically




Under the Mari/Scripts Menu a new Submenu 'Project' was added. This contains useful tools to reduce

archive sizes and speed up your Mari by removing unnecessary data from the project


Remove all Snapshots will delete any snapshots for Channels or Layers in your project which

can reduce Project/Archive Sizes significantly. Other than using the same action from your 

Channels / Snapshots Menu running this will clear your history (meaning you cannot undo it) 

in order for Mari to be able to remove the snapshots from disc as well.


GarbageCollect is a Mari-internal tool that usually runs automatically while Mari is idle for a few minutes

but can be manually triggered here. Its purpose is to clear data that is no longer needed from your project cache

(deleted layers, channels etc.) Please note, this process will save your project & clear out its history.

You should always let this process run for a little since there is no visual process or completion indication.



FEATURE IMPROVEMENTS

Click on a feature for more information


Extension Pack Tools are now grouped under a 'Extension Pack' Group in the Hotkey Editor

with subgroups mimicking their position in the UI to make them easier to find.


Extension Pack Adjustment and Procedural Nodes are now located under an 'Extension Pack' Submenu

under each existing submenu ('Adjustments', 'Basic', 'Environment', 'Geometry' etc.)


Extension Pack Adjustment Layers are now categorized in subfolders (Color Correction, Utilities etc.)

to police the menu size


Extension Pack Procedurals in the MainWindow/Layers/ Menu no longer appear under a 'CustomProcedurals' Folder

but now appear in the same Folder Structure as in the Layers Palette.


Custom Object Normal Node has been renamed to Custom Surface Normal to be in line with Mari vocabulary.


Paintable Gabor Noise no longer appears under 'Adjustment Layers' and has been moved to Procedurals/Custom/Gabor/





    • 'Export Custom Channel Selection' now has the option to only export selected patches, allowing you to export

changed UDIMs for multiple Channels at once. Please note that 'Export Selected Patches' overrules

the 'Export only Modified Textures' Setting (if turned on) and will force export all selected patches, changed or not.


    • 'Export Custom Channel Selection' can now export (flattened) Channels at half, one quarter or on eighth of the resolution

they are set to in your Mari Project


    • 'Export Custom Channel Selection' can now post process exported Textures using any process that can be launched

from a command line. This can be used for example to launch Mipmapping processes for conversion to tx, tiled exr, map format etc.


    • 'Export Custom Channel Selection' no longer flattens channels with only a single paintable layer (and no mask or adjustment), 

speeding up the export time for those channels and matching default Mari Export behavior introduced in Mari 2.6v5


    • 'Export Custom Channel Selection' now separates the File Path and the File Export Template in its

UI to avoid having to retype the template every time you change the path. 

Path & Template fields support the usual MARI Variables such as $ENTITY,$CHANNEL etc. 


If a defined subfolder in the path uses a $-Variable, folders will be auto-created without user interaction.

Otherwise a user prompt will appear offering to create any missing folders. Subfolders can be defined

in both path and file template field.


    • 'Export Custom Channel Selection' will now remember your last settings for checkbox options and

Export File Template. An option was added to reset the Export File Template to Project Default if

it is different than the current one.


    • 'Export Custom Channel Selection' now uses the default Operation System Dialog for Path Selections

instead of the limited MARI Default one


    • The previous 'DISABLE SMALL TEXTURES' Checkbox is now a 'ENABLE SMALL TEXTURES' checkbox

 to not have double negatives


    • 'Export Custom Channel Selection' now differentiates if it is being launched from 'Export' or 'Export Flattened' Submenu.

If launched from 'Export Flattened' Submenu, 'Flattened' checkbox is enabled by default and the File Template defaults

to the template defined for flattened Textures. When launched from 'Export' submenu, 'Flattened' checkbox is off by default

and file Template defaults to template defined for non-flattened Textures. 


    • 'Export Custom Channel Selection' has been added to the canvas right mouse click menus




Duplicate & Flatten will no longer create channel duplicates of channelLayers (shared channels) if the

duplicate/flattened channel contained channel layers





    • 'Export UV Mask' now uses a similar interface as 'Export Custom Channel Selection'


    • 'Export UV Mask' now lets the user define the Export File Template.

Path & Template fields now support the usual MARI Variables such as $ENTITY,$CHANNEL etc. 


If a defined subfolder in the path uses a $-Variable, folders will be auto-created without user interaction.

Otherwise a user prompt will appear offering to create any missing folders. Subfolders can be defined

in both path & file template field.


    • custom File Template Entries are saved between sessions


    • when launched via the 'Object' Menu you are able to select what geometry to export from. 

When launched via the right mouse click menu in the object palette, the UV Masks from the selected

geometry will be exported.





'Patch Bake to Image Manager' now use Mari 3s new OCIO color management when loading images into the

image manager. The colorspace to load images in is determined by the selected channel when executing the tool.





    • 'Unproject Channel/Layer to Image Manager' now uses Mari 3s new OCIO color management on projectors

 and when loading images into the image manager. 


 The colorspace to unproject the image in is determined by the selected channel when executing the tool


    • 'Unproject Channel/Layer to Image Manager' will now unproject images at 2x PaintBuffer Resolution or maximum 16k.


    • 'Unproject Channel/Layer to Image Manager' will now set the scale of the Projector based on the X Dimension

of the Paintbuffer. Unprojected Images will always be square with a 1:1 Pixel Aspect Ratio.


    • 'Unproject Channel/Layer to Image Manager' will now unproject at appropriate BitDepths based on

the selected channel/layer. 8bit Images are saved in PNG, 16bit/32bit in exr format.


    • 'Unproject Channel/Layer to Image Manager' will now timestamp imported images and images will have

 the layer / channel name they were unprojected from



  • Mask from Selection & Mask from Selection (inverted) removed


Layer/Add Layer Mask/Mask From Selection + Mask From Selection (inverted) have been removed from 

Extension Pack since MARI 3 now ships natively with its own implementation.






ATTENTION


Some of the following modifications will change the look of existing procedurals when converting Projects that use the old ones.


  • General


    • The 'Transform Scale' Settings (Scale X,Y,Z) on all procedural nodes have been refactored so that

 larger numbers now mean larger scale. Previously procedurals would scale up in size the closer the

value got to 0.0. At default setting of 1.0 the result is identical as before.


    • Clamping options have been added to various procedurals where they were missing. 


Clamping is now performed on the result of the noise computation but before applying Color A / B.

This ensures that color mixing behaves reliably but it is still possible to set color values outside of 0-1 range.


    • Various Slider ranges have been refactored to a 0-1 range to make it easier to map attributes in

the nodegraph with paintable nodes or other procedurals




'FBM+' now uses a different algorithm, giving more predictable results with less overall 'flowing' of features

across the surface when changing sliders





    • 'Polysurface Curvature' now has a new 'Min Curvature' Attribute


    • The 'Polysurface Curvature' Node now has an additional 'Normal Map Mix'. 


When a Normal Map (for example a 'Normal Map' Channel) is attached to the connection in the Nodegraph

you are able to mix  from a normal map into the final calculation of the curvature.




  • Falloff Map removed


The 'Falloff Map' Node has been removed from Extension Pack since it no longer had any practical

applications



BUGFIXES

Click on a feature for more information



    • Extension Pack additions to menus were not always deactivated/grayed out when no project was open


    • User-set Hotkeys for Extension Pack Tools would not get restored properly after Mari was reopened






    • The icon for 'Pause Viewport Update' would not be found on MARI Configurations with multiple Script Paths


    • It was possible for the Enabled/Disabled state of the Icon to fall out of sync with the state of the Viewport

when the Pause Viewport action was triggered via scripts or non-default hotkeys.




    • 'Export Custom Channel Selection' caused an error in MARI 3.0 during Export and did not export anything


    • Metadata added to Channels to determine what textures have changed between exports were visible to the user

in the Channel Info field by mistake


    • 'Export Custom Channel Selection' when used with the 'Only Modified Textures' option previously would error

 if the UDIM Count increased (for example by adding geometry versions) or if users mistakenly removed

 the channel metadata used to determine changes in textures.


    • 'Export Custom Channel Selection' when used with the 'Only Modified Textures' option previously would error

 with certain nested mask stack configurations


    • 'Export Custom Channel Selection' when used with the 'Only Modified Textures' option would not register changes

 to a channel caused by a Channel Layer in the Layerstack.




    • 'Create new Channel from custom Resolution' Item under Menu 'Scripts/Channel/Template' was launching the

wrong tool in Extension Pack 2.1




    • 'Save Custom Channel Resolution' & 'Load Custom Channel Resolution'  would crash Mari if used in Mari 3.0





    • 'Clone & Merge Layers' when executed on a selection containing a locked layer would duplicate the selection

 in the stack but error when merging them.

 'Clone & Merge Layers' will now unlock any locked layers after duplication so it can run correctly.




    • 'Add Channel Mask' would crash Mari when used in Mari 3.0


    • 'Add Channel Mask (grouped)' would error and stop working when used in Mari 3.0




    • 'Convert to Paintable' when run on a Channel Layer that was within a shared group would error.


    • 'Convert to Paintable' when run on a Channel Layer with a disabled adjustment stack would not set the

 Adjustment Stack to disabled on the resulting paintable layer giving the impression that something had changed

 after converting





    • 'Image Manager'/'Export Selection' would error and not export anything when used in Mari 3.0


    • 'Image Manager'/'Export Selection' will now default to the Project Path for Reference Images

defined by the variable mari.resources.DEFAULT_IMAGE.


You can change default folders by using the new 'Project Paths' Option found under the File Menu


    • Canceling an export will now more reliably abort exports since the export is now checking for a user

 executed cancel after each image finished exporting.



DEVELOPER INFORMATION



Extension Pack Tool Actions have been moved out of /Mari/Scripts/ and into /Mari/Extension Pack/.

If you are using any Extension Pack Actions in your own scripts you need to update to the new path.



RegisterCustomShaders.py now uses the new mari.gl_render.registerCustomNodeFromXMLFile

to register nodes inside of Mari.


As a result categories in Adjustment & Procedural Node XML Files <Category> now need to be specified explicitly

including their initial path (/Filters/, '/Procedurals/'). The path is no longer automatically derived from the <tags>

attribute such as <tags>_adjustment </tags>


As a result especially Adjustment Layers need to be placed manually under adjustments by specifying the path

 '/Filter/' in the category section of the xml file <category> /Filter/MyAdjustment </category>


This allows for placement of nodes that require an _adjustment tag to work in other locations

than the Adjustment Layer Submenu and prevents Mari from creating its own Folders for your Nodes in the Menu structure.




Extension Pack has a new system to deal with Shortcuts in order to not enforce preset shortcuts onto the user if he doesn't want to




The following functions had their algorithm updated internally


    • float Luminance();


The following functions were updated and require additional clamping arguments to work


    • vec4 DT3D_PerlinNoise();
    • vec4 DT3D_fBmNoise();
    • vec4 DT3D_TurbNoise();
    • vec4 DT3D_InigoNoise();
    • vec4 DT3D_RidgedNoise();


The following functions were added to the openGL Function Overview:


    • float col2Mask();





CREDITS


  • CINESITE
  • Dwarf Animation Studio
  • John Crowe
  • Laurent Garcia
  • Dave Girard
  • Michael Piatek