Specify "areas" for X/Y fixtures

Request a feature that you would like to see in QLC+.
Explain in details why you would need it and which is your usage case.
Post Reply
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

This is an idea I've had for a while now and plan to implement on my own and upstream, but before I get started I wanted to see if anyone else would actually find this useful.

Basically, I want to be able to, for each fixture/head that supports XY-movement, specify predefined "areas". For example "Dancefloor", "Stage", "Ceiling" etc. An area would basically be a rectangle (or possibly polygon, more powerful but also harder to implement) in the XY-space, where for all points within the rectangle the fixture is pointed at some real-life area. Those areas can then be used in the EFX function without having to re-define them for each function. This would also be immensely useful for re-mapping, since you can just re-map between areas, rather than having to manually adjust the EFX functions.

For editing areas I see two alternatives:
A. A new tab between Fixtures and Functions as such:
download.png
B. A button in the Fixtures tab toolbar that opens a dialog with identical contents as A.

Then, in the EFX function editor Movement tab, you'd be able to choose between either manually specifying Width, Height, X offset, and Y offset or choosing an area from a combobox. The areas available to choose from would be those that are defined for all fixtures added to the EFX, and adding new fixtures can only be done if they have the currently set area defined.

Save file compatibility: Opening a save from an old version would simply be a save without defined areas and all EFX would have manually specified extents. To support opening saves from newer versions in older versions we would save the extent values (as specified by the area) in the EFX, that way older versions can load them while newer versions can load the area.

Thoughts? Would this be useful to anyone? Is there something you think I should do differently?
User avatar
mcallegari
Posts: 4712
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

It's basically the concept of palettes I'm developing on v5
If I had to do this, I would code an editor only in v5, otherwise the job needs to be done twice.
Furthermore, why not XYZ-space? (again v5 has 3 dimensions, v4 doesn't)
Also, EFX should be enhanced to accept this type of palette.
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

Ah, that sounds very interesting! Is there any information on palettes available anywhere?

What would be the third dimension in the fixture? Zoom/focus?

When you're saying editor only in v5 I presume you mean the Qt Quick UI? Does this mean that the widgets-based UI will be completely deprecated in the future? :(
User avatar
mcallegari
Posts: 4712
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

Is there any information on palettes available anywhere?
There is some literature online and some other lighting software implement them.
There is no "QLC+ documentation" if that is what you're looking for...
What would be the third dimension in the fixture? Zoom/focus?
Pan/tilt move the beam in 3 dimensions, right? What I imagine is a "solid" area where to limit pan/tilt at (projection ray starts from emitter center)
When you're saying editor only in v5 I presume you mean the Qt Quick UI? Does this mean that the widgets-based UI will be completely deprecated in the future?
Basically yes. QLC+ 4 needs to phase out as it is becoming and "old looking" product, sometimes difficult to maintain.
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

mcallegari wrote: Wed Nov 03, 2021 3:05 pm
Is there any information on palettes available anywhere?
There is some literature online and some other lighting software implement them.
There is no "QLC+ documentation" if that is what you're looking for...
Didn't manage to find anything, but based on the name "palette" I guess it's sort of a combination of predefined areas/locations, colors, etc.?
What would be the third dimension in the fixture? Zoom/focus?
Pan/tilt move the beam in 3 dimensions, right? What I imagine is a "solid" area where to limit pan/tilt at (projection ray starts from emitter center)
So something similar to viewtopic.php?f=18&t=14192 or viewtopic.php?f=18&t=11283 ?

I can't really see the complexity (both for the UI/UX and the rest of the code) of adding another dimension being worth it, though that might just be because I don't have that usecase. I could see it being useful for just having to specify the area once (and by taking the 3D positions of the fixtures calculating the pan/tilt values for them all) but then without actually exposing in the area/palette editor that it's working in 3D.
When you're saying editor only in v5 I presume you mean the Qt Quick UI? Does this mean that the widgets-based UI will be completely deprecated in the future?
Basically yes. QLC+ 4 needs to phase out as it is becoming and "old looking" product, sometimes difficult to maintain.
That's very sad to hear, I very much prefer the current widget-based interface over the new one. As I see it the new interface would be great on a phone/tablet with a touch screen for remote controlling QLC+ on a desktop, but when working with a mouse and keyboard I can't imagine using the newer interface. For a software such as QLC+ where productivity is important I just don't buy the "looks the same on all platforms"-argument (if anything I want it to look different from other platforms, but the same as other programs on the same platform), and as fancy as animations and similar that are possible with Qt Quick are they can newer make up for the lost productivity because things like tab, tooltips, and all the other useful things that many years of widget-based applications have come up with (most of that can of course also be done in a Qt Quick app, but from experience I know that it's usually quite a bit more work).

