API / geotoolkit3d / scene / volumetric / SinglePassRenderingVolume / SinglePassRenderingVolume
volumetric.SinglePassRenderingVolume.SinglePassRenderingVolume
A 3D Object that represent a unit cube with a 3D data texture which display a volume rendering.
SinglePassRenderingVolume supports both 3D and 4D volume rendering.
Creating a volume should follow the following steps:
- Instantiate the SinglePassVolumeRendering.
- Initialize the data dimensions and type via .initializeVolume(), or via the constructor options in step 1.
- Set the volume data via .setData().
Further re-initialization of the Volume type/dimensions will discard existing data.
↳
SinglePassRenderingVolume
Constructors
Methods
Constructors
• new SinglePassRenderingVolume(options?)
| Name | Type |
|---|---|
Optional options | Options |
Object3D.constructor
Methods
▸ add(object): SinglePassRenderingVolume
Adds object as child of this object.
| Name | Type | Description |
|---|---|---|
object | Object3D<Object3DEventMap> | Object3D<Object3DEventMap>[] | object |
this
▸ afterRender(scene, camera, plot, renderer): SinglePassRenderingVolume
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): SinglePassRenderingVolume
To update the camera position for the volume rendering
| 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 |
this
▸ dispose(): void
Dispose all event listeners, Object3D, cache
void
▸ get4DVolumeIndex(): number
Get the index of the 4D volume
number
index The index for the 4th dimension
▸ getClassName(): string
string
▸ getCurrentRaySamplingRate(): number
Get current ray sampling rate used by volume.
The ray sampling rate may change based on the user-defined setting in setOptions option.samplingrateoptions.
If both enablequalitypass and enableadaptiverate options are disabled, the current sampling rate will be equal to the user-defined option 'samplingrateoptions.raysamplingrate'.
If enablequalitypass or enableadaptiverate are enabled, the current sampling rate will change based on the following logic:
- If enablequalitypass is enabled, the volume can render either in fast or quality mode
- In 'fast' mode, if enableadaptiverate is false, the sampling rate is set to the user-defined option samplingrateoptions.raysamplingrate.
- In 'fast' mode, if enableadaptiverate is true, the sampling rate is set to an adaptive value based on current performance (minimum is samplingrateoptions.raysamplingrate, maximum is samplingrateoptions.maxsamplingrate).
- In 'quality' mode (QualityRendering pass), the sampling rate is set to the user-defined option samplingrateoptions.maxsamplingrate.
- If enablequalitypass is disabled, the volume will render exclusively in 'fast' mode as described above
number
current ray sampling rate
▸ getData(): DataOptionsOut
Get data of this volume.
data options
▸ getOptions(): OptionsBaseOut
Get the SinglePassRenderingVolume options
▸ getVisible(): boolean
Get visible
boolean
true, if object is visible
▸ initializeVolume(options): SinglePassRenderingVolume
Initialize Volume
Define the volume type (3D/4D), its data dimensions (number of samples)
Throws
if volume already initialized.
| Name | Type | Description |
|---|---|---|
options | InitOptions | SinglePassRenderingVolume.InitOptions |
this
▸ invalidateObject<T>(event?): SinglePassRenderingVolume
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 |
▸ is4DVolumeIndexReady(index): boolean
Return true if the specified 4D volume index is loaded and ready and can be selected via set4DVolumeIndex. If false is returned, this means this index isn't loaded yet, or this volume is not 4D, and selection of that index via set4DVolumeIndex will have no effect and log a console warning.
| Name | Type | Description |
|---|---|---|
index | number | The index for the 4th dimension |
boolean
▸ isAdaptiveSamplingRateSupported(): boolean
Check if adaptive sampling rate is supported on current browser/device.
boolean
true if Supported, otherwise false.
▸ isDisposed(): boolean
Returns whether this object has been disposed
boolean
▸ isSelectable(): boolean
Return if this object can be picked/selected (see RendererPicking).
boolean
▸ notify(type, source, args?): SinglePassRenderingVolume
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?): SinglePassRenderingVolume
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): SinglePassRenderingVolume
| Name | Type |
|---|---|
E | extends string |
| Name | Type |
|---|---|
type | E |
callback | (eventType: E, sender: SinglePassRenderingVolume, args: EventMap[E]) => void |
▸ on(type, callback, options?): SinglePassRenderingVolume
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?): SinglePassRenderingVolume
| Name | Type |
|---|---|
E | extends string |
| Name | Type |
|---|---|
type | E |
callback | (eventType: E, sender: SinglePassRenderingVolume, args: EventMap[E]) => void |
Optional options | Options |
▸ onStatsUpdated(metrics): SinglePassRenderingVolume
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
▸ release4DVolumeIndex(index): void
Remove the volume data for the given index only, allowing garbage collection.
If the volume index released is currently active and being viewed, it will continue to be able to render (as it is currently loaded on the GPU memory), until a different index is selected.
| Name | Type | Description |
|---|---|---|
index | number | The index for the 4th dimension |
void
▸ remove(object): SinglePassRenderingVolume
Removes object as child of this object.
| Name | Type | Description |
|---|---|---|
object | Object3D<Object3DEventMap> | Object3D<Object3DEventMap>[] | object |
this
▸ set4DVolumeIndex(index): void
Set the index of the 4D volume
Throws
if the index is invalid.
| Name | Type | Description |
|---|---|---|
index | number | The index for the 4th dimension: if the index provided is not an integer value,, it will interpolate between the two nearest integer-indexed volume data points. |
void
▸ setData(options): SinglePassRenderingVolume
Set data to this volume
Throws
if the volume data is invalid.
| Name | Type | Description |
|---|---|---|
options | DataOptions | SinglePassRenderingVolume.DataOptions |
this
▸ setOptions(options?): SinglePassRenderingVolume
Set the SinglePassRenderingVolume options
| Name | Type | Description |
|---|---|---|
Optional options | OptionsBase | The options |
this
▸ setPosition(position): SinglePassRenderingVolume
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?): SinglePassRenderingVolume
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
▸ setVisible(visible, silent?): SinglePassRenderingVolume
Set visible
| Name | Type | Description |
|---|---|---|
visible | boolean | true, if object is visible |
Optional silent | boolean | true, if object shouldn't be invalidated |
this
▸ updateColorMap(colors): void
Update transfer function from an array of color string.
| Name | Type | Description |
|---|---|---|
colors | string[] | Array of CSS color (like "rgba(x,x,x,x)" or "#ff00fc" or "0xff00fc") |
void
▸ updateObject(scene, camera): SinglePassRenderingVolume
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 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