Recommended PC Configuration for CG Artists – May 2011

Back to blogging again! I had moved in to a new apartment and my ISP turned out to be too inefficient with the shifting process, making me wait for more that 20 days to get the connection shifted to my new place. And on the professional side, I was pretty much occupied with the current feature productions happening in the studio.

But in the mean time, I got a chance to dig in to the latest computer hardware out there, to help out my friend with a new configuration for home. My search stumbled across a few components which I felt would do justice to the kind of work we deal with, on a day to day basis.

Hence thought of sharing the configuration with you in case some of you find it useful. So here it goes…

Intel Core i7 2600K Sandy Bridge 3.4GHz approx 16500 INR

Asus P8P67 PRO approx 12600 INR

Gskill Sandy Bridge 16GB 1600 DDR3 approx 10000 INR

Corsair 1000HX approx 15000 INR

Cooler Master CM690 II Advanced approx 5500 INR

2 x Dell Professional 2311H 23-inch widescreen monitor 26000 INR

MSI N580GTX  Lightning approx 30000 INR

2 x WD 1TB 6Gbps SATA3 approx 9400 INR

Corsair CSSD F80GBP2 BRKT 80GB SSD force series approx 10000 INR

Total approx 1,34,700 INR

Disclaimer: Please note that the configuration suggested is based on personal experience and does not guarantee in anyways high performance for all kinds of applications available on the market. The individual user experience may vary depending on the resources demanded by various applications under different working environments. The approximate prices listed are based on market study and may vary depending on different factors and hence are not supposed to considered as final price listings.

Advertisements

Setting MARI_CACHE Locations outside MARI

The MARI_CACHE environment variable can be used to specify the cache location from outside Mari. This can be one or several directories. If this variable is not set Mari prompts you where to store the cache files when you first launch it

I had selected the cache location from the user interface after starting up Mari. But later I planned to use another location and hence deleted the directory. The next time I tried starting Mari, I was welcomed with a message

/usr/local/bin/mari: line 35: 13275 Aborted (core dumped) $currentPath/bin/MriBin $@ &>${mariLog}

The MariLog.txt clearly indicated the crash was happening due to the missing file path. Since the configuration was saved in the first startup instance, setting the environment variable also didn’t seemed to help me run Mari on my user account.

