This is a scene I used in a project - animation, unnecessary geometry etc. have been removed:
http://www.digital-ray.dk/community/3D/XSI_WALL.rarSome notes:Since the scene originates from a project, it might be a bit too complicated for your needs. It should be easy to simplify once you dig into it and understand how the ICE tree works.
MatrixBoard_Grid:Used to build the wall and to "project" the UV onto the wall (important: pay attention to the bricks material). I'm using point shape, but you can also use instanced geometry. The needed nodes are there.
Trigger_*:All items with "Trigger_" in front of them are used to trigger different states in the ICE tree.
If you chose to add another trigger object, then make sure to place it in the corresponding group. My ICE tree reads the triggers from groups. You aren't limited to primitives. Use a spaceship if you must
Trigger_tB_*:Turns front to back. Use these first.
Trigger_tF_*:Turns backside to front. Use these after tB objects.
"V" and "H" in object names:Vertical and horizontal rotations - I did not have time to figure out how to rotate in both directions using just a single item.
Trigger_tB_V_Cube_TriggerChanges the state, so any brick affected thinks it is rotated. Good for big clean wipes after random number of turns on random number of bricks (which I did a lot of in my project).
There are few more objects - play with them and see what they do. Feel free to ask if you need to.
I *could* have used a single object for both back and front turns, but chose to do it this way as it seemed more reliable and flexible. My subframe sampling is set to 4. This means tiny bit slower playback, but again, it' more reliable.
Mixing vertical and horizontal rotations will cause headache if only some bricks are turned. The texture of the backside needs to reflect how the bricks were turned and this can become trivial work. I ended up rotating vertically most of the time because of this.
Instances:Create/import your geometry and drag it into the ICE tree. I already have a Instance Shape node at the top of the tree. Read the geometry from there and connect it to Set Particle Shape.
I noticed some issues when working with instances - it's been a while so I do not remember them well. Using point shape was sufficient enough for me so I didn't give instancing much thought (tight deadlines, meh). See how it works for you.
I have simulation caching set up for better playback and rendering. You might need to change paths, but other than that just hide the true point cloud object (MatrixBoard_PB) and unhide MatrixBoard_PB_CACHED when you want to preview or render.
When you open the scene and have a look at the ICE tree, you'll see this:

Each white line basically represents a state cycle.
I hope your can figure out how my scene is set up. It was never intended to be shared

My setup was build by bits and pieces found from different pages, as I also mentioned in my earlier reply. It saddens me I can't credit the original masterminds - particularly regarding the UV thing.
Ps. the texture will not look correct in the viewport.