Mapping LEDS in 3D space

Icosa_LED_SOP.13.toe (11.4 KB)

I have a icosahedron infinity mirror that I’ve built and I’m trying to map the leds in TD so I can do some previs and I’m having some issues.

I’ve built my network based on different tidbits from these two videos:
Intro to TouchDesigner for Pixel Mapping - Ben Voigt and Markus Heckmann
LED Sculpture Content Creation Pipeline in TouchDesigner

So based on those I’m just trying to push one line of white through my pixels so I can make sure it’s all working properly. I’d like to illuminate all the pixels on a horizontal plane and move up through my 3d object (there are 23 “sets” of leds from the bottom of the icosahedron to the top)

I have built my 3d in blender and brought individual line segments in with the File In SOP and then merged them together. I very tediously went through and made sure that each pixel corresponds to the proper pixel under in the “string” inside the icosahedron. It doesn’t have a euler path so it’s not all a straight line.

I can confirm that my leds are lighting up in real life exactly the same way as they are in the previs (geo1)

In order to test this I have been moving a horizontal white line up and down but in the previs (and in my leds) it seems to jump around in order.

I feel like I am really close but I’m sure what I need to do to get this working properly.

Just found this as well:

Material Mapping over geometry

And I’m able to utilize the texture sop with exporting UVs and make a second instance of my previs (geo2) illuminate properly using a phong material tied to my visuals.

However, I’m unsure of how to get that rgb data out to send in a string via a DAT

Icosa_LED_SOP.15.toe (12.5 KB)

Back again…

I had a thought last night that it had something to do with positioning in 3d space so I moved the 3d object around. The y direction seemed to affect it with respect to where the colors are showing up in my original previs model.

It still looked like it was repeating the colors from the ramp twice on my shape, so I thought maybe it had to do with scale. I shrunk it down (almost 50%) and now I only get one instance of my ramp moving through the shape. So it looks like it should, still need to test on my actual leds.

But, can someone explain to me why this is?

Hi @jbillauer,

unfortunately the geometries are missing from your file. Can you post your project as a zip including these assets?

When reading values from a texture using a TOP to CHOP, the incoming uv reference values are interpreted as normalized 0-1. So if the geometry extends in size beyond the 0-1 range then the texture will be read under consideration of the parameter settings on the TOP To CHOPs “Extend” page. When set to cycle (default), the texture will be repeated for texture coordinates outside the 0-1 range.

This would nicely explain why scaling the geometry down fixes it for you.

cheers
Markus

My bad, I’ve included the .zip with the td file and the objs in the same folder.

Ok, that does make sense. Thanks for the explanation!

I’ve been able to achieve the look I want in my actual LEDs by scaling down my shape. However, moving forward, what is the best practice? It feels like utilizing the texture sop gives more accurate color locations but I was unable to figure out how to send the phong mat data out via dmx.

Icosahedron 3D to TD LED.zip (241.3 KB)

Hi @jbillauer,

your geometry sits outside the 0-1 range. It’s size is 1.7 x 1.8 x 1.7 and center position is -3.9, 0.7, 2.5 - To use the coordinates for a lookup into a texture, you will want them to be normalized.

To make this simple, create a Box SOP and set its Anchor parameters to 0 moving the origin of the box to 0,0,0. Now append a Transform SOP to your original geometry and use the Box SOP as the second input to the Transform. The Transform SOP allows on it’s Post parameter page to translate it to the “Reference Input” as well as scale it to the reference Input.

The Result will be all points of your geometry sitting inside the 0-1 range for the coordinates suitable to be used in a texture lookup.

Hope this helps
Markus