Would you be open to keeping the widget-based interface if I (or someone else) takes over maintainership for it (including backporting any new features added to the QML-based UI)? Otherwise I'd probably have to end up keeping a (private) fork.
User avatar
mcallegari
Posts: 4712
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

It seems you are a QLC+ 5 master then to say it's not better than QLC+ 4.
I assume you know all the productivity tricks and shortcuts (even without a proper user manual) to state the above.
Or you just stop to the "same on all platform" that you've read somewhere in the Qt website?

If the problem here is just "I don't want to change", then I'm willing to lose users which are fossilized on v4 without actually considering the (real) benefits of v5.

You can keep the fork you want. I'm already maintaining both versions (see cue list changes) but I'm not at all backporting features from v5. It's my personal spare time we're talking about and it's limited.
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

No need to get defensive, I'm just telling you my point of view, not which is objectively best.

I'm definitely not a "master" of QLC+ 5 (I wouldn't call myself that for 4 either), but I've played around with several of the alphas including creating a full set-up last year. Of course there may be recent changes I missed. But the great thing about something like Qt Widgets and platform integration is not having to learn new tips and tricks; it's idiomatic and works the same across all apps (by default, again you can do the same with Qt Quick but it usually ends up being quite a bit more work). If you're interested we could maybe have a short chat with screensharing so that you can get a better understanding of my pain-points.

