User Tools

Site Tools


groimp-platform:pointcloud

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
groimp-platform:pointcloud [2024/11/06 15:45] – [Point Cloud as a graph] gaetangroimp-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://gitlab.com/grogra/groimp-plugins/Pointcloud|Pointcloud]]. See [[dev-guide:plugins|here]] to see how install plugins in GroIMP. The wiki is up to date with the version 1.of the plugin.+The objects and tools presented in this wiki mostly comes from the plugin [[https://gitlab.com/grogra/groimp-plugins/Pointcloud|Pointcloud]]. See [[dev-guide:plugins|here]] to see how install plugins in GroIMP. The wiki is up to date with the version 1.of the plugin.
  
 Tools: Tools:
Line 16: Line 16:
 In GroIMP point cloud are implemented following the design: In GroIMP point cloud are implemented following the design:
  
-{{ :groimp-platform:complete_design1.svg }} +<uml> 
 +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 
 + 
 +</uml> 
  
 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 by implementing **CollectionDisplayable**. 
   * **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 46: Line 95:
 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.
  
-{{ :groimp-platform:visualization.svg |}}+{{ :groimp-platform:visualization2.svg |}}
  
-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#navigate_in_the_scene|navigation mode]] enables to pick the DisplayHandler.
  
 ===== 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 PointCloudThis is the entry point of the PointCloud.+  * **PointCloud**: the Node that is part of the project graph.  
 +  * **CloudGraph** : the object that extends CloudIt implements the methods to access/modify the Points. Because the Points of a CloudGraph are Nodes, they can also be accessed and modified through XL queries.
   * **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 having one Node with huge number of edges slows down the graph visiting and querying. Thus, the Cloud data is spread over several layers using IntermediateCloudNode. IntermediateCloudNode are used in order to enables the Points of a PointCloud to be rewritten with minimum modifications in the project graph. Modifications that add/remove/change edges, on Points only affect the leaves of the PointCloud graph.+GroIMP struggle handling Nodes with huge number of edges. It slows down the graph visiting and the queries processing. Thus, the Cloud data is spread over several layers using IntermediateCloudNode. IntermediateCloudNode are used in order to enables the Points of a PointCloud to be rewritten with minimum modifications in the project graph. Modifications that add/remove/change edges, on Points only affect the leaves of the PointCloud graph.
  
 The PointCloudLeaf can extends imp3d objects to have a 3d geometry. The PointCloudLeaf objects are not limited to "point" as they can have any 3d implemented in GroIMP. However, within one Cloud all Points needs to extends the same Class. That class is defined on the Cloud creation and cannot be modified. To replace a Point of a specific class to another, a new Cloud is required. The PointCloudLeaf can extends imp3d objects to have a 3d geometry. The PointCloudLeaf objects are not limited to "point" as they can have any 3d implemented in GroIMP. However, within one Cloud all Points needs to extends the same Class. That class is defined on the Cloud creation and cannot be modified. To replace a Point of a specific class to another, a new Cloud is required.
groimp-platform/pointcloud.1730904337.txt.gz · Last modified: 2024/11/06 15:45 by gaetan