Simulating LED strips and reflections

I’m working on an installation proposal that uses LED strips driven by animations in TD. The LED strips won’t be visible, but reflecting off walls. I’d like to simulate this by modeling a room and plugging in some of the pixel-mapped LED animations I’m designing in TouchDesigner.

My thinking is, I create a piece of geometry with a reflective material, and light emitting surfaces onto which I can map these changing color animations. Ideally I could, for example, just map a Ramp TOP directly into a Light COMP. Experimenting with this isn’t yielding anything (closest I’ve gotten is exporting the Ramp TOP to the Projector Map param in the Light but it’s still just a point source that shows up on reflection on the “wall” surface – even opening up the Light comp itself and expanding the geometry in there).

If this isn’t really possible, I guess I would instance a bunch of spot Light COMPs in a row and then somehow distribute the Ramp TOP to their color/dimmer params? How would you go about this?

I’m pretty new to using TD for anything but a static light with simple geometry so any nudge in the right direction is appreciated!

What you’re looking for unfortunately is very hard to do in realtime computer graphics. I say this because I’ve been searching for a way to do what you describe for years and I do a lot of previz for animated LED strip installs.

The terminology (in realtime rendering / game engine land) for what you are describing is sort of like global illumination or diffuse reflection maybe, but the term “reflections” in realtime rendering are usually super shiny mirrors (think water or shiny surfaces) and almost never involve the kind of diffuse reflected lighting you are looking for - and one of TouchDesigner’s weaknesses is that it can’t even really do regular reflections very well. You almost have to implement it yourself by doubling your geometry across the “plane” of reflection and putting a mostly transparent surface with a texture where said plane is.

Unreal Engine can do really good diffuse lighting like this - but only for static, non-animated light sources. As soon as you want to have your virtual LED strip animate in Unreal Engine, it will no longer contribute to the “global illumination” of the scene as all of that is “baked” into the scene. The LED strip will still glow brightly and cause a light bloom post-effect to show up in the lens of the virtual camera in Unreal Engine, but it won’t light up surfaces around it. You could try to use reflections and then really crank up the roughness variable of the reflective surface, but it will still behave like a reflection as you move around and make the material look like a very specific type of metal that you’re probably not going for. I kinda got this working for one pre-viz project in unreal engine getting data from TouchDesigner, but it definitely did NOT look like what it would in real-life. It did look excessively cool though:

You might be able to use the mehotd you described where you use a ramp as part of the texture to “fake” the emissive light bleed onto the surfaces around the LED strip. I did exactly that for another pre-viz project: created a full texture map of the LED strips AND the light bleed coming off of them on the surface around them using ramps and such. It kinda worked, but was still not quite right:

Lastly, you might be able to acheive what you’re going for exactly ironically, back in TouchDesigner. Lucas Morgan actually did figure out a technique called “deferred rendering” that does a good job approximating realtime global illumination, and he implemented in in TouchDesigner in his GeoPix project: https://github.com/EnviralDesign/GeoPix

It is open source, but you might have to create your whole system in GeoPix to acheive what you’re going for which, if the downloads from that GitHub are still working properly, you might be able to do (although in an older version of TD)

Either way, if you do figure this out, let me know, I would love to have a good version of this working for the projects I work on. Good luck!