Tile Assembler - Assemble Custom Tile Jobs

Hi,
Feature Request!

Something that would be most useful (and I’ve been asked about several times internally!) is the ability to run a tile assembler job BUT with an incomplete set of tiles, thereby allowing an artist to run a tile network render job but only render the tiles they ‘really’ need and get them stitched together correctly.
Looking at the present Tile Assembler STDOUT, ALL the tiles are checked that they exist before attempting to stitch, so I thinking of something like the following in the future:

  1. Ignore if some of the tiles are missing. Perhaps have an override facility for custom tile jobs? Do you really need to know if some of the tile are missing in this new setup below? [Just skip…if not present…type of thing]
  2. Taking any 1 tile in the ‘potential’ set, you could workout using the “tile” naming convention the number of tiles that ‘might’ be present in that directory path, what size the overall image should be when constructed and because ALL tiles in Deadline are presently, always the same size, then you can calculate the exact x,y position of each tile within the final assembled image.
  3. Again, any overlapping pixels / cropping could be handled by the options input at tile assembly job submission time and backwards calculated to ensure they are positioned/cropped correctly.
  4. It would make sense for the ‘intentionally’ missing tiles to result in just an alphed out / transparent tile areas within the final image to make comp’ing / masking in Photoshop/Nuke easy.
  5. Finally, for the icing on the cake, compile if for x64bit, pixel-by-pixel level (which I think it already does…?) for better memory management and also make it multi-threaded so its super quick!

However, would multi-channel EXR’s play nice with this setup? An alternative to all this would be to write 2 scripts; a Photoshop JSX and a Nuke py script to carry out these operations within their respective packages, but I kind of like the idea of handling the whole process within Deadline as it off-loads it from a workstation/artist mistakes and can be automated via a job dependency just like the 3dsMax - Tile Assembly Job dependency system presently works.

Just to take this to its ultimate silly level, you could then look at building a basic 2D tracker within SMTD during submission, which scans a selected object/s for their 2D space within the camera view, works out how many tiles are needed to fully cover this selected object/s area (you could let the artist decide what the potential default tile size should be) within the camera view for that particular frame and then submit a custom 3D render & tile job for that frame and then move onto the next frame in the sequence. The Tile Assembler would then assemble the custom tiles for each frame after rendering.

Of course, this particular setup would work better for simple camera moves, where the objects in the scene don’t move about too much, OR where the objects are always in one particular area of the frame as the camera moves around.
Right, well if you could get this all developed by the time I get back from lunch that would be great! :wink:

Thanks,
Mike

Hi Mike,

We’ll add the ability to assemble with missing tiles to the wish list. This would require an additional argument to specify the final size, because it’s not guaranteed that all tiles are the same size. There are cases where the tile count doesn’t divide evenly into the width and height, so some tiles might have more pixels than others.

We already have a 64 bit tile assembler for Linux and Windows, and it is done pixel by pixel, but we can add multithreading to the wish list as well.

The rest would be pretty ambitious, so feel free to get started on it when you have some time and send us the finished code so that we can release it and take all the credit for it. :laughing:

Cheers,

  • Ryan

Thanks Ryan.

Ah I see. Didn’t realise some of the tiles could be slightly out on size. Can we make sure this additional frame size argument makes it into the SMTD UI/Tiles Tab or at least, during 3dsmax-tile submission, this additional argument is submitted automatically based on [renderoutput] frame size?

Multi-threading would be most useful :slight_smile: I hate seeing my ‘other’ 11 cores (with hyperthreading 23!!) just sat there idle :wink:

Yeah, it would make sense to include this in SMTD, since it already has the option to render specific tiles.

Cheers,

  • Ryan