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.
Configuration –
MApplicationConfigurationManagerloads Met.3D’s startup configuration (available datasets/pipelines, batch mode parameters, development aids) by delegating to a list ofMAbstractApplicationConfigurationinstances, and registers every known actor type withMActorTypeRegistry, which actors are instantiated from at runtime. Per-user settings are handled separately, byMUserConfigurationandMUserCache.OpenGL Resource management –
MGLResourcesManagercentrally 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 (
MPropertyand its subclasses) implements the tree-structured, user-editable settings shown in Met.3D’s configuration panels. Properties can save and load themselves to/fromQSettings, 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
QUndoCommandsubclasses 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 Capture –
MAnimationControllerand its subclasses (MTimeAnimationController,MCameraAnimationController) drive the synchronization system to automatically step through a sequence of times and/or camera positions, while a set ofMViewCaptureimplementations 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
MTasknodes 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 (anMAnalysisDataSourceis a specialisedMScheduledDataSource) and the memory management system (anMAnalysisResultis a specialisedMAbstractDataItem).