- "Manager" object (
new PNext()?):- Keeps the minimal state and config necessary for loading/unloading octree nodes (pointBudget, minNodeSize).
- Can update one or more
PointCloudOctrees and trigger the loading of needed nodes. - Can perform queries into one or more octrees, delegating down to
PointCloudOctreeas much as possible:- Get all the points along a line (profile)
- Get volume above/below a polygon
- Get number of points or all the points within a certain distance of a point.
- etc.
- Data loaders:
- POC
- Las/Laz
- Greyhound
- Web-workers
- others?
- Octree-related objects which wrap the geometry loaded by the loaders (above) and can be added to a Three.js
Scene:PointCloudOctree- Three.jsObject3Dwhich can be added to a Scene.PointCloudOctreeNodePointCloudOctreeGeometry- Built by the loaders to contain the geometry for a node.PointCloudOctreeGeometryNode
- Materials
PointCloudMaterialEDLMaterial- Shaders
- Default classification array and interfaces.
- Default gradient array and interfaces.
Three.js objects which are not necessary for the core task of displaying a point cloud but which can be useful for other packages or applications:
Profile- Displays the actual profile in the Three.jsScene- Debug helpers
- Measurement 3D objects:
- Line
- Polygon
- Point
- Text rendering utilities.
Defines the models necessary to represent the state of the full pnext application:
PointCloudMaterialFeature: (following geojson here)LinePolygonPoint
- etc
- Should not know about Three.js at all.
- All models should be serializable and deserializable.
Provides components which can be used to easily use pnext inside of a react application:
<Viewer pointBudget={1000000} minNodeSize={150}>
<PointCloud material={material}>
<Line coords={}>
<Polygon coords={}>
<Point coord={}>
<Profile />
</PointCloud>
</Viewer>
- The viewer component would display a simple Three.js viewer, without any UI.
- Applications could use the provided viewer or integrate into their own.
- Similar to https://github.com/Izzimach/react-three ?
- Provides an actual UI that lets users interact with the 3D scene.
- Gets distributed as an app (electron?) like Potree.
- React-based, making use of
pnext-react?
+-------------+
| |
+---+ three.js <--+
| | | |
| +-------------+ |
| |
| |
| +-------------+ |
| | +--+
<---+ pnext-core |
| | <-+
| +-------------+ |
| | Components update properties
| | of core/threejs objects and
| +-------------+ | triggers re-rendering
| | +-+
Events from the canvas <---+ pnext-react |
or loading trigger state | | <-+
updates | +-------------+ |
| | State changes trigger
| | react updates/re-render
| +-------------+ |
| | +-+
+---> pnext-state |
+-+ <--+
| +-------------+ |
| | User interaction
State changes | | updates state
update viewer UI | +--------------+ |
| | | |
+-> pnext viewer +-+
| |
+--------------+