3#include <NDEVR/SoftwareService.h>
4#include <NDEVR/GeometryVertices.h>
5#include <NDEVR/DesignCommand.h>
6#include <NDEVR/Model.h>
7#include <NDEVR/Buffer.h>
8#include <NDEVR/RGBColor.h>
9#include <NDEVR/GenericOption.h>
15 template<u
int01 t_dims,
class t_type>
class RTree;
45 const void*
lock =
nullptr;
The equivelent of std::vector but with a bit more control.
A hash-based key-value store, useful for quick associative lookups.
Provides a modifiable pointer that has shared ownership of a dynamically allocated object.
TranslatedString name
The user-facing display name of this option group.
GenericOptionGroup()=default
Default constructor.
TranslatedString m_name
The translated display name of this registration engine.
static void ExecuteRegistration(const JSONNode &active_filters, const Buffer< Model > &models_to_register, const Buffer< Model > &reference_models, LogPtr log, const void *lock)
Executes a registration pass using the specified filters, aligning the given models to the reference ...
const TranslatedString & registrationName() const
Returns the translated display name of this registration engine.
static Dictionary< String, GeometryRegistration * > s_global_available_registration_engines
Global dictionary of all registered GeometryRegistration engines, keyed by engine ID.
static const Dictionary< String, GeometryRegistration * > & AvailableRegistrationEngines()
Returns the global dictionary of all available registration engines, keyed by engine ID.
String m_id
The unique string identifier of this registration engine.
virtual bool canRunRegistration(const GeometryRegistrationParameters &)
Returns whether the registration engine can run given the target parameters.
static String ToCommandString(const Buffer< GeometryRegistrationDescription > &descriptions)
Serializes a set of registration descriptions into a command string representation.
static void AddAvailableRegistrationEngine(GeometryRegistration *filter)
Registers a new GeometryRegistration engine in the global dictionary of available engines.
GeometryRegistration(const StringView &name, const StringView &id)
Constructs a GeometryRegistration engine with the given display name and unique identifier.
virtual ~GeometryRegistration()=default
Virtual destructor.
static DynamicPointer< ManagedDesignCommand > RegistrationCommand(const UUID &reference, const GeometryRegistrationDescription &filter)
Creates a managed design command for performing registration with the given reference and filter.
GeometryRegistration(const GeometryRegistration &filter)=delete
Deleted copy constructor — registration engines are non-copyable.
GeometryRegistration(const GeometryRegistration &&filter)=delete
Deleted move constructor — registration engines are non-movable.
virtual Buffer< GeometryRegistrationDescription > defaultRegistrationArguments()
Returns the default set of registration argument descriptions for this engine.
static Buffer< GeometryRegistrationDescription > GetAvailableDescriptions()
Collects and returns the default description/option sets from all available registration engines.
static void FinishRegistration(const Matrix< fltp08 > &transform, Geometry &geo, const GeometryRegistrationParameters ¶ms)
Applies the final computed registration transform back to the geometry.
virtual bool runRegistration(GeometryRegistrationParameters ¶meters)=0
Runs the registration algorithm on the provided parameters.
const String & registrationID() const
Returns the unique string identifier of this registration engine.
static void PrepareForRegistration(const Matrix< fltp08 > &transform, const Geometry &geo, GeometryRegistrationParameters ¶ms, bool is_reference)
Extracts and prepares geometry vertices from a Geometry object for use in registration.
A core class within the model hierarchy containing vertex-based data (Usually 3D data) within a set c...
JavaScript Object Notation or JSON is an open - standard file format that uses human - readable text ...
A light-weight wrapper that will be a no-op if there is not a valid log reference,...
A DesignCommand subclass that dispatches common design operations based on a ManagedCommandType enum ...
Templated logic for doing matrix multiplication.
Software Service Managers take a Software service to modify the behavior of the software.
Base interface for services that extend or modify software behavior through modules.
The core String View class for the NDEVR API.
The core String class for the NDEVR API.
Any text displayed to the user should be defined as a TranslatedString which allows the program to lo...
A universally unique identifier (UUID) is a 128-bit number used to identify information in computer s...
The primary namespace for the NDEVR SDK.
uint32_t uint04
-Defines an alias representing a 4 byte, unsigned integer -Can represent exact integer values 0 throu...
Describes special options/parameters for a GeometryRegistration engine.
GeometryRegistrationDescription(const TranslatedString &name, const String &filter_id)
Constructs a GeometryRegistrationDescription with a display name and filter identifier.
Describes options/parameters for running a GeometryRegistration pass.
Buffer< GeometryVertices > registration_points
The movable point sets to be aligned to the reference.
const void * lock
Optional mutex/lock pointer for thread-safe access during registration.
GeometryVertices reference
The reference (fixed) point set that other geometry is aligned to.
Buffer< Matrix< fltp08 > > original_transforms
The original transforms of each registration point set before alignment.
GeometryRegistrationParameters()
Constructs default GeometryRegistrationParameters.
Buffer< Matrix< fltp08 > > potential_a_to_b_transform
Candidate transforms mapping source geometry to the reference frame.
std::function< void(uint04 iteration_a, uint04 iteration_b, Matrix< fltp08 > &mat, bool finished)> update_data_callback
Callback invoked during registration iterations to report progress.
LogPtr log
Log target for diagnostic and progress messages.
Matrix< fltp08 > reference_transform
The world-space transform of the reference geometry.
A container for storing vertex data associated with geometry, including positions,...