System modules

Met.3D’s core functionality is built on top of a small set of general-purpose systems that are largely independent of any specific actor or visualization technique. This section documents each of these systems in turn.

When Met.3D starts, MGLResourcesManager initializes the OpenGL context and the GPU resources shared across actors, and MActorTypeRegistry registers every known actor type so that instances can be created from it later. MApplicationConfigurationManager then loads the startup configuration, which initializes the task scheduler and builds the data pipelines for the configured datasets (along with batch-mode parameters and development aids); per-user settings are restored separately through MUserConfiguration and MUserCache.

  • ConfigurationMApplicationConfigurationManager loads Met.3D’s startup configuration (available datasets/pipelines, batch mode parameters, development aids) by delegating to a list of MAbstractApplicationConfiguration instances, and registers every known actor type with MActorTypeRegistry, which actors are instantiated from at runtime. Per-user settings are handled separately, by MUserConfiguration and MUserCache.

  • OpenGL Resource managementMGLResourcesManager centrally manages the lifetime of GPU resources (textures, shaders, vertex buffers), sharing them across actors and OpenGL contexts to avoid duplicated resources and unnecessary shader recompilation. It also handles OpenGL capability initialization.

  • Property Framework – The property framework (MProperty and its subclasses) implements the tree-structured, user-editable settings shown in Met.3D’s configuration panels. Properties can save and load themselves to/from QSettings, and are independent of any UI representation, which is only constructed on demand.

  • Undo framework – Built on top of Qt’s undo framework, this system wraps user-triggered actions (e.g. changing a property, adding an actor) in QUndoCommand subclasses so that they can be undone and redone consistently throughout the application.

  • Synchronization – An event-based system (MSyncedControl / MAbstractSyncEvent) that keeps values like time and ensemble member (MTimeControl / MEnsembleControl) consistent across every actor, property, and data source synchronized with the control. When the value (e.g., time) is changed for example via the animation system, time events are emitted to which the listeners can react.

  • Animation & View CaptureMAnimationController and its subclasses (MTimeAnimationController, MCameraAnimationController) drive the synchronization system to automatically step through a sequence of times and/or camera positions, while a set of MViewCapture implementations capture each rendered state into a desired output format (image, video, displayed geometry data).

  • Scheduling in Met.3D – Computational tasks (e.g. loading or processing a data field) are represented as MTask nodes in a dependency graph and executed by a multi-threaded scheduler that respects task dependencies and resource requirements.

  • Memory management – A lease-based system (MAbstractMemoryManager / MDataLease) that keeps frequently used data items in memory and evicts stale ones under memory pressure.

  • Data analysis framework – A set of abstract classes (MAnalysisControl, MAnalysisDataSource, MAnalysisResult, MAnalysisDisplay) for implementing user-triggered data analysis tasks, such as analysing a selected isosurface and displaying the result in a docked widget. It is built directly on top of the scheduling system (an MAnalysisDataSource is a specialised MScheduledDataSource) and the memory management system (an MAnalysisResult is a specialised MAbstractDataItem).