xLightsSequencer / xLights

xLights is a sequencer for Lights. xLights has usb and E1.31 drivers. You can create sequences in this object oriented program. You can create playlists, schedule them, test your hardware, convert between different sequencers.
GNU General Public License v3.0
540 stars 200 forks source link

Canvas not working with last years' settings #4668

Closed kevinsaucier closed 1 month ago

kevinsaucier commented 1 month ago

K, so I'm not sure if this is a bug or maybe the way I set it up last year was some wonky workaround that is no longer working but I have effects set up using Canvas and they aren't working on 2024.13 (nightly-3f26e06 - a couple of nights ago).

3 effects/layers:

1 - On - Pink (no Canvas / 2 is Unmask) 2 - Picture - GIF of people dancing (Canvas with layer 3 / Subtractive) 3 - On - White (no Canvas / Normal)

The end result is that the people dancing should show in pink on a black background and fill the matrix.

This is a sequence that ran fine last year. I open and render it in the same layout in 2024.13 and it doesn't work. If I go to the effect that has Canvas set (the picture effect) and uncheck Canvas, then recheck it, it works as expected. I notice that opening the Canvas panel after doing the uncheck/recheck selects all layers below the effect (although I only want Layer 3 selected) that I have Canvas set on but, if I just open the Canvas panel (without unchecking/rechecking) and check those boxes, it still doesn't work.

The same routine is in this test sequence 4 times so you can easily test how it's working. I wouldn't be super concerned as I could fix it on this one sequence, but this is a sequence that has been sold so other users are likely going to run into this as well. Hoping it's something that can be fixed and isn't just a byproduct of the new Canvas changes.

View as is after initial rendering with no effects changes: :)

image

Expected view:

image

Current view with canvas turned off on layer 2 (the bars on the sides should not be there):

image

Side note: Github does not support the new xsqz file type. Someone complain to Microsoft. :D The attached file has been renamed to zip.

CanvasProblem.zip

dkulp commented 1 month ago

This is working as it's supposed to be working. The layers used for the canvas are "removed" from the list of layers to blend as they are already being used to create the canvas. Thus, the picture is subtracting from the layers below that (which would be all black). In anycase, the canvas checkbox normally does not make sense for the pictures effect.

The bars on the left/right are due to the scaling of the picture. The picture is aspect ratio scaled which is leaving a column on the left/right as black so the subtraction isn't doing anything. The two options are to change the scaling to "Scale to fit" or to adjust the buffer size on layer three to go from about 5% -> 95% or similar to make the white block closer match the picture size.

kevinsaucier commented 1 month ago

Thanks for the detail. I more or less get what you're saying (and I'm far from a layering/canvasing expert) but my question/issue is that the effect is working as expected if I simply uncheck then recheck the Canvas box on the picture effect. If I then save the XSQ and reopen it, the effect works as expected, so obviously something is getting saved to the XSQ after the uncheck/recheck that makes the effect work as expected.

Comparing the XSQ before/after, I find that the after is removing a property from the line for the picture effect:

Not Working (but was working last season): <Effect>E_CHECKBOX_LoopGIF=1,E_CHECKBOX_Pictures_PixelOffsets=0,E_CHECKBOX_Pictures_Shimmer=0,E_CHECKBOX_Pictures_TransparentBlack=0,E_CHECKBOX_Pictures_WrapX=0,E_CHECKBOX_SuppressGIFBackground=0,E_CHOICE_Pictures_Direction=none,E_CHOICE_Scaling=Scale Keep Aspect Ratio,E_FILEPICKER_Pictures_Filename=C:\Users\Kevin\xlights\Dancers3.gif,E_SLIDER_PicturesXC=0,E_SLIDER_PicturesYC=0,E_SLIDER_Pictures_EndScale=100,E_SLIDER_Pictures_StartScale=100,E_TEXTCTRL_Pictures_FrameRateAdj=1.8,E_TEXTCTRL_Pictures_Speed=1.0,E_TEXTCTRL_Pictures_TransparentBlack=300,T_CHECKBOX_Canvas=1,T_CHOICE_LayerMethod=Subtractive,T_LayersSelected=0,T_TEXTCTRL_Fadeout=0.10</Effect>

Working: <Effect>E_CHECKBOX_LoopGIF=1,E_CHECKBOX_Pictures_PixelOffsets=0,E_CHECKBOX_Pictures_Shimmer=0,E_CHECKBOX_Pictures_TransparentBlack=0,E_CHECKBOX_Pictures_WrapX=0,E_CHECKBOX_SuppressGIFBackground=0,E_CHOICE_Pictures_Direction=none,E_CHOICE_Scaling=Scale Keep Aspect Ratio,E_FILEPICKER_Pictures_Filename=C:\Users\Kevin\xlights\Dancers3.gif,E_SLIDER_PicturesXC=0,E_SLIDER_PicturesYC=0,E_SLIDER_Pictures_EndScale=100,E_SLIDER_Pictures_StartScale=100,E_TEXTCTRL_Pictures_FrameRateAdj=1.8,E_TEXTCTRL_Pictures_Speed=1.0,E_TEXTCTRL_Pictures_TransparentBlack=300,T_CHECKBOX_Canvas=1,T_CHOICE_LayerMethod=Subtractive,T_TEXTCTRL_Fadeout=0.10</Effect>

The difference being the 'T_LayersSelected=0' property (3rd from the end). With that entry removed (which xLights is doing after the uncheck/recheck), the effect works as it did last year. If I then open the Canvas Settings box and click OK to close the Canvas Settings box (while all layers are still checked), it updates the XML property to 'T_LayersSelected=0|1|2|3|4|5' and still work anymore.

If I remove the T_LayersSelected property from the XML (or uncheck/recheck the Canvas box), it goes back to working as expected so it seems as though this property is being interpreted differently in this newer version. Maybe that's a fix from a previous bug, so it's actually working correctly now, but it's definitely an unexpected behavior that potentially will affect a lot of sequences (unless this is somehow specific to the picture effect).

Also, this property is being cleared by unchecking the Canvas box but, when checking the Canvas box, it's not being populated. It only gets added when the Canvas Settings box is opened and OK'd, which also could lead to unexpected behavior.