Alternating pixels within a layer


Is there a way to control the DMD to alternate pixel illumination within a layer rather than having all desired pixels illuminated simultaneously?

For example, if I were to print a layer of the following 4 pixels, is there a way to illuminate pixels 1 and 4 for 2 seconds, then illuminate pixels 2 and 3 for 2 seconds? And do this all within the same layer?

Thanks for you help.


Try preprocessing grayscales. That would give you what you need without the need to change printer settings.I am using processing to do that.


Thanks for the response. Could you send me in the right direction on how I would do that?

#4 (65.3 KB)

The attached folder contains a code which may help get you started. I also include the generated pictures which will help you visualize what is being created. Other than generating grayscales manually (video mode allows for 32 grayscales, and pattern mode 64), you can look into antialiasing, blur, and noise, also available in processing.

This is an active area of research for @avindrolam and me, and right now we may not have answers for all the questions but should be able to help out


That will help a lot, thank you! I’ve seen a few of your posts around, are you mainly looking at the effects on resolution and fidelity? I’ve got some ideas about using something like this to alter the mechanical properties of the photopolymers.


Yes, I am looking at high fidelity 3D printing in order to be able to make 3D printed actuators. I have read papers where people have gone away from piston cylinder assemblies and made their actuators using soft materials. I would like to prove that we can 3D print piston-cylinder assemblies where the friction/leakage is similar to traditional manufacturing methods.

Sounds good. I haven’t been looking at the mechanical properties that much.


@brngrn11 - I read your example as more time related vs. light intensity.

If you are trying to expose blocks 1 and 4 first - with 2 sec exposure, then WITHOUT moving anything, turn on 2 and 3 for 2 seconds…well, that’s a bit different than managing grayscale.

Should this be what you are trying to achieve, I wonder if you can alternate between preventing the tray rotation and normal use using a layersettings.csv file.

To run off tray rotation - see here

to create a layersettings.csv file - see instructions here

I’m not sure if all the settings available via SSH are possible in a layer settings file. Probably not… would be nice though!

@OwenSmithyman @acostas


To add onto Scott’s suggestion, you’ll also need to set the layer height to zero or else it will move upward with each layer.

Only the settings listed under Print Settings (not Printer Settings) in Ember Print and Printer Settings.pdf (131.3 KB) can be changed in a per-layer settings file. The same is true for the printsettings file in a print.


Thanks for the suggestions, this is more what I’m trying to do and should be tearing into it a bit more within the next week. I’ll check back here and update if I can get it to do what I would like.


Were you able to work on this? Did it work?
I am having a similar thought (I think :wink: ). What I am considering is:

  1. Expose a layer as normal.
  2. Don’t lift, don’t rotate, don’t move anything!
  3. Expose a slice that has been modified to only expose a specified region (selectively over cure cure)

The POSSIBLE benefits would be:

  1. Fully cured internals without sacrificing resolution due to light bleed
  2. Warp / strain control

I suppose it might just be easier to modify the PNG files so that the areas of concern were given a much darker grayscale and then just increase the exposure time. But where’s the fun in that?


@brngrn11 Did you ever get this to work?

This article shows the technique in use to reduce the size of a micro fluidic channel without the light bleed effect collapsing the slot.

Mind you this was a custom rig with custom programming using Python, but the concept is the same.


I still haven’t got it to work quite like I want it to, but I still have a few more ideas that I plan on trying before I give up on it. I just haven’t been able to dedicate the time that I have wanted to this side project. But it’s high up on the priority list! I’ll keep you updated if I start getting things to work.