groimp-platform:pointcloud
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
groimp-platform:pointcloud [2024/11/06 15:29] – [GUI Visualization & Interactions] gaetan | groimp-platform:pointcloud [2024/12/02 16:37] (current) – [Point Cloud] gaetan | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Point Cloud ====== | ====== Point Cloud ====== | ||
- | The objects and tools presented in this wiki mostly comes from the plugin [[https:// | + | The objects and tools presented in this wiki mostly comes from the plugin [[https:// |
Tools: | Tools: | ||
Line 16: | Line 16: | ||
In GroIMP point cloud are implemented following the design: | In GroIMP point cloud are implemented following the design: | ||
- | {{ : | + | < |
+ | scale 700 width | ||
+ | Class Node | ||
+ | Interface CollectionDisplayable | ||
+ | getDisplayHandler() | ||
+ | setDisplayHandler() | ||
+ | } | ||
+ | Class PointCloud | ||
+ | setCloud() | ||
+ | } | ||
+ | Interface CloudContext { | ||
+ | Cloud getCloud | ||
+ | } | ||
+ | Interface Cloud { | ||
+ | setPoints(Point[]) | ||
+ | addPoints(Point[]) | ||
+ | getPoints() | ||
+ | remove(Object[]) | ||
+ | removeAll() | ||
+ | float[] pointsToFloat() | ||
+ | Point[] floatsToPoints(float[]) | ||
+ | } | ||
+ | Interface Point { | ||
+ | float[] toFloat() | ||
+ | } | ||
+ | Class PointCloudD | ||
+ | Class CloudGraph | ||
+ | Class CloudList | ||
+ | Class CloudArray | ||
+ | Class ArrayPoint | ||
+ | Class PointCloudLeaf | ||
+ | |||
+ | Node <|-- PointCloud | ||
+ | CloudContext <|.. PointCloud | ||
+ | CloudContext <|-- Cloud | ||
+ | CloudContext <|-- Point | ||
+ | CollectionDisplayable <|.. PointCloudD | ||
+ | PointCloud <|-- PointCloudD | ||
+ | Cloud <|.. CloudGraph | ||
+ | Cloud <|.. CloudArray | ||
+ | CloudArray <|-- CloudList | ||
+ | Point <|.. ArrayPoint | ||
+ | Point <|.. PointCloudLeaf | ||
+ | Point --* Cloud | ||
+ | ArrayPoint --* CloudArray | ||
+ | Cloud --o PointCloud | ||
+ | PointCloudLeaf --* CloudGraph | ||
+ | |||
+ | </ | ||
The main Objects are: | The main Objects are: | ||
- | * **PointCloud** : A **Node**, i.e. an object that can be inserted in a GroIMP graph. The PointCloud is responsible for the display of the points by implementing **CollectionDisplayable**. | + | * **PointCloud** : A **Node**, i.e. an object that can be inserted in a GroIMP graph. The PointCloud is responsible for the display of the points. In the case of **PointCloudD** the display is managed |
* **Cloud** : The representation of the data structure through which the point cloud data is accessed. | * **Cloud** : The representation of the data structure through which the point cloud data is accessed. | ||
* **Point** : The base interface that an object must implements to be part of a Cloud. In GroIMP, points are not limited to 3 dimensions. | * **Point** : The base interface that an object must implements to be part of a Cloud. In GroIMP, points are not limited to 3 dimensions. | ||
Line 41: | Line 90: | ||
The management of the display is push to a **CollectionDisplayHandler**. There are currently three implementations of the interface: | The management of the display is push to a **CollectionDisplayHandler**. There are currently three implementations of the interface: | ||
* **FloatArrayHandler** : Simply handle float arrays which is the data representation of **CloudArray** and **CloudList**. It can however be used on any type of **Cloud** as they implements // | * **FloatArrayHandler** : Simply handle float arrays which is the data representation of **CloudArray** and **CloudList**. It can however be used on any type of **Cloud** as they implements // | ||
- | * **CollectionPointHandler** : Used to handle a collection of Point that do not have 3d geometry (e.g. imp3d points). It takes a collection of Points as input (either a List or a graph). The collection is visited and each Point display data is stored in the CollectionDisplayHandler. It requires that Points have at least three dimensions and will only includes the three first dimensions to the display. | + | * **CollectionPointHandler** : Used to handle a collection of Point that do not have 3d geometry (e.g. imp3d points). It takes a collection of Points as input (either a List or a graph). The collection is visited and each Point display data is stored in the CollectionDisplayHandler. It requires that Points have at least three dimensions and will only includes the three first dimensions |
* **CollectionMeshHandler** : Similarly to the CollectionPointHandler, | * **CollectionMeshHandler** : Similarly to the CollectionPointHandler, | ||
DisplayHandler require to be pinged to update their data. This can be done manually through the PointCloud using the attribute editor, or automatically when some tools are applied on the PointCloud. | DisplayHandler require to be pinged to update their data. This can be done manually through the PointCloud using the attribute editor, or automatically when some tools are applied on the PointCloud. | ||
- | {{ : | + | {{ : |
- | The picking is also managed by the PointCloud through the DisplayHandler. By default, the Points are picked on the 3d scene, but a [[groimp-platform:3d:navigation|navigation mode]] enables to pick the DisplayHandler. | + | The picking is also managed by the PointCloud through the DisplayHandler. By default, the Points are picked on the 3d scene, but a [[3d-guide:view_manipulations# |
===== Point Cloud as a graph ===== | ===== Point Cloud as a graph ===== | ||
Line 55: | Line 104: | ||
The main objects of a PointCloud as graph are: | The main objects of a PointCloud as graph are: | ||
- | * **CloudGraph** : the object that extends | + | |
+ | | ||
* **IntermediateCloudNode** : intermediate nodes used to balance the load of the graph. | * **IntermediateCloudNode** : intermediate nodes used to balance the load of the graph. | ||
* **PointCloudLeaf** ; the implementation of Point of the Cloud. PointCloudLeaf extends Node (or subclasses of Node), thus are part of the project graph. | * **PointCloudLeaf** ; the implementation of Point of the Cloud. PointCloudLeaf extends Node (or subclasses of Node), thus are part of the project graph. | ||
- | In GroIMP | + | GroIMP |
+ | |||
+ | The PointCloudLeaf can extends imp3d objects to have a 3d geometry. The PointCloudLeaf objects are not limited to " | ||
- | The PointCloudLeaf | + | Three base implementation of PointCloudLeaf |
+ | * **LeafPointImpl** : extends imp3d Point (not to be confused with Point from pointcloud - objects from imp3d are GroIMP objects for the 3d scene see [[3d-guide: | ||
+ | * **LeafLineImpl** : extends imp3d Axis. | ||
+ | * **LeafMeshImpl** : extends imp3d MeshNode. | ||
- | (not to be confused with Point from pointcloud | + | {{ :groimp-platform:cloudgraph.svg |
groimp-platform/pointcloud.1730903392.txt.gz · Last modified: 2024/11/06 15:29 by gaetan