graph LR
Blender_Integration_User_Interface["Blender Integration & User Interface"]
Lightfield_Core_Processing["Lightfield Core Processing"]
Device_Abstraction_Layer_pyLightIO_["Device Abstraction Layer (pyLightIO)"]
Inter_Process_Communication_NNG_CBOR_["Inter-Process Communication (NNG/CBOR)"]
Configuration_State_Management["Configuration & State Management"]
Blender_Integration_User_Interface -- "triggers" --> Lightfield_Core_Processing
Blender_Integration_User_Interface -- "uses" --> Configuration_State_Management
Lightfield_Core_Processing -- "uses" --> Device_Abstraction_Layer_pyLightIO_
Lightfield_Core_Processing -- "uses" --> Configuration_State_Management
Device_Abstraction_Layer_pyLightIO_ -- "uses" --> Inter_Process_Communication_NNG_CBOR_
Configuration_State_Management -- "provides data to" --> Blender_Integration_User_Interface
Configuration_State_Management -- "provides data to" --> Lightfield_Core_Processing
click Blender_Integration_User_Interface href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/AmberLG/Blender_Integration_User_Interface.md" "Details"
click Lightfield_Core_Processing href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/AmberLG/Lightfield_Core_Processing.md" "Details"
click Device_Abstraction_Layer_pyLightIO_ href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/AmberLG/Device_Abstraction_Layer_pyLightIO_.md" "Details"
click Inter_Process_Communication_NNG_CBOR_ href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/AmberLG/Inter_Process_Communication_NNG_CBOR_.md" "Details"
click Configuration_State_Management href "https://github.com/CodeBoarding/GeneratedOnBoardings/blob/main/AmberLG/Configuration_State_Management.md" "Details"
The AmberLG add-on for Blender follows a modular architecture designed for integrating holographic displays.
Blender Integration & User Interface [Expand]
This component serves as the primary interface between the Blender environment and the add-on's core logic. It manages all user-facing elements, including custom panels, operators, viewport drawing for lightfield visualization, and integration with Blender's rendering pipeline and preference system.
Related Classes/Methods:
AmberLG.uiAmberLG.lightfield_viewportAmberLG.lightfield_renderAmberLG.preferencesAmberLG.__init__
Lightfield Core Processing [Expand]
This component encapsulates the fundamental algorithms and data processing required to generate lightfield data. It is responsible for managing camera arrays, calculating lightfield views, and preparing the final "quilt" image suitable for holographic displays. This layer is designed to be independent of Blender's specific UI.
Related Classes/Methods:
AmberLG.camera_managerAmberLG.quilt_generator
Device Abstraction Layer (pyLightIO) [Expand]
This component provides a high-level, abstract interface for interacting with external holographic display devices and services. It abstracts away the complexities of device-specific communication protocols and hardware interactions, offering a unified API for sending lightfield data.
Related Classes/Methods:
AmberLG.lib.pylightioAmberLG.lib.pylightio.lookingglassAmberLG.lib.pylightio.managers
Inter-Process Communication (NNG/CBOR) [Expand]
This component handles the low-level inter-process communication (IPC) mechanisms used to exchange data with external services, specifically leveraging NNG (Nanomsg Next Generation) for messaging and CBOR (Concise Binary Object Representation) for data serialization and RPC. It ensures robust and efficient data transfer.
Related Classes/Methods:
AmberLG.lib.pylightio.external.cborAmberLG.lib.pylightio.external.cbor.cbor_rpc_clientAmberLG.lib.pylightio.external.cbor.tagmap
Configuration & State Management [Expand]
This component centralizes the management of application-wide settings, user preferences, and global variables. It ensures that configuration data is consistently stored, loaded, and accessible across different parts of the add-on, facilitating persistence and shared state.
Related Classes/Methods:
AmberLG.globalsAmberLG.preferences