An individual assignment of materials is only possible if they are no longer instances (==copies of a single object), but a freely processable mesh. For this you have to use the node `Realize Instances`. But first you would have to capture the index of the instance with `Capture Attribute` to be able to work with it further: [![enter image description here][1]][1] However, there are also situations where the objects should remain as instances. For this the following solution would fit, where you simply build a kind of switch at instantiation, where you decide which points should instantiate which objects: [![enter image description here][2]][2] [<img src="https://blend-exchange.com/embedImage.png?bid=AXBbaADY" />](https://blend-exchange.com/b/AXBbaADY/)<br><sub>*(Blender 3.1+)*</sub> *PS:* I don't know how you want to control the lights, but you could solve the animation for example with the help of the node `Scene Time`. Maybe the math node `Snap` will help you further on. [1]: https://i.sstatic.net/PoATZ.jpg [2]: https://i.sstatic.net/N16Eu.jpg