|
2 | 2 |
|
3 | 3 | ## Mapping model (🚧) |
4 | 4 |
|
5 | | - <img width="500" src="https://github.com/user-attachments/assets/6f76a2d6-fce1-4c72-9ade-ee5fbd056c88" /> |
6 | | - |
7 | | - * Multiple Nodes can be created (1) |
8 | | - * Each node can have controls (compare controls in WLED / StarLight) ✅ |
9 | | - * Each node can run precompile code or Live scripts (with or without loop) ✅ |
10 | | - * Each node has a type: |
11 | | - * Layout: tell where each light is in a 1D/2D/3D physical coordinate space (based on StarLight fixtures) ✅ |
12 | | - * Effect: |
13 | | - * run an effect in a virtual coordinate space ✅ |
14 | | - * in the physical space if you want to run at highest performance, e.g. a random effect doesn't need to go through mappings ✅ |
15 | | - * Modifier: Mirror, rotate, etc, multiple modfiers allowed (projection in StarLight) 🚧 |
16 | | - * A modifier can also map lights dimensions to effect dimensions: change the lights to a 1D/2D/3D virtual coordinate space |
17 | | - * e.g. if the light is a globe, you can map that to 2D using mercator projection mapping |
18 | | - * if the light is 200x200 you can map it to 50x50 |
19 | | - * if the light is 2D, a 1D effect can be shown as a circle or a bar (as WLED expand1D) |
20 | | - * Driver show: show the result on Leds (using FastLED, hpwit drivers), Art-Net, DDP, ... |
21 | | - * Future situation: Nodes and noodles (2) |
22 | | - * Replace the nodes table (1) by a graphical view (2) |
23 | | - * Virtual Layer (MappingTable) (3) |
24 | | - * Array of arrays. Outer array is virtual lights, inner array is physical lights. ✅ |
25 | | - * Implemented efficiently using the StarLight PhysMap struct ✅ |
26 | | - * e.g. [[],[0],[1,2],[3,4,5],[6,7,8,9]] ✅ |
27 | | - * first virtual light is not mapped to a physical light |
28 | | - * second virtual light is mapped to physical light 0 |
29 | | - * third virtual light is mapped to physical lights 1 and 2 |
30 | | - * and so on |
31 | | - * Virtual lights can be 1D, 2D or 3D. Physical lights also, in any combination |
32 | | - * Using x + y * sizeX + z * sizeX * sizeY 🚧 |
33 | | - * set/getLightColor functions used in effects using the MappingTable ✅ |
34 | | - * Nodes manipulate the MappingTable and/or interfere in the effects loop 🚧 |
35 | | - * A Virtual Layer mapping gets updated if a layout, mapping or dimensions change 🚧 |
36 | | - * An effect uses a virtual layer. One Virtual layer can have multiple effects. ✅ |
37 | | - * Physical layer |
38 | | - * Lights.header and Lights.channels. CRGB leds[] is using lights.channels (acting like leds[] in FASTLED) ✅ |
39 | | - * A Physical layer has one or more virtual layers and a virtual layer has one or more effects using it. ✅ |
40 | | - * Presets/playlist: change (part of) the nodes model |
| 5 | + <img width="500" src="https://github.com/user-attachments/assets/6f76a2d6-fce1-4c72-9ade-ee5fbd056c88" /> |
41 | 6 |
|
| 7 | + * Multiple Nodes can be created (1) |
| 8 | + * Each node can have controls (compare controls in WLED / StarLight) ✅ |
| 9 | + * Each node can run precompile code or Live scripts (with or without loop) ✅ |
| 10 | + * Each node has a type: |
| 11 | + * Layout: tell where each light is in a 1D/2D/3D physical coordinate space (based on StarLight fixtures) ✅ |
| 12 | + * Effect: |
| 13 | + * run an effect in a virtual coordinate space ✅ |
| 14 | + * in the physical space if you want to run at highest performance, e.g. a random effect doesn't need to go through mappings ✅ |
| 15 | + * Modifier: Mirror, rotate, etc, multiple modfiers allowed (projection in StarLight) 🚧 |
| 16 | + * A modifier can also map lights dimensions to effect dimensions: change the lights to a 1D/2D/3D virtual coordinate space |
| 17 | + * e.g. if the light is a globe, you can map that to 2D using mercator projection mapping |
| 18 | + * if the light is 200x200 you can map it to 50x50 |
| 19 | + * if the light is 2D, a 1D effect can be shown as a circle or a bar (as WLED expand1D) |
| 20 | + * Driver show: show the result on Leds (using FastLED, hpwit drivers), Art-Net, DDP, ... |
| 21 | + * Future situation: Nodes and noodles (2) |
| 22 | + * Replace the nodes table (1) by a graphical view (2) |
| 23 | + * Virtual Layer (MappingTable) (3) |
| 24 | + * Array of arrays. Outer array is virtual lights, inner array is physical lights. ✅ |
| 25 | + * Implemented efficiently using the StarLight PhysMap struct ✅ |
| 26 | + * e.g. [[],[0],[1,2],[3,4,5],[6,7,8,9]] ✅ |
| 27 | + * first virtual light is not mapped to a physical light |
| 28 | + * second virtual light is mapped to physical light 0 |
| 29 | + * third virtual light is mapped to physical lights 1 and 2 |
| 30 | + * and so on |
| 31 | + * Virtual lights can be 1D, 2D or 3D. Physical lights also, in any combination |
| 32 | + * Using x + y * sizeX + z * sizeX * sizeY 🚧 |
| 33 | + * set/getLightColor functions used in effects using the MappingTable ✅ |
| 34 | + * Nodes manipulate the MappingTable and/or interfere in the effects loop 🚧 |
| 35 | + * A Virtual Layer mapping gets updated if a layout, mapping or dimensions change 🚧 |
| 36 | + * An effect uses a virtual layer. One Virtual layer can have multiple effects. ✅ |
| 37 | + * Physical layer |
| 38 | + * Lights.header and Lights.channels. CRGB leds[] is using lights.channels (acting like leds[] in FASTLED) ✅ |
| 39 | + * A Physical layer has one or more virtual layers and a virtual layer has one or more effects using it. ✅ |
| 40 | + * Presets/playlist: change (part of) the nodes model |
| 41 | + |
42 | 42 | ✅: Done |
43 | 43 |
|
44 | 44 | ## Example |
45 | 45 |
|
46 | | - ```json |
47 | | - { |
| 46 | +```json |
| 47 | +{ |
48 | 48 | "nodes": [ |
49 | 49 | { |
50 | 50 | "name": "Lissajous 🔥🎨💡", |
|
0 commit comments