Scan CHOP & Etherdream CHOP - Behavior questions (Lasers)

I’ve been working on a laser system within touch, and I’m struggling a bit to get logically consistent behavior. I’ve read the 2008 paper ‘Accurate and Efficient Drawing Method for Laser Projection’ (Abderyim/Halabi/Fujimoto/Chiba), and am starting to implement the Eulerian graph optimization method as well as the angle based method highlighted in that paper.

However, the wiki for the scan & etherdream chops isn’t fully completed, and I have questions on the specific behavior of some of the options.

Question - Scan CHOP - Blanking Count
Is this blanking before each primitive or each point?

Question - Scan CHOP
‘Vertex Repeat’ & ‘limit step size’ only seem to activate when ‘vertex order’ is activated, though maybe it just looks that way with the sop data I’m passing in. Is this the intended functionality?

Question - Etherdream CHOP
On the wiki page, there’s the following paragraph - “The maxrate column of the EtherDream DAT indicates the maximum number of samples per second that can be sent to the EtherDream device, though maxrate is the maximum number of steps that the stepper motors of lasers can take per-second. Large changes in values from sample-to-sample will be smoothed due to this limitation.” What are the specifics of this smoothing? This could potentially undo optimizations done in the scan chop or earlier in the chain.

Bug - Scan CHOP
I’ve found that frequently the SOPs upstream of the scan chop have visual artifacts where in the SOP viewer there’s faint blue lines & points that jump around very quickly, which correspond to where in the SOP the scan chop looking at. No idea what’s going on there, but it doesn’t seem to affect the data.

RFE - Scan CHOP
There’s currently not a good way for me to understand what point modifications are being made by the scan chop for debugging, perhaps just an info channel with number of points after blanking & vertex repeat would be easy to implement? That channel could also feed into optimizations before the scan chop to allow for dynamic modification of point generation before optimization, based on output after modification.

Hello.
Good questions.
I’ll answer below and update the wiki as well:
derivative.ca/wiki099/index … =Scan_CHOP

Blanking Count
In the case of SOP input, the number of black/off positions to insert between geometry primitives.
In the case of TOP input, the number of black/off positions to insert between full raster scans.
Color output must be enabled.

Limit Step Size - Breakup long x,y jumps into several smaller incremental jumps.
Step Size - The distance each x,y can change when above option enabled.
Vertex Repeat - Repeat each vertex of the each primitive multiple times.
Camera - Project the geometry onto a 2D plane from this camera, otherwise, only the original x,y components of the geometry are used.

Etherdream CHOP:
(the thing to clarify is the smoothing is a hardware effect of moving a mass quickly, not a software implementatin):

The maxrate column of the EtherDream DAT indicates the maximum number of samples per second that can be sent to the EtherDream device, though in practice, most lasers are reflected into position by a set of mechanical reflectors, with their own mechanical characteristics. As a result, attempting to quickly scan a square over a large area too quickly, for example, may result in a very curved corners as the physical components lag behind their target positions.

Bug - Scan CHOP:
Sounds like you may be dropping frames from time to time.
Place down a perform CHOP and trail CHOP to see if you’re getting steady frame cooks,
or if it occasionally drops some.
Monitor the queue size from the EtherDream CHOP to make sure it never empties,
nor does it overflow.

RFE -
Outside of looking at the resulting CHOP channels themselves, one thing I do is use a Limit SOP, to view the output from the Scan CHOP.
Just point it to the Scan CHOP, and set the X,Y,R,G,B channel fields.

Hope that helps,
Rob.

Thanks for the updated info Rob!

So once I aligned the exact number of points going into the scan with the length of the scan, set the queue time of the etherdream to the same number of samples, kept vertex order enabled, but then shut off blanking/vertex repeat/vertex min step, I got the 1 to 1 output I was looking for. Note - Since my scan rate is 40k, any fps (60/120/240/480) divides unevenly, hence the length won’t be an even divisor, so the length of the actual chop will fluctuate with time slicing every other frame (for example, 60fps fluctuates between 666 and 667 frames, easy to test by dropping down a scan with 40k scan rate + input). Would this give me any conceivable problems or slow downs, especially in relation to the queue time only being able to be set at exactly 666 or 667 samples?

I’m trying to take advantage of the absolute speed of the response of the laser vs dmx lights. How are the transmissions of the frames related to the queue time? Does a buffer fill that’s the equivalent of the queue length, and then it sends a packet once it’s full? Or is there a more complex or higher frequency rate of packet transmission? Since 667 points is equivalent to a medium-small ilda frame, everything seems to line up rather nicely. However, I would like to send hot beams at an even faster rate to hit latencies low enough for images correlating to 1/64 or 1/128 notes and shorter. I can run the project at 480 fps no sweat, but then the ilda output starts giving unexpected results. My guess right now is that the laser/etherdream can’t handle streaming chunks of the same ilda frame on the fly - for example, 480 fps gives 83.3 points per timeslice, so if the etherdream is set to 84 sample queue time but the scan input is greater than 84 points, a single scene would be split up into multiple transmissions which seems to be a problem…

Am I simply at the point where I should be controlling directly over audio/analog signal and avoiding the point/ilda frame system all together? I know Robert Henke’s Lumiere (a primary inspiration) was using simple audio interfaces to directly control his 4x 90k projector setup…

PS - for anyone using an etherdream, use a dedicated network and adapter! I was getting ‘random’ dropouts which I eventually realized they were strongly correlated with me opening snapchat and it refreshing data over wifi in the background on the same network :open_mouth:

Hey everyone.
Cant find batter discussion to ask this questions.
Сan someone tells me is it possible to create fade between two colors for one line? via helios or eather dream chop?

And one more question. Is it possible to do mapping (like stoner for ‘top’) if I am using ‘sop’ with scan chop? For example to merge 2 lasers.

I will be grateful for any help