Skip to content
Last updated

API / geotoolkit3d / scene / surface / Surface / Surface

Class: Surface

surface.Surface.Surface

A Surface 3D object.<br> <br> This object represents a 3D surface with an optional attribute used for coloring.<br> The surface's geometry is defined by the given SurfaceData.<br> <br> The surface will contains holes whenever the given attribute or elevation is equals to nullvalue.<br> Note that the current implementation still generates the vertices for those points but abstain itself from rendering them.<br> <br>

Throws

if options object has no AbstractSurfaceData inside

Hierarchy

Implements

Table of contents

Constructors
  • [new Surface(options)](/solutions/geotoolkit/GeoToolkit_JS/apis/classes/geotoolkit3d.scene-3.surface-1.surface.surface.md#new surface(options))
Properties
Methods

Contents

Constructors

new Surface(options)

• new Surface(options)

Parameters

Name Type
optionsOptions

Overrides

AbstractSurface.constructor

Properties

ESTIMATE_RAM_PER_VERTEX

▪ Static ESTIMATE_RAM_PER_VERTEX: number


ESTIMATE_RAM_PER_VERTEX_INTERSECTION

▪ Static ESTIMATE_RAM_PER_VERTEX_INTERSECTION: number


ESTIMATE_VRAM_PER_VERTEX

▪ Static ESTIMATE_VRAM_PER_VERTEX: number


MAX_VALUES_PER_ELEMENT

▪ Static MAX_VALUES_PER_ELEMENT: number

Methods

add

▸ add(object): Surface

Adds object as child of this object.

Parameters

Name Type Description
objectObject3D<Object3DEventMap&gt; | Object3D<Object3DEventMap&gt;[]object

Returns

Surface

this

Inherited from

AbstractSurface.add


afterRender

▸ afterRender(scene, camera, plot, renderer): Surface

This function is called after rendering and can update this object's content.<br> <br> It should not trigger any invalidateObject though.<br> 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.<br> <br> This will be executed after the transformations simplification.<br> <br>

See

Plot for more details on the render steps

Parameters

Name Type Description
sceneSceneThe scene
cameraCameraThe camera used for this render phase.
plotPlotThe 3D plot
rendererWebGLRendererThe renderer

Returns

Surface

Inherited from

AbstractSurface.afterRender


beforeRender

▸ beforeRender(scene, camera, plot, renderer): Surface

This function is called prior to rendering and can update this object's content.<br> <br> It should not trigger any invalidateObject though.<br> 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.<br> <br> This will be executed after the transformations simplification.<br> <br>

See

Plot for more details on the render steps

Parameters

Name Type Description
sceneSceneThe scene
cameraCameraThe camera used for this render phase.
plotPlotThe 3D plot
rendererWebGLRendererThe renderer

Returns

Surface

Inherited from

AbstractSurface.beforeRender


clear

▸ clear(): Surface

Returns

Surface

Overrides

AbstractSurface.clear


dispose

▸ dispose(): void

Dispose object

Returns

void

Inherited from

AbstractSurface.dispose


getClassName

▸ getClassName(): string

Returns

string

Implementation of

IIntersectableMesh.getClassName

Inherited from

AbstractSurface.getClassName


getColorProvider

▸ getColorProvider(): RgbaColor | ColorProvider

Return the color provider of the intersectable.

Returns

RgbaColor | ColorProvider

Implementation of

IIntersectableMesh.getColorProvider


getData

▸ getData(): DataOut

Return this object's data (geometry, values) when available. Because data can be large, they are returned by reference (no copies).

Returns

DataOut


getMesh

▸ getMesh(): Mesh<BufferGeometry<NormalBufferAttributes&gt;, Material | Material[], Object3DEventMap&gt;

Returns the surface mesh

Returns

Mesh<BufferGeometry<NormalBufferAttributes&gt;, Material | Material[], Object3DEventMap&gt;

Implementation of

IIntersectableMesh.getMesh


getMeshBoundingBox

▸ getMeshBoundingBox(target): void

Return the bounding box of the mesh.<br> The bounding box should be calculated directly from the mesh's geometry vertex positions, representing the bounding box. The box coordinates must be in the local coordinate space of the mesh returned by getMesh method.

Parameters

Name Type Description
targetBox3result

Returns

void

Implementation of

IIntersectableMesh.getMeshBoundingBox


getOptions

▸ getOptions(): OptionsBaseOut

Get surface options

Returns

OptionsBaseOut

Overrides

AbstractSurface.getOptions


getTriangle

▸ getTriangle(triangleIndex, target): void

Return the triangle data at given index.<br> Vertices coordinates must be in the local coordinate space of the mesh returned by getMesh method.

Parameters

Name Type Description
triangleIndexnumberthe index of the triangle
targetTriangleDataresult

Returns

void

Implementation of

IIntersectableMesh.getTriangle


getTriangleCount

▸ getTriangleCount(): number

Return the number of triangle.

Returns

number

Implementation of

IIntersectableMesh.getTriangleCount


getVisible

▸ getVisible(): boolean

Get visible

Returns

boolean

true, if object is visible

Inherited from

AbstractSurface.getVisible


invalidateObject

▸ invalidateObject<T&gt;(event?): Surface

Notifies this object and its parent that this object has been invalidated.<br> If this object is in a Plot, it will be marked as dirty and will trigger a rendering cycle.<br>

Type parameters

Name
T

Parameters

Name Type Description
Optional eventEvent<T&gt;The event to fire

Returns

Surface

Inherited from

AbstractSurface.invalidateObject


isDisposed

▸ isDisposed(): boolean

Returns whether this object has been disposed

Returns

boolean

Inherited from

AbstractSurface.isDisposed


isSelectable

▸ isSelectable(): boolean

Return if this object can be picked/selected (see RendererPicking).<br>

Returns

boolean

Inherited from

AbstractSurface.isSelectable


notify

▸ notify<E&gt;(type, source, args?): Surface

  • Notify listeners. Parent nodes will also be notified if they are instances of geotoolkit3d.scene.Object3D

Type parameters

NameType
Eextends string

Parameters

Name Type Description
typeEevent types
sourceSurfaceof the event
Optional argsEventMap[E]arguments of the event

Returns

Surface

this

Overrides

AbstractSurface.notify


off

▸ off<E&gt;(type?, callback?): Surface

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.

Type parameters

NameType
Eextends string

Parameters

Name Type Description
Optional typeEtype of the event
Optional callback(eventType: E, sender: Surface, args: EventMap[E]) => voidfunction to be called

Returns

Surface

this

Overrides

AbstractSurface.off


on

▸ on<E&gt;(type, callback): Surface

Attach listener on event that will be called whenever the specified event is delivered to the target <p> If the callback function is already in the list of event listeners for this target, the function is not added a second time. </p> <p> 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. </p>

Type parameters

NameType
Eextends string

Parameters

Name Type Description
typeEtype of event or property
callback(eventType: E, sender: Surface, args: EventMap[E]) => voidto be called

Returns

Surface

this

Overrides

AbstractSurface.on


onStatsUpdated

▸ onStatsUpdated(metrics): Surface

This function is called when the plot has updated performance metric.<br> It will be called every set number of frames.<br> The number of frame is customizable in the plot options advancedrendering.performancemetrics.updateframeperiod and is 100 by default.

Parameters

Name Type Description
metricsPerformanceMetricsThe performance metrics.

Returns

Surface

Inherited from

AbstractSurface.onStatsUpdated


onVisibilityChanged

▸ Protected onVisibilityChanged(): void

This method is called if visibility is changed. Send event Events.VisibilityChanged

Returns

void

Inherited from

AbstractSurface.onVisibilityChanged


remove

▸ remove(object): Surface

Removes object as child of this object.

Parameters

Name Type Description
objectObject3D<Object3DEventMap&gt; | Object3D<Object3DEventMap&gt;[]object

Returns

Surface

this

Inherited from

AbstractSurface.remove


setData

▸ setData(data): Surface

Set this Surface data.

Parameters

Name Type
dataData

Returns

Surface


setOptions

▸ setOptions(options?): Surface

Set options, the given json will be merged with the object's state so that only the given options will be changed.<br>

Parameters

Name Type Description
Optional optionsOptionsBaseThe options to change

Returns

Surface

this

Overrides

AbstractSurface.setOptions


setPosition

▸ setPosition(position): Surface

Set Object's local position.

Parameters

Name Type Description
positionObjectlocal position
Optional position.xnumber
Optional position.ynumber
Optional position.znumber

Returns

Surface

this

Inherited from

AbstractSurface.setPosition


setRotation

▸ setRotation(x, y, z, order?): Surface

Set Object's local rotation (Euler angles), in radians.

Parameters

Name Type Description
xnumberx angle
ynumbery angle
znumberz angle
Optional orderEulerOrdereuler order

Returns

Surface

this

Inherited from

AbstractSurface.setRotation


setSelectable

▸ setSelectable(selectable): void

Set if this object can be picked/selected (see RendererPicking).<br>

Parameters

Name Type Description
selectablebooleanif can be selected

Returns

void

Inherited from

AbstractSurface.setSelectable


setVisible

▸ setVisible(visible, silent?): Surface

Set visible

Parameters

Name Type Description
visiblebooleantrue, if object is visible
Optional silentbooleantrue, if object shouldn't be invalidated

Returns

Surface

this

Inherited from

AbstractSurface.setVisible


updateObject

▸ updateObject(scene, camera): Surface

This function is called prior to rendering and can update this object's content.<br> <br> It should not trigger any invalidateObject though.<br> 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.<br> <br> This will be executed before the transformations simplification.<br> <br>

See

Plot for more details on the render steps

Parameters

Name Type Description
sceneSceneThe scene
cameraCameraThe camera

Returns

Surface

Inherited from

AbstractSurface.updateObject


useOwnHighlight

▸ 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.

Returns

boolean

Inherited from

AbstractSurface.useOwnHighlight


estimateMemoryCapabilities

▸ Static estimateMemoryCapabilities(options): MemoryCapabilitiesInfo

Estimate the maximum number of vertices that can be created in one Surface visual, with the given RAM/VRAM information.<br> With enough memory, the implementation limit for Surface 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.

Parameters

Name Type
optionsMemoryEstimationOptions

Returns

MemoryCapabilitiesInfo


getClassName

▸ Static getClassName(): string

Returns

string

Inherited from

AbstractSurface.getClassName


register

▸ Static register(): void

Register object for special processing through a callback function<br>

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.

Returns

void

Inherited from

AbstractSurface.register