API / geotoolkit3d / scene / pointset / PointSet / PointSet
PointSet is a set of 3D coordinates rendered as 3D symbols.
It's similar to a PointCloud and share most of the same API (even if there is no inheritance between them).
The main difference between PointSet and PointCloud is that a PointSet uses real 3D mesh for each symbol.
As a consequence, the rendered symbols are cleaner and sharper, and there is no longer depth fighting (symbols blinking by rendering on top of each other).
It is quite fast for rendering points as Cubes and Pyramids, however using Sphere geometry for really large sets of points (100 000+ points) can be slower, you might have better performances using a PointCloud with a sphere texture instead.
To save valuable memory on large pointset at creation time, it is advised to use typed Float32Array for points xyz, sizes and values as constructor parameters, in stead of regular Array.
↳
PointSet
Constructors
Methods
Methods
▸ add(object): PointSet
Adds object as child of this object.
| Name | Type | Description |
|---|---|---|
object | Object3D<Object3DEventMap> | Object3D<Object3DEventMap>[] | object |
this
▸ afterRender(scene, camera, plot, renderer): PointSet
This function is called after rendering and can update this object's content.
It should not trigger any invalidateObject though.
Note that it is not necessary nor recommended to explicitly call afterRender on this object's children as beforeRender will be called on all nodes present in the scene.
This will be executed after the transformations simplification.
See
Plot for more details on the render steps
| Name | Type | Description |
|---|---|---|
scene | Scene | The scene |
camera | Camera | The camera used for this render phase. |
plot | Plot | The 3D plot |
renderer | WebGLRenderer | The renderer |
▸ beforeRender(scene, camera, plot, renderer): PointSet
This function is called prior to rendering and can update this object's content.
It should not trigger any invalidateObject though.
Note that it is not necessary nor recommended to explicitly call beforeRender on this object's children as beforeRender will be called on all nodes present in the scene.
This will be executed after the transformations simplification.
See
Plot for more details on the render steps
| Name | Type | Description |
|---|---|---|
scene | Scene | The scene |
camera | Camera | The camera used for this render phase. |
plot | Plot | The 3D plot |
renderer | WebGLRenderer | The renderer |
▸ dispose(): void
Dispose object
void
▸ getClassName(): string
string
▸ getHighlightedObjects(): Object3D
Get the selected point mesh objects. Used in custom highlighting logic.
ICustomHighlight.getHighlightedObjects
▸ getOptions(): OptionsBaseOut
Get the pointset general options (legacy)
▸ getPointOptions(index): PerPointOptionsOut
Get the attributes of a point at the given index. Returns null if the given point index is not valid.
| Name | Type | Description |
|---|---|---|
index | number | index of point |
▸ getSelectedPoints(): number[]
Return the selected points indices (highlighted points).
number[]
▸ getVisible(): boolean
Get visible
boolean
true, if object is visible
▸ getWorldBoundingBox(target?): Box3
Returns the world space bounding box of this pointset. Because instanced rendering do not use a classic geometry, this custom method is necessary.
| Name | Type |
|---|---|
Optional target | Box3 |
Box3
bounding box
▸ hightlightShape(pointIndex?): void
Generate a highlight geometry for the given point index. Highlight is a geometry that is rendered with a special effect in highlightPass.
Deprecated
since 4.1, please use setSelectedPoints instead.
| Name | Type | Description |
|---|---|---|
Optional pointIndex | number | the index of the point to highlight. |
void
▸ invalidateObject<T>(event?): PointSet
Notifies this object and its parent that this object has been invalidated.
If this object is in a Plot, it will be marked as dirty and will trigger a rendering cycle.
| Name |
|---|
T |
| Name | Type | Description |
|---|---|---|
Optional event | Event<T> | The event to fire |
▸ isDisposed(): boolean
Returns whether this object has been disposed
boolean
▸ isSelectable(): boolean
Return if this object can be picked/selected (see RendererPicking).
boolean
▸ isValidIndex(index): boolean
Return if this point index is valid (belong to a point in this point set).
| Name | Type | Description |
|---|---|---|
index | number | the point index. |
boolean
▸ notify(type, source, args?): PointSet
Notify listeners
| Name | Type | Description |
|---|---|---|
type | string | event types |
source | any | of the event |
Optional args | any | arguments of the event |
this
▸ off(type?, callback?): PointSet
Detach listener on event. Calling .off() with no arguments removes all attached listeners. Calling .off(type) with no callback removes all attached listeners for specific type.
| Name | Type | Description |
|---|---|---|
Optional type | string | type of the event |
Optional callback | EventListener | function to be called |
this
▸ off<E>(type, callback): PointSet
| Name | Type |
|---|---|
E | extends string |
▸ on(type, callback, options?): PointSet
Attach listener on event that will be called whenever the specified event is delivered to the target
If the callback function is already in the list of event listeners for this target, the function is not added a second time.
If a particular anonymous function is in the list of event listeners registered for a certain target, and then later in the code, an identical anonymous function is given in an "on" call, the second function will also be added to the list of event listeners for that target.
| Name | Type | Description |
|---|---|---|
type | string | type of event or property |
callback | EventListener | to be called |
Optional options | Options | options of subscription |
this
▸ on<E>(type, callback, options?): PointSet
| Name | Type |
|---|---|
E | extends string |
| Name | Type |
|---|---|
type | E |
callback | (eventType: E, sender: PointSet, args: EventMap[E]) => void |
Optional options | Options |
▸ onStatsUpdated(metrics): PointSet
This function is called when the plot has updated performance metric.
It will be called every set number of frames.
The number of frame is customizable in the plot options advancedrendering.performancemetrics.updateframeperiod and is 100 by default.
| Name | Type | Description |
|---|---|---|
metrics | PerformanceMetrics | The performance metrics. |
▸ Protected onVisibilityChanged(): void
This method is called if visibility is changed. Send event Events.VisibilityChanged
void
▸ remove(object): PointSet
Removes object as child of this object.
| Name | Type | Description |
|---|---|---|
object | Object3D<Object3DEventMap> | Object3D<Object3DEventMap>[] | object |
this
▸ selectFullPointSet(select): void
Select and highlight (or unselect) the entire PointSet. (points set to not 'visible' will remain hidden).
To remove the highlight effect, call setSelectedPoints() with null.
| Name | Type | Description |
|---|---|---|
select | boolean | true to select and highlight the entire pointset, false to unselect and remove any highlight. |
void
▸ setOptions(options): PointSet
Set the PointSet options.
| Name | Type |
|---|---|
options | Options |
this
▸ setPointOptions(index, options): PointSet
Set per point options, note that it's more efficient to use setOptions() to modify large ensemble of points.
| Name | Type | Description |
|---|---|---|
index | number | The index of the point to edit |
options | PerPointOptions | The options |
this
▸ setPosition(position): PointSet
Set Object's local position.
| Name | Type | Description |
|---|---|---|
position | Object | local position |
Optional position.x | number | |
Optional position.y | number | |
Optional position.z | number |
this
▸ setRotation(x, y, z, order?): PointSet
Set Object's local rotation (Euler angles), in radians.
| Name | Type | Description |
|---|---|---|
x | number | x angle |
y | number | y angle |
z | number | z angle |
Optional order | EulerOrder | euler order |
this
▸ setSelectable(selectable): void
Set if this object can be picked/selected (see RendererPicking).
| Name | Type | Description |
|---|---|---|
selectable | boolean | if can be selected |
void
▸ setSelectedPoints(pointsIndices?): void
Select and highlight the defined points indices.
Can be used to highlight one or more points.
To remove the highlight effect, call setSelectedPoints() with null.
To select the entire pointset, use selectFullPointSet instead.
| Name | Type | Description |
|---|---|---|
Optional pointsIndices | number | number[] | the index, or indices of the points to highlight. Null to remove any point highlight. |
void
▸ setVisible(visible, silent?): PointSet
Set visible
| Name | Type | Description |
|---|---|---|
visible | boolean | true, if object is visible |
Optional silent | boolean | true, if object shouldn't be invalidated |
this
▸ updateObject(scene, camera): PointSet
This function is called prior to rendering and can update this object's content.
It should not trigger any invalidateObject though.
Note that it is not necessary nor recommended to explicitly call updateObject on this object's children as updateObject will be called on all nodes present in the scene.
This will be executed before the transformations simplification.
See
Plot for more details on the render steps
| Name | Type | Description |
|---|---|---|
scene | Scene | The scene |
camera | Camera | The camera |
▸ useOwnHighlight(): boolean
Returns true if this object make its own highlight effect (like geotoolkit3d.scene.reservoir.hexahedral.ReservoirGrid) This is to prevent unnecessary executions of the costly highlight passes.
boolean
▸ Static estimateMemoryCapabilities(options): MemoryCapabilitiesInfo
Estimate the maximum number of points that can be created in one PointSet visual, with the given RAM/VRAM information.
The data type (array / Float32Array) of input data (xyz positions, sizes, values) will affect the implementation limit. The calculation is based on input data as Float32Array, as it is optimal in performance and size.
With enough memory, the implementation limit for PointSet is eventually tied to Typed array allocation. This test will perform a one-time array allocation test on your device, to accurately estimate the maximum array size your browser/device is capable of. It is important to have enough memory available for this test to be accurate.
| Name | Type |
|---|---|
options | MemoryEstimationOptions |
▸ Static getClassName(): string
string
▸ Static register(): void
Register object for special processing through a callback function
Example
geotoolkit3d.util.ObjectProcessor.getDefaultInstance().registerObject(this.getClassName(), callback);Deprecated
since 5.0, to allow custom object highlighting, please instead make your Object implement the interface geotoolkit3d/scene/ICustomHighlight.
void