Pixel Mapping ArtNet output help

Hello all. I am trying to wrap my head around pixel mapping through artNET. I have 2 LED matrix nets that I made that are 12x40 pixels.
There are a few issues I am having with my setup.
First, the output is split and shows the image on the top half and bottom half, rather than showing the entire image. I know it has to do with the scale/rotate settings I have, but do not understand where to make the changes to make it one continuous image.
Second, instead of 2 separate 12x40 matrices, I have it set as a 24x40 matrix. I need the first 480 pixels to be on universe 1-3 and pixel 481-960 to be universe 4-6. I may be able to set that in my artnet controller, but was wondering if I could do it through Touchdesigner. I had an idea to put a Math operator to change pixels 481-960 to start at 1537 (the start of universe 4), but not sure if this will work or where to put it.
Any insight would be greatly appreciated.
LED Pixel Map_v0.9.toe (12.3 KB)

The reason the image is showing split between the top and bottom half is that your sampling points are outside the zero to one range. You need to shrink down your SOP so that all points fit between positive zero and one on the X and Y axes. You can see that the CHOP data that is going into the TOPto CHOP has points very far outside the zero to one range, and the Y values go into both negative and positivem but the “UV units” parameter in the “Crop” page of parameters is set to expect UV coordinates in zero to one range.

As for splitting up to go to the different universes, it might be easier to just use more Shuffle CHOPs in “Split N Samples” modeinstead of the Pattern CHOP and Lookup CHOP (which I’m assuming you got from the snippets). Start with splitting the one long channel at 480x3 samples, then split again again at 170x3 samples since each pixel is 3 samples (RGB)

The Math CHOP can’t shift the position of pixels around, but then you shouldn’t need to do anything like that after using shuffle CHOPs.

Like Peeet said: make your geometry for pixelmapping between 0 and 1 and use shuffle instead of lookup. Here is an example.
LED Pixel Map_v0.10.toe (11.9 KB)

Thank you. They go negative and positive because the pixels snake up and down. I was following the turorial from Ben Voigt and Markus Heckmann and that’s how they showed to make the assignments correct. Looks like I can set my universes and pixel count on my controller, so I will not have to split it on the project. Is there any way to improve performance on this project? I am trying to do some ArtNet pixel controlling as well as projection out and once I have these engaged my fps drops to like 15 from 60.

No I don’t think you understand - It’s fine if the RELATIVE location of each pixel “goes negative” for one strand and “goes positive” for another, but the ABSOLUTE location of each pixel needs to end up within the zero to one range.

So you can have your pixels snake up and down, just have them do that within the XY space of zero to one. This can just be a transform SOP at the end that shrinks everything down so that it’s smaller than one unit, and then shifts it so it doesn’t go outside of zero to one in the X and Y directions.

Also, just FYI, your pixel lines are not actually zig zagging / snaking in your file, so you don’t actually have that set up correctly if that’s how it is in real life.

image

And I’m not sure why your file is running slowly for you. It runs fine at 60fps for me… What kind of machine are you trying to run this on?

Thank you. I got it to work on the output correctly. I am running an i7-12700 and a 3080ti. I think I just had too many things open perhaps? I am working on a video switcher as an input for this and I didn’t have it setup right so the cook time was crazy. I restarted and it’s back up to 60 fps. Thank you again for your help

Yeah that’s much beefier than my setup.

One thing it might be: if you are running multiple TouchDesigner processes (aka one for artnet and one for projection) then Windows will heavily bias it’s GPU to whichever one “has focus”. So if you can control everything remotely without having to touch the TD windows (like by using MIDI controller) then you can get both running in perform mode and then click on the Windows Taskbar to make Explorer.exe have the “focus” and then Windows will (should) evenly divide up the GPU resources to all other processes.

That’s great to know. I plan on midi controlling it all so that seems to be the best solution. Thanks for the insight

LED Pixel Map_v0.11.toe (12.0 KB)
It’s not a problem if it goes up and down, you just have to adjust your geometry that you use for pixel mapping. It’s just based on the pixel numbers.