Or: how to fix the node “xgen_procedural” is not installed problem.
For example, suppose you want to render XGen hair in CINEMA 4D on macOS.
On Windows, run the MtoA installer with the flags /S /FORCE_UNINSTALL=1
MtoA-126.96.36.199-2018.exe /S /FORCE_UNINSTALL=1
You can use /D to specify a different install location.
On Linux, use the – – silent command line flags. Note the space between “- -” and “silent”.
sudo sh MtoA-188.8.131.52-linux-2017.run -- silent
The Linux installer will put MtoA in /opt/solidangle/mtoa/<maya version>. If you want to install in a different location, you can extract MtoA, and then set up your own script for installing MtoA.
On OSX, use the installer command:
sudo installer -pkg "MtoA-184.108.40.206-darwin-2017.pgk" -target /
Note that -target is a volume, not a folder.
In a previous post, I looked at how things could go wrong in the file ~/pymel.log wasn’t accessible. On Windows, this was fairly easy to track down using Process Monitor:
On Mac OS X, I had to use dtruss. For example, I ran this command to trace the syscalls of the Maya Render command:
sudo dtruss -f -t open_nocancel -n Render 2> /var/tmp/mtoarender.log
When the render job failed, I checked the log file, and found this line:
11668/0x35deb: open_nocancel("/Users/stephenblair/pymel.log\0", 0x601, 0x1B6) = -1 Err#13
One important gotcha: if you repeat the render, you won’t find any mention of pymel error in the dtruss output. My guess is that at that point, the Render command ends up going through the file system cache, so dtruss doesn’t see the attempt to find pymel.log.
Here’s a quick summary of the dtruss command I showed above:
- Use sudo to run dtruss, because it needs additional privileges.
- -f tells dtruss to follow any child processes (like mayabatch) launched by Render
- -t filters the trace for open_nocancel system calls
- -n tells dtruss to trace the process named “Render”
- 2> /var/tmp/mtoarender.log redirects the dtruss output to a file
In Yosemite, Apple removed support for environment variables in launchd.conf, so you need to find another way to set global, system-wide environment variables. For example, if you want solidangle_LICENSE to be automatically set, you could use a launchd plist.
Here’s an example plist that uses launchctl to set the solidangle_LICENSE environment variable.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
You’ll need to edit this plist and save it in /Library/LaunchDaemons. The file permissions and ownership should look like this:
-rw-r--r--@ 1 root wheel 661 Oct 22 13:52 com.solidangle.setenv.plist
Use sudo chmod to set the permissions, and sudo chown root:wheel to set the ownerships.
Then load the plist:
sudo launchctl load -w /Library/LaunchDaemons/com.solidangle.setenv.plist
And then restart your machine.
A quick walk through of how to run the MtoA installer on Mac OS X.
There are several ways you can do it.
- You can use Maya.env to set the solidangle_LICENSE environment variable.
In your Maya.env file, add this line:
where XXXX is the port number, and SERVER is the name or IP address of the computer.
Maya.env is located in your user Library. For example: /Users/steve/Library/Preferences/Autodesk/maya/2014.
By default, the Library folder is a hidden folder, so you may need to un-hide the Library folder.
- You can set solidangle_LICENSE as a system environment variable.
- Log in with an Administrator account and run this command to open a text editor.
sudo nano /etc/launchd.conf
- Add this line to /etc/launchd.conf:
setenv solidangle_LICENSE XXXX@SERVER
- Save the file and exit.
- Restart the Mac.
If you don’t want to restart your Mac just yet, you can try setting the environment variable like this (it will last until you restart your machine):
launchctl setenv solidangle_LICENSE XXXX@SERVER