aboutsummaryrefslogtreecommitdiff

Shave & A Haircut 9.6

Shave and a Haircut is an interactive grooming and styling tool for hair and fur, with associated shaders for offline rendering in Arnold, RenderMan, and V-Ray.

Installers for S&H 9.6

Installers for S&H 9.6 plugins for Maya versions 2017 and 2018 on Linux / MacOS/OSX and Windows can be found here: https://github.com/EpicGames/Shave-And-A-Haircut/tree/master/Installers

Compilation of S&H 9.6

S&H 9.6 supports Maya versions 2017 and 2018 on Linux, MacOS/OSX and Windows.

Most of the code uses 4-column tabstops, preferably with spaces rather than TAB characters, but violations of this standard are rife.

Maya

All platforms require that the version of Maya you want to build for be installed. It's not necessary that Maya be able to run. For example you could do builds on a Virtual Machine whose graphics capabilities are insufficient to run Maya just so long as it's installed.

Maya uses a customized version of Qt. The headers for these are provided in an archive found in the 'include' folder of each Maya install tree. Before building Shave you must create a 'qt' folder beneath the 'include' folder in Maya's install tree and expand the archive into it.

3rd Party SDKs

Arnold

Support for Autodesk's Arnold renderer and its 'mtoa' Maya plug-in is controlled by the file 'arnold/supportedMtoAVersions.txt'. Comments at the top of that file explain its layout.

