[Maya] Socket error creating command port

NOTE: This is a Maya issue that can happen with any renderer, including mental ray.

Like many other Maya users, I started getting this error when I tried to batch render:

// Error: line 1: Socket error creating command port SOLIDANGLE-PC:7835 (10048).

I checked the port 7835 with netstat, and that gave me a PID (process ID) of 109736

C:\Program Files\Autodesk\Maya2014\bin>netstat -ano | find "7835"
  TCP    XXX.XXX.XXX.XXX:7835              LISTENING       109736

But unfortunately, there didn’t seem to be any process with that PID, so I couldn’t kill it to free up the port. tasklist | find “109736” came up empty; there was no such PID in the Task Manager or Process Explorer; and TCP View said that PID was non-existent.
I was resigned to having to reboot my machine until I saw this. Then I used Process Explorer to find the process that was referencing the “non-existent” PID, and when I killed that process, I could batch render again from Maya.

Convert texture maps to .tx

When you’re rendering with Arnold, convert your texture maps to .tx files with maketx. Always 🙂

.tx textures are better because they are:

  • Tiled (usually the tiles are 64×64 pixels).

    Arnold loads one tile at a time, as needed, rather than loading the entire texture map in memory. So textures are loaded faster, because Arnold loads only what it needs to render the image.

    Arnold uses a texture cache system to efficiently manage texture memory usage: only the most recently used tiles are kept in memory. You can have hundreds, or even thousands, of 4k and 8k images, and Arnold will never use more runtime memory than the user-specified max cache size.

  • Mip-mapped.

    Mip-mapped textures are anti-aliased, even at low AA sample settings.

If you don’t convert your texture maps with maketx, the default Arnold behavior is to auto-tile and auto-map your textures for you, but this is very inefficient because it is done once for every rendered frame, rather than one-time-only with maketx.