I definitely didn't just read it on the Qt website; it's actually a quote from you: "look the same on every platform" (http://www.qlcplus.org/forum/viewtopic. ... 385#p38385). And to somewhat back up that my knowledge of Qt isn't just limited to reading some website; I've been developing with Qt for over 10 years, including two somewhat larger open source projects (OpenOrienteering Mapper and MultiMC5) and both widgets-based, QML-based, combinations of the two and headless apps.

I'm fully fine with and even embrace change and there are several things in QLC+ 5 I'm really looking forward to (like the flagship new feature, 3D preview, and now palettes). But as I said, I'm quite sceptic about porting the UI of a power-user desktop application away from widgets.

Of course it's your spare time and that you can do with it as you wish, and in no way do I want to steer you away from that. That's why I offered my help (twice now in this thread) with parts that are important to me. But should I interpret your response that you are not interested in contributions and that I don't need to bother upstreaming any changes?
giacomo
Posts: 554
Joined: Tue May 26, 2015 6:17 pm
Real Name:

Jan,
let me see if I understand it:
first you create an area by writing the name and then you move the shape corners to determine the real boundaries of the light movement, then for each movement pattern that you choose the EFX will be automatically calculated to fit that area, right?
One question, when you copy an area to another fixture can you adjust indipendently the boundaries for the new fixture, so that in the end all the fixtures will move inside the same real area?
If so yes I think it's very useful because it simplifies the workflow.
I'd not add an extra tab between fixture and functions, in the fixture tab we've already the "fixture groups" and "channel groups" tabs, you could add a "fixture areas" tab there.

Personally I'd like to see this feature in qlc5, wouldn't be possible for you to collaborate with Massimo on qlc5 as well?
I think that we all would be happy to see a new developper to help the project.
Regards and thanks for the idea.
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

giacomo wrote: Thu Nov 04, 2021 12:45 am Jan,
let me see if I understand it:
first you create an area by writing the name and then you move the shape corners to determine the real boundaries of the light movement, then for each movement pattern that you choose the EFX will be automatically calculated to fit that area, right?
One question, when you copy an area to another fixture can you adjust indipendently the boundaries for the new fixture, so that in the end all the fixtures will move inside the same real area?
If so yes I think it's very useful because it simplifies the workflow.
Yup, that pretty much sums it up!
I'd not add an extra tab between fixture and functions, in the fixture tab we've already the "fixture groups" and "channel groups" tabs, you could add a "fixture areas" tab there.
That's a very good idea!
Personally I'd like to see this feature in qlc5, wouldn't be possible for you to collaborate with Massimo on qlc5 as well?
I think that we all would be happy to see a new developper to help the project.
Regards and thanks for the idea.
I'd love to, and I assume that would pretty much be a requirement for this where to be upstreamed, as long as Massimo is on board. It would help to get a bit better understanding of the planned palette feature though, so that we don't end up with either an incomplete feature that needs to be rewritten or double work.
giacomo
Posts: 554
Joined: Tue May 26, 2015 6:17 pm
Real Name:

As far I've understood it since now in qlc+5, the palette system is a way to build up scenes using external 'blocks' of parameters that can be recorded/changed/updated independently and all the scenes linked to them will update consequentely.
It's one of my preferred feature when I work on consoles.
I've not tried the position but you could have a look here:
viewtopic.php?f=35&t=15283

I don't know the plans of Massimo and I've not tried everything in v5, at the moment your idea seems to me different from the palette system, your idea it's meant to control the EFX geometry.
some lighting litterature?
https://secure.chamsys.co.uk/help/docum ... ettes.html
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

Ah thanks! I now found the palette parts in the QML UI. That ChamSys documentation was also very helpful, especially to understand "fanning".

Not entirely sure how much overlap there is between there two features, they are definitely very similar and it might even make sense to have "areas" just be another type of palette. On the other hand, all existing palette types are things that can directly be applied to a fixture to set some DMX values, areas aren't as specific. I think palettes rather seem to be very similar to Scenes in QLC+4, though maybe more abstract?
User avatar
mcallegari
Posts: 4712
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

Palettes have nothing in common with Scenes.
Scenes are based on fixtures and DMX values.
Palettes are "properties". They can be "Dimmer @ 70%" rather than "Pan @ 36°" or "Yellow color", regardless of the fixtures they will be applied to or DMX values they will generate.
On a second thought your idea might be placed into monitor properties, since they don't apply to Scenes, but only to EFX.
I still don't get the limitation of a 2D area for a 3D environment.
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

Hmm, still sounds to me as if palettes are sort of an abstraction of scenes. I often use scenes for various colors, positions, etc., and use them as building blocks in collections and chasers, which is similar to how I understand that palettes are to be used. Saying "channel 4 = 179" instead of "dimmer @ 70 %" seems very much a concretisation to me.

Took a quick look at the code and the MonitorProperties class, seems like it could be related but feels more like data for the graphical preview to me?

Regarding 2D/3D I'm still thinking along the lines that there don't exist fixtures that you can control in 3D space, you only have pan & tilt (2D). The light may then be projected onto a 3D space, but from the POW of the lighting software and lighting operator you just control in 2D. The use for involving 3D I can see is as mentioned that you can automatically calculate the pan/tilt needed for different fixtures based on their positions and orientations in 3D space, however I don't think that should be exposed to the user (more than possibly a button to "copy from other fixture based on 3D position).
But maybe I'm not seeing the full picture here, could you perhaps explain a bit more how you'd image this feature to work in 3D space?
User avatar
mcallegari
Posts: 4712
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

Saying "channel 4 = 179" instead of "dimmer @ 70 %" seems very much a concretisation to me.
No, you still don't get it, and please read the whole sentence, not just the first part.
First off, a dimmer channel can be on different positions depending on the fixture you use. On Scenes this is fixed. On palettes, it doesn't matter. It is elapsed at runtime depending on the fixtures a Scene has in THAT moment (and can be changed in time)
Second, I also mentioned Pan @ 36°" or "Yellow color". 36° can be one value on a fixture with 540° pan but another value on a fixture with 630° pan. On Scenes this is fixed because it doesn't work on degrees but on DMX values. Same for "yellow color". It can be applied to a RGB fixture but also to a CMY fixture.
could you perhaps explain a bit more how you'd image this feature to work in 3D space?
See screenshot. I imagine defining a 3D volume where a selected group of fixtures should point toward, always inside and never outside of it.
This means calculating the min/max pan/tilt degrees each fixture should be limited to to point the defined volume. A 2D area would lack proper tilt calculations and could point to the ceiling by mistake.
Since generic items (like the cube I used for the screenshot) are saved in the monitor properties (which is indeed preview stuff), I'd say a "volume area" can be placed there for consistency and not among palettes, which are used exclusively by Scenes.
Attachments
Screenshot_20211106_131309.png
User avatar
02JanDal
Posts: 13
Joined: Tue Nov 02, 2021 9:13 pm
Real Name: Jan Dalheimer

No, you still don't get it, and please read the whole sentence, not just the first part.
I did, in fact, read and understand the complete sentence, and would very much appreciate a change of tone. It's not particularly encouraging for me to get into a project like this.
First off, a dimmer channel can be on different positions depending on the fixture you use. On Scenes this is fixed. On palettes, it doesn't matter. It is elapsed at runtime depending on the fixtures a Scene has in THAT moment (and can be changed in time)
Second, I also mentioned Pan @ 36°" or "Yellow color". 36° can be one value on a fixture with 540° pan but another value on a fixture with 630° pan. On Scenes this is fixed because it doesn't work on degrees but on DMX values. Same for "yellow color". It can be applied to a RGB fixture but also to a CMY fixture.
That still sounds like an abstraction. You take an abstract value, "Pan @ 36°" and map it to a concrete DMX value for some fixture. As you say that may be in different positions, possibly even across multiple channels or even just parts of a channel.

Now, that does in no way imply that it's implemented as abstract classes or such in the code of course, just that the concept is an abstraction.
See screenshot. I imagine defining a 3D volume where a selected group of fixtures should point toward, always inside and never outside of it.
This means calculating the min/max pan/tilt degrees each fixture should be limited to to point the defined volume. A 2D area would lack proper tilt calculations and could point to the ceiling by mistake.
Since generic items (like the cube I used for the screenshot) are saved in the monitor properties (which is indeed preview stuff), I'd say a "volume area" can be placed there for consistency and not among palettes, which are used exclusively by Scenes.
Yeah, that about sounds like the second part I talked about; automatically calculating pan/tilt limits for the area based on fixture position/orientation.

I see that that would be useful to some people, however, I don't think using the 3D view should be a requirement. Both from a personal view (I would sadly rarely have the time to setup a full 3D scene) and generally for this application (QLC+ is really great because it's easy for newcomers, you can start off really easy, from just controlling the DMX channels, to adding fixtures, to creating simple scenes to more complex functions etc.), requiring the use of the 3D view would gatekeep people from using this feature).

What I could imagine as a decent compromise would be going with my feature roughly as described in the OP (with a 2D, pan/tilt, XY, control) but then making it possible to "link" a 2D area to a 3D volume. If linked, the user would be restricted from manually adjusting the pan/tilt limits and they would instead be calculated from the 3D volume as you describe. That way you can, just as with the rest of QLC+, use either feature (areas/3D view) or both together.

Another thing to think about for a 3D volume would be a case such as the following (green being a volume/area for "Dancefloor", the red dot a moving head and the blue lines the extent of the light beam):
namnlös.png
namnlös.png (7.58 KiB) Viewed 3497 times
That's accepted according to the calculation (beam passes through volume) however it points at the back wall. This is likely fine if you have lots of haze/fog, however without haze/fog or even just a slight haze it might not be the result expected. Just a thought that might need to be adressed.
Post Reply