The build scripts expect the header files and libraries from the required Arnold and mtoa SDKs be found in a directory tree having the following structure:

  • arnoldSDKs
  • arnold
    • 5.0.1.0
    • linux
      • bin
      • [copy of Arnold SDK's 'bin' folder]
      • include
      • [copy of Arnold SDK's 'include' folder]
    • osx
      • bin
      • [copy of Arnold SDK's 'bin' folder]
      • include
      • [copy of Arnold SDK's 'include' folder]
    • win
      • bin
      • [copy of Arnold SDK's 'bin' folder]
      • include
      • [copy of Arnold SDK's 'include' folder]
    • 5.2.0.0
    • [same as above]
  • mtoa
    • 2.1.0.2
    • maya2017
      • linux
      • include
        • [copy of mtoa SDK's 'include' folder]
      • lib
        • libmtoa_api.so
      • osx
      • include
        • [copy of mtoa SDK's 'include' folder]
      • lib
        • libmtoa_api.dylib
      • win
      • include
        • [copy of mtoa SDK's 'include' folder]
      • lib
        • mtoa_api.lib
    • 3.1.0.0
    • maya2017
      • [same as above]
    • maya2018
      • [same as above]

The top 'arnoldSDKs' directory can be called anything, but there must be an environment variabled named SHAVE_ARNOLD_SDKS which points to it.

The version numbers shown above are just examples. Actual version numbers must match those in the supportedMtoAVersions.txt file for the versions of Maya for which you plan to build Shave.

Of the 'linux', 'osx' and 'win' branches, only those for your target platform need be present.

RenderMan

Support for Pixar's RenderMan renderer and its Maya plug-in is controlled by the file 'prman/supportedRManVersions.txt'. Comments at the top of that file explain its layout.

The build scripts expect the header files and libraries from the required RenderMan SDKs be found in a directory tree having the following structure:

  • rendermanSDKs
  • 20.12
    • maya2017
    • linux
      • include
      • [copy of RenderMan SDK's 'include' folder]
      • lib
      • libprman.so
    • osx
      • include
      • [copy of RenderMan SDK's 'include' folder]
      • lib
      • libprman.dylib
    • win
      • include
      • [copy of RenderMan SDK's 'include' folder]
      • lib
      • libprman.lib
  • 21.7
    • maya2017
      • [same as above]
    • maya2018
      • [same as above]

The top 'rendermanSDKs' directory can be called anything, but there must be an environment variabled named SHAVE_RMAN_SDKS which points to it.

The version numbers shown above are just examples. Actual version numbers must match those in the supportedRManVersions.txt file for the versions of Maya for which you plan to build Shave.

Of the 'linux', 'osx' and 'win' branches, only those for your target platform need be present.

V-Ray

Support for ChaosGroup's V-Ray renderer and its Maya plug-in is controlled by the file 'vrayPlug/supportedVrayVersions.txt'. Comments at the top of that file explain its layout. There is also some special case handling in the following files which may have to be updated to support different versions of V-Ray:

  • utils/getg++vray.sh
  • utils/getVrayVSVersion.bat
  • vrayPlug/getVersionTag.sh
  • vrayPlug/mkwin.bat

The build scripts expect the header files and libraries from the required V-Ray SDKs be found in a directory tree having the following structure:

  • vraySDKs
  • 3.60.00
    • include
    • [copy of SDK's 'include' folder]
    • lib
    • linux
      • [copy of SDK's 'linux_x64/gcc-4.4' folder]
    • osx
      • [copy of SDK's 'mavericks_x64/gcc-4.2-cpp' folder]
    • win
      • vc11
      • [copy of SDK's 'win64/vc11' folder]
      • vc14
      • [copy of SDK's 'win64/vc14' folder]
  • 4.00.00
    • [same as above]

The top 'vraySDKs' directory can be called anything, but there must be an environment variabled named SHAVE_VRAY_SDKS which points to it.

The version numbers shown above are just examples. Actual version numbers must match those in the supportedVrayVersions.txt file for the versions of Maya for which you plan to build Shave.

Of the 'linux', 'osx' and 'win' branches, only those for your target platform need be present.

Linux

In the main directory is a file called 'mayaVersions.linux'. It describes all the combinations of Linux and gcc/g++ that can be used to build the Shave plugins for the various versions of Maya.

In general it uses the same build environments as suggested by the "Setting up your build environment" section of the Maya Developer Help documentation so it is recommended referring to those. That's particularly true of the environment for Maya 2018 builds on CentOS 6 as they require the presence of DTS.

The current development platform is CentOS 6.5 for Maya 2017 and 2018 builds.

Maya is expected to be installed in its default location under /usr/autodesk.

If the default gcc/g++ is the wrong version the build scripts will look in /opt/gccXXX/bin for executables named gccXXX and g++XXX, where 'XXX' is the gcc version number excluding periods (e.g. '4.4.7' -> 'g++447'). Failing that they will look in /usr/bin for executables named gcc-YY and g++-YY, where 'YY' are the first two parts of the version number, without the period (e.g. '4.4.7' -> 'g++-44').

Builds are initiated using the 'mklinux.csh' script, passing it a list of one or more Maya versions to build for. E.g:

./mklinux.csh 2017 2018

The list will be filtered against the configurations listed in mayaVersions.linux, looking for those which match the current system. If no Maya versions are passed to 'mklinux.csh' then it will try to build all the versions in mayaVersions.linux which have a 'y' in the 'Auto' column.

For each version the build will result in an RPM installer named:

shaveHaircut_Maya2018_0_64-9.6-15.x86_64.rpm

with '2018_0' varying according to the Maya version and '9.6-15' varying according to the Shave version.

MacOS/OS X

The Shave plugin for Maya 2017 is built using OS X 10.10.5 (Yosemite). The plugin for Maya 2018 is built using OS X 10.11.6 (El Capitan).

The Xcode/SDK versions used are as follows:

Maya 2017 - Xcode 6.1  SDK 10.10 
Maya 2018 - Xcode 7.3.1  SDK 10.11

If the default Xcode is not the correct version the build scripts will look in /Applications for 'XcodeXXX.app' where 'XXX' is the Xcode version number (e.g. /Applications/Xcode7.3.1.app).

Installers are created using PackageMaker.app, which must be located in one of the following directories:

/Applications
/Applications/Utilities
/Developer/Applications
/Developer/Applications/Utilities

The SplitForks utility is expected to be found in one of the following directories:

/usr/bin/
/Developer/Tools

It's not clear that SplitForks really is required so you can try building without it, but the build scripts will at least display a warning if they don't find it.

Builds are initiated using the 'mkosx.csh' script, passing it a list of Maya versions to build for. E.g:

./mkosx.csh 2017 2018

If no Maya versions are provided then all currently supported versions (a list hard-coded into mkosx.csh) will be built.

For each Maya version the result of the build will be a multipackage named:

shaveHaircut_Maya2018_0-9.6v5.mpkg

where '2018_0' will vary according to the Maya version and '9.6v15' will vary according to the Shave version.

Windows

Microsoft Windows 8.1 or 10 can be used to build for all versions of Maya.

Add an AUTODESK_LOCATION environment variable which points to the root directory where all the different versions of Maya are installed. By default that's C:\Program Files\Autodesk. If Maya installs are spread across multiple drives and/or directory trees then you can create a single directory which uses Windows softlinks to link to all of them.

The Shave plugin for Maya 2017 is built using Visual Studio/C++ 11.0 (2012) and the Maya 2018 plugin is built using Visual Studio/C++ 14.0 (2015). Code to support third party renderers sometimes requires different versions of Visual Studio/C++ so to be safe you should have all of the following installed:

Visual Studio/C++ 11.0 (2012) Visual Studio/C++ 14.0 (2015) Visual Studio/C++ 15.0 (2017)

For each version ensure that there is a VSxxxCOMNTOOLS environment variable defined, where 'xxx' is 110, 140 or 150, depending on the version. The variables should point to the Common\Tools directory for that version of Visual Studio. E.g:

VS100COMNTOOLS=C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\Tools\

The Visual Studio installers used to set up these variables for you but the 15.0/2017 installer does not so you'll need to add that one by hand. On my system it points to:

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\Tools\

For best results purge your PATH of all versions of Visual Studio/C++ and let the build scripts reference the correct versions directly.

For each version of Maya there is a corresponding batch file to build the plugin for it:

mkwin2017.bat
mkwin2018.bat

There is also mkwinall.bat which will build for all supported versions of Maya. The build scripts are primarily Window Batch files. They require that Command Extensions be enabled (which is the default these days).

NSIS 3.01 or newer, installed in its default location (c:\Program Files (x86)\NSIS), is required. This is the tool used to create installers for Windows.

The result of the build for a given version of Maya is an executable installer with a name of the form 'shave-9.6v15-Release-Maya2018.0.exe' where '9.6v15' will vary according to the Shave version and '2018.0' will vary according to the Maya version.

Licensing and Contributions

Your access to and use of Shave and A Haircut on GitHub is governed by the Unreal Engine End User License Agreement. If you don't agree to those terms, as amended from time to time, you are not permitted to access or use Shave and A Haircut.

We welcome any contributions to Shave and A Haircut development through pull requests on GitHub. Most of our active development is in the master branch, so we prefer to take pull requests there (particularly for new features). We try to make sure that all new code adheres to the Epic coding standards. All contributions are governed by the terms of the EULA.