Using ICE to do UV remapping on instances


I was playing around with Softimage, trying to set up a puzzle:
uvremap_puzzle
At first, I was using actual geometry and snapping to put together the puzzle, but then (after watching a Cinema4D tutorial that used the Cloner to assemble the pieces) I decided to use ICE to position the puzzle pieces. Halfway through that, I realized that the texturing was going to be a problem. There doesn’t seem to be an easy way to apply a texture to multiple ICE instances, and then make the texture stick when the instances fly away.

After trying a bunch of stuff (and crashing a lot), I took a look at the UV Remap parameters on the Image node:
uvremap_example

Then I created a 8×8 grid of 64 instances, and put all the possible min/max values in an array:
uvremap_show_values
If you look at the point IDs, and the array, the pattern is pretty obvious, and it allows you to use modulo and integer division to index into the array and get the right min/max values for each instance.

Here it is in ICE:
uvremap_ice_tree

Finally, the shader tree that gets the UV remap values and plugs them into the Image node:
uvremap_shader_tree