This is an outline to render single frames as tiles with Softimage - Mental Ray.  IF you cannot use the default RR tiling for some reason.

In this example we are using the frame number of the job to specify the tile number.

This means you send a job with 30 frames and you get 30 frames, but each frame contains one tile only.


NOTE: This example works only if a tile has a render time higher than 2 minutes! 



  1. Dublicate the file [RR]\render_apps\_config\3D01__Softimage__2011.cfg and name it    3D01__Softimage__2011_mytile.cfg
  2. Dublicate the file [RR]\render_apps\scripts\kso_softimage.py and name it kso_softimage_mytile.py
  3. Edit the file 3D01__Softimage__2011_mytile.cfg:
    • Change RendererName=  to RendererName= myTile - Mental Ray
    • Remove all lines that start with KSO_   (KSO_Type=, KSO_Start=, ....) as KSO works only for rendering multiple frames, but we are using the frame number for tiles.
    • Change <RR_DIR>render_apps/scripts/kso_softimage.py in to <RR_DIR>render_apps/scripts/kso_softimage_mytile.py
    • Remove the line FlagsRegion= 
    • Add two new lines   SeqDivMIN=0~1   and SeqDivMAX=0~1 as a client should render only one frame with the specific tile, not multiple frames with the same tile.

  1. Edit the file kso_softimage_mytile.py:
    • Search for the block that does the region/tile settings. It starts with   if ((arg.RegionX1!= None) and (len(str(arg.RegionX1))>0))
      Add this block after that block:
      xsi.SetValue(str(arg.Pass)+".CropWindowEnabled",True)
      xsi.SetValue(str(arg.Pass)+".SelectionTracking",False)
      xsi.SetValue(str(arg.Pass)+".CropWindowOffsetY",0)
      xsi.SetValue(str(arg.Pass)+".CropWindowHeight",9999)

      numberOfTiles=30
      imagewith= xsi.GetValue("Passes.RenderOptions.ImageWidth")
      if (xsi.GetValue(str(arg.Pass)+".ImageFormatOverride")):
          imagewith= xsi.GetValue(str(arg.Pass)+".ImageWidth")
      tile_ID= int(arg.FrStart)

      tileWidth=imagewith/numberOfTiles
      xsi.SetValue(str(arg.Pass)+".CropWindowOffsetX", tileWidth*(tile_ID-1) )
      xsi.SetValue(str(arg.Pass)+".CropWindowWidth", tileWidth+2  )
  • Use the submission plugin in Softimage as you always do.
    Select your new renderer from the lower left dropbox.
    Set the frame range to 1-30.





Further optimizations:

The above example requires you to submit the sequence 1-30.  and it will always render 30 tiles.
You could change the render config to support a dynamic number of tiles.

  1. Add    FrTotal: <TotalSeqEnd> ,   to the render config.
  2. Add    self.FrTotal=getParam(allArgList,"FrTotal")  to the render script.
  3. Replace the line numberOfTiles=30   with   numberOfTiles=int(self.FrTotal).

If you submit 1-40, then you get 40 tiles, if you submit 1-20, you get 20 tiles.