Debug : [ MriApplication.cpp: 352] : Cache Location ‘/mariCache’ not exist
MriBin: MriDataBlockManager.cpp:233: bool MriDataBlockManager::setup(const QStringList&, qint64, int): Assertion `false’ failed.
Cannot Create cache root at /mariCache

The workaround is to delete the CacheLocations.ini file which saved under the directory /home/user/.config/TheFoundry . Or you can even create a new folder and point the path to your new directory

[CacheRoots]
1Path=/scratch/cache
size=1

Installing Foundry Mari on openSUSE 11.3

MARI is a creative texture-painting tool that can handle extreme projects. MARI was developed at Weta Digital to handle the massively complex, highly detailed look development work demanded of the texture department by projects such as DISTRICT 9, THE LOVELY BONES, and AVATAR.

This is how the installation directory looks like. You can add symlink to the mari* shell script in the bin folder if you want. In case you are not executing the script from the same directory, you need to make slight modification to the script to make it accessible.

 #!/bin/bash
 # This version is intended to launch Mari from the directory this
 # script is located in, does not require Mari to be installed

#export presentScriptPath=`dirname $0`
 export presentScriptPath="/usr/local/Mari1.0v4"
 export currentPath=`cd $presentScriptPath; pwd`
 export binDir=$currentPath"/bin/"
 export PATH=${PATH}:$binDir
 export mariLog=$MARI_LOG_FILE
 if [ "$mariLog" == "" ] ; then
 export mariLog=/scratch/logs/MariLog.txt
 fi

# Look for options
 for p in "$@"
 do
 case "$p" in
 "--verbose")
 # turn off the log output
 export mariLog=
 ;;
 *)
 ;;
 esac
 done

if [ "$mariLog" == "" ] ; then
 $currentPath/bin/MriBin $@
 else
 $currentPath/bin/MriBin $@ &> ${mariLog}
 fi
 

I have commented out the line

 export presentScriptPath=`dirname $0`
 

and replaced with

 export presentScriptPath="/usr/local/Mari1.0v4"
 

which is the installation directory for Mari

Disclaimer: Please support the developers as I do not in any way support piracy. Go out and purchase the softwares if you like them.

Setting up python2.5 for Massive Prime

Python can be used in Massive by typing commands directly in the textport and from scripts. The textport is accessed from the Options menu. Scripts can be run from the textport using the execfile() function and from the commandline using the -script commandline option.

Three versions of python are supported by massive ver<4.0, Python1.5, Python2.2, and Python2.5. For ver<4.0 Python2.5 is selected by default while starting massive. You can  specify a particular version of Python by entering one of the following in the textport

 #!pyscript15
 #!pyscript22
 #!pyscript25
 

openSUSE 11.3 comes with pre-installed Python2.6.5. Hence in case you want to use Python2.5 with massive you need to install Python2.5 can be downloaded from here. Massive will need the shared library for python to be in the $PYTHONHOME in order to support the specific python version. If you are building python yourself, you can get that done by specifying

./configure   –enable-shared   –prefix=/usr

I missed that step while building and I didn’t wanted to build it all over again. Instead found a workaround for the same. Since I had Foundry Nuke installed on my machine, which comes with a shared library for Python2.5 (libpython2.5.so.1.0), it was just a matter of creating a symlink to the shared library path on /usr/lib64 for libpython2.5.so.1.0

ln -s   /usr/local/nukeVersion/libpython2.5.so.1.0   libpython.2.5.so.1.0

If these operations have been successful, you will be able to access Python2.5 modules within massive.Else you will be getting an error echoed in the console like this

libpython2.5.so.1.0: cannot open shared object file: No such file or directory

Installing Massive Prime on openSUSE 11.3

Massive is the premier simulation and visualization solution system for generating and visualizing realistic crowd behaviors and autonomous agent driven animation for a variety of industries, including film, games, television, architecture, transportation, engineering, and robotics. Using Massive, an animator, engineer or robot developer designs characters with a set of actions and reactions to what is going on around them.

The installation manual that comes along with massive is sufficient for a noob to get massive running on your machine. But if you are planning to run massive on a Linux machine, you better go through the Troubleshooting section too. Even after getting the mhost server running you may still get an error “could not open connection” while executing massive from the shell. If u are using Fedora, you will be happy to see the following section under the Troubleshooting section

I am on Fedora and get a “could not open connection” error message when trying to start Massive.

The “could not open connection” error you’re getting is because the X server on Fedora has TCP connections disabled by default. Massive is trying to connect to the X server over TCP and failing. If you add the following line to the [security] section of your /etc/X11/gdm/gdm.conf it should remedy the problem.

DisallowTCP=false

But under openSUSE running on KDE, you wont find a gdm installation at all. Hence in order to enable TCP/IP sockets for X11, you need to follow the instructions below.

  • Set DISPLAYMANAGER_XSERVER_TCP_PORT_6000_OPEN=”yes” in the /etc/sysconfig/displaymanager file
  • Running /sbin/SuSEconfig to propagate that setting
  • Restart your display manager through /usr/sbin/rcxdm restart

Disclaimer: Please support the developers as I do not in any way support piracy. Go out and purchase the softwares if you like them.

File Handling in MEL – Part2


Problem:
To perform a set of file operations including creation, deletion and listing of files and directories
Solution:

Creating  folders using sysFile command

 sysFile -makeDir "/home/user/mayaFolder"; //unix
 sysFile -makeDir "C:/Documents and Settings/MayaFolder"; //windows
 

Get the list of mel scripts in the  maya scripts directory

 getFileList -folder "/home/user/maya/scripts" -filespec "*.mel";
 

Stripping a file path in to directory name and base name.

 $filePath = "/home/user/maya/2011-x64/scripts/userSetup.mel";
 $dirName = dirname($filePath);
 $baseName = basename($filePath , "/");
 

Commands:
sysFile, dirname, basename
Discussion:
The sysFile command can be used to create, delete or rename files and directories from within Maya. The dirname and basename commands can be used to strip a file path in to the absolute path and filename. Using a combination of these three commands its possible to perform a variety of OS level operations from within the Maya workspace itself.

File Handling in MEL – Part1

In this tutorial, we will be covering the file handling functionality provided by MEL.
Problem:
Writing out to and reading from file formats other than maya ascii and binary.
Solution:
Write the file location of texture maps used in a scene

 $fileId = `fopen "/home/user/textureList.txt" "w"`;
 $fileNodes = `ls -type "file"`;
 if( size($fileNodes)==0 ) {
 fprint $fileHandle "No File Nodes found in scene";
 }
 else {
 for ($each in `ls -type "file"`) {
 fprint $fileHandle (getAttr ($each + ".fileTextureName") + "n");
 }
 }
 fclose $fileHandle;
 

Read the contents of the written file and print the contents of each line.

 $fileHandle = `fopen "/home/user/textureList.txt" "r"`;
 while (! `feof $fileHandle`) {
 $eachLine = `fgetline $fileHandle`;
 print $eachLine;
 }
 fclose $fileHandle;
 


Commands:

fopen,fprint,fgetline,fclose,getAttr

Discussion:

The first code block writes the file paths of all the texture maps in the scene to a text file names textureList.txt. The fopen command returns a file identifier which can be used to write in to or read from the file specified in the command.An additional string can also be mentioned to denote whether to open the file for read,write or append operation(r ,w or a). Data can be written to the file using fprint command. Its advised to close the file handle once the read, write or append operation is finished. This can be done using the command fclose.

Data can be read by opening the file handle in “r” mode. The fgetline command reads the contents of the file line by line, which is then printed on to the screen.