Class: MultiLayerNeuroSurface
Defined in: MultiLayerNeuroSurface.ts:182
Multi-layer brain surface with flexible layer compositing
Extends
Extended by
Constructors
Constructor
new MultiLayerNeuroSurface(geometry, config?): MultiLayerNeuroSurface;Defined in: MultiLayerNeuroSurface.ts:207
Parameters
geometry
config?
Returns
MultiLayerNeuroSurface
Overrides
Properties
layerStack
layerStack: LayerStack;Defined in: MultiLayerNeuroSurface.ts:183
compositeBuffer
compositeBuffer: Float32Array;Defined in: MultiLayerNeuroSurface.ts:184
vertexCount
vertexCount: number;Defined in: MultiLayerNeuroSurface.ts:185
clipPlanes
readonly clipPlanes: ClipPlaneSet;Defined in: MultiLayerNeuroSurface.ts:205
Clip plane set for surface clipping
geometry
geometry: SurfaceGeometry;Defined in: classes.ts:458
Inherited from
indices
indices: Uint32Array;Defined in: classes.ts:459
Inherited from
data
data: Float32Array;Defined in: classes.ts:460
Inherited from
vertexCurv
vertexCurv: Float32Array<ArrayBufferLike> | null;Defined in: classes.ts:461
Inherited from
mesh
mesh:
| Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>,
| Material<MaterialEventMap>
| Material<MaterialEventMap>[], Object3DEventMap>
| null;Defined in: classes.ts:462
Inherited from
threshold
threshold: [number, number];Defined in: classes.ts:463
Inherited from
irange
irange: [number, number];Defined in: classes.ts:464
Inherited from
hemisphere
hemisphere: string;Defined in: classes.ts:465
Inherited from
config
config: ResolvedSurfaceConfig;Defined in: classes.ts:466
Inherited from
viewer?
optional viewer?: any;Defined in: classes.ts:467
Inherited from
Methods
on()
on<K>(event, listener): UnsubscribeFn;Defined in: EventEmitter.ts:18
Type Parameters
K
K extends keyof SurfaceEventMap
Parameters
event
K
listener
TypedEventListener<SurfaceEventMap[K]>
Returns
Inherited from
once()
once<K>(event, listener): UnsubscribeFn;Defined in: EventEmitter.ts:30
Type Parameters
K
K extends keyof SurfaceEventMap
Parameters
event
K
listener
TypedEventListener<SurfaceEventMap[K]>
Returns
Inherited from
emit()
emit<K>(event, ...args): void;Defined in: EventEmitter.ts:41
Type Parameters
K
K extends keyof SurfaceEventMap
Parameters
event
K
args
...EventPayloadArgs<SurfaceEventMap[K]>
Returns
void
Inherited from
removeListener()
removeListener<K>(event, listenerToRemove): void;Defined in: EventEmitter.ts:60
Type Parameters
K
K extends keyof SurfaceEventMap
Parameters
event
K
listenerToRemove
TypedEventListener<SurfaceEventMap[K]>
Returns
void
Inherited from
removeAllListeners()
removeAllListeners(event?): void;Defined in: EventEmitter.ts:75
Parameters
event?
keyof SurfaceEventMap
Returns
void
Inherited from
NeuroSurface.removeAllListeners
off()
off<K>(event, listener): void;Defined in: EventEmitter.ts:84
Type Parameters
K
K extends keyof SurfaceEventMap
Parameters
event
K
listener
TypedEventListener<SurfaceEventMap[K]>
Returns
void
Inherited from
toggleWireframe()
toggleWireframe(enabled): void;Defined in: MultiLayerNeuroSurface.ts:267
Toggle a simple edge wireframe for debugging/presentation. Creates if missing.
Parameters
enabled
boolean
Returns
void
updateOutlineResolution()
updateOutlineResolution(
width,
height,
dpr?
): void;Defined in: MultiLayerNeuroSurface.ts:489
Parameters
width
number
height
number
dpr?
number = 1
Returns
void
requestColorUpdate()
requestColorUpdate(): void;Defined in: MultiLayerNeuroSurface.ts:509
Request a color update (throttled)
Returns
void
flushPendingColorUpdate()
flushPendingColorUpdate(): boolean;Defined in: MultiLayerNeuroSurface.ts:520
Composite a queued layer change immediately before a viewer paint.
The viewer calls this at the start of render() so its already-scheduled animation frame cannot paint stale vertex colors ahead of this surface's independently queued compositing callback.
Returns
boolean
addLayer()
addLayer(layer): void;Defined in: MultiLayerNeuroSurface.ts:540
Add a layer to the surface
Parameters
layer
Returns
void
addTwoDataLayer()
addTwoDataLayer(
id,
dataX,
dataY,
colorMap?,
config?
): TwoDataLayer;Defined in: MultiLayerNeuroSurface.ts:601
Add a 2D data layer that maps two scalar fields to a 2D colormap.
This is a convenience method for creating TwoDataLayer instances.
Parameters
id
string
Layer identifier
dataX
Float32Array<ArrayBufferLike> | number[]
First scalar field (X axis of colormap)
dataY
Float32Array<ArrayBufferLike> | number[]
Second scalar field (Y axis of colormap)
colorMap?
| ColorMap2DPreset | ColorMap2D
2D colormap preset name or ColorMap2D instance
config?
TwoDataLayerConfig = {}
Layer configuration options
Returns
Example
// Visualize effect size vs. confidence
surface.addTwoDataLayer(
'effect-confidence',
effectSizeData,
confidenceData,
'confidence',
{
rangeX: [-2, 2],
rangeY: [0, 1],
thresholdY: [0, 0.05] // Hide low-confidence values
}
);addParcelValueLayer()
addParcelValueLayer(
id,
parcelData,
vertexLabels,
colorMap?,
config?
): ParcelValueLayer;Defined in: MultiLayerNeuroSurface.ts:619
Add a parcel-native value layer.
Parcel values are expanded to vertices using the provided per-vertex parcel labels.
Parameters
id
string
parcelData
vertexLabels
| number[] | Int32Array<ArrayBufferLike> | Uint32Array<ArrayBufferLike>
colorMap?
string = 'viridis'
config?
Returns
getTwoDataLayer()
getTwoDataLayer(id): TwoDataLayer | undefined;Defined in: MultiLayerNeuroSurface.ts:634
Get a TwoDataLayer by ID (type-safe convenience method)
Parameters
id
string
Returns
TwoDataLayer | undefined
removeLayer()
removeLayer(id): boolean;Defined in: MultiLayerNeuroSurface.ts:642
Remove a layer by ID
Parameters
id
string
Returns
boolean
clearLayers()
clearLayers(options?): void;Defined in: MultiLayerNeuroSurface.ts:671
Remove all non-base layers (optionally including base).
Parameters
options?
ClearLayersOptions = {}
Returns
void
updateLayer()
updateLayer(id, updates): void;Defined in: MultiLayerNeuroSurface.ts:686
Update a layer's properties
Parameters
id
string
updates
Record<string, any>
Returns
void
updateLayerData()
updateLayerData(
id,
data,
indices?
): void;Defined in: MultiLayerNeuroSurface.ts:697
Parameters
id
string
data
Float32Array<ArrayBufferLike> | number[]
indices?
number[] | Uint32Array<ArrayBufferLike> | null
Returns
void
updateLayerVisibility()
updateLayerVisibility(id, visible): void;Defined in: MultiLayerNeuroSurface.ts:701
Parameters
id
string
visible
boolean
Returns
void
getLayer()
getLayer(id): Layer | undefined;Defined in: MultiLayerNeuroSurface.ts:708
Get a layer by ID
Parameters
id
string
Returns
Layer | undefined
setCurvature()
setCurvature(curvature, options?): void;Defined in: MultiLayerNeuroSurface.ts:719
Set curvature data for display as underlay. Creates curvature layer if it doesn't exist.
Parameters
curvature
Float32Array<ArrayBufferLike> | number[]
Curvature values per vertex
options?
Display options (brightness, contrast, smoothness, invert)
brightness?
number
contrast?
number
smoothness?
number
invert?
boolean
Returns
void
applyStyleBaseColor()
applyStyleBaseColor(color): boolean;Defined in: MultiLayerNeuroSurface.ts:752
Apply a style preset's base colour. The base is recoloured only while it still shows the colour the default or the previous preset gave it; a colour chosen any other way is kept. (Choosing exactly that colour yourself is indistinguishable from not choosing one.) The preset colour is remembered either way, for resetBaseColor. Returns whether the base colour changed.
Parameters
color
ColorRepresentation
Returns
boolean
resetBaseColor()
resetBaseColor(): void;Defined in: MultiLayerNeuroSurface.ts:764
Return the base layer to the colour of the current style preset (or the library default), so later presets recolour it again.
Returns
void
getCurvatureLayer()
getCurvatureLayer(): CurvatureLayer | undefined;Defined in: MultiLayerNeuroSurface.ts:778
Get the curvature layer if it exists
Returns
CurvatureLayer | undefined
showCurvature()
showCurvature(visible): void;Defined in: MultiLayerNeuroSurface.ts:788
Toggle curvature visibility. When curvature is shown, the base layer is hidden (curvature acts as the underlay). When curvature is hidden, the base layer is shown.
Parameters
visible
boolean
Returns
void
setClipPlane()
setClipPlane(
axis,
distance,
enabled?,
flip?
): void;Defined in: MultiLayerNeuroSurface.ts:824
Set a clip plane by axis.
Parameters
axis
Which axis to clip ('x', 'y', or 'z')
distance
number
Distance from origin along axis
enabled?
boolean = true
Whether to enable (default: true)
flip?
boolean = false
Flip clipping direction (default: false)
Returns
void
Example
// Clip at x=0 (midline sagittal cut)
surface.setClipPlane('x', 0);
// Clip right hemisphere only
surface.setClipPlane('x', 0, true, true);enableClipPlane()
enableClipPlane(axis): void;Defined in: MultiLayerNeuroSurface.ts:839
Enable a clip plane.
Parameters
axis
Returns
void
disableClipPlane()
disableClipPlane(axis): void;Defined in: MultiLayerNeuroSurface.ts:849
Disable a clip plane.
Parameters
axis
Returns
void
clearClipPlanes()
clearClipPlanes(): void;Defined in: MultiLayerNeuroSurface.ts:859
Clear all clip planes (disable all).
Returns
void
getClipPlane()
getClipPlane(axis): ClipPlane;Defined in: MultiLayerNeuroSurface.ts:869
Get a clip plane by axis.
Parameters
axis
Returns
getOrderedLayers()
getOrderedLayers(): readonly Layer[];Defined in: MultiLayerNeuroSurface.ts:909
Return the exact bottom-to-top layer order used by compositing.
Returns
readonly Layer[]
getLayerOrderDescriptors()
getLayerOrderDescriptors(): readonly LayerOrderDescriptor[];Defined in: MultiLayerNeuroSurface.ts:913
Returns
readonly LayerOrderDescriptor[]
validateLayerOrder()
validateLayerOrder(ids): LayerOrderResult;Defined in: MultiLayerNeuroSurface.ts:918
Validate a complete bottom-to-top order without mutating the surface.
Parameters
ids
readonly string[]
Returns
setLayerOrder()
setLayerOrder(ids): LayerOrderResult;Defined in: MultiLayerNeuroSurface.ts:925
Atomically set the complete bottom-to-top layer order.
Parameters
ids
readonly string[]
Returns
moveLayer()
moveLayer(layerId, destinationIndex): LayerOrderResult;Defined in: MultiLayerNeuroSurface.ts:939
Parameters
layerId
string
destinationIndex
number
Returns
updateLayers()
updateLayers(updates): void;Defined in: MultiLayerNeuroSurface.ts:957
Batch update multiple layers
Parameters
updates
Returns
void
updateColors()
updateColors(): void;Defined in: MultiLayerNeuroSurface.ts:1142
Composite all layers and update mesh colors
Returns
void
Overrides
setShading()
setShading(options): void;Defined in: MultiLayerNeuroSurface.ts:1341
Update fragment-level shading (threshold edges, outline, silhouette).
Parameters
options
Returns
void
updateConfig()
updateConfig(newConfig): void;Defined in: MultiLayerNeuroSurface.ts:1490
Update material settings. On the GPU path the compositor's Phong-based shader receives the same Phong properties a CPU material would.
Parameters
newConfig
Partial<SurfaceConfig>
Returns
void
Overrides
createMesh()
createMesh(): Mesh;Defined in: MultiLayerNeuroSurface.ts:1515
Create mesh with proper material settings
Returns
Mesh
Overrides
setCompositingMode()
setCompositingMode(useGPU): void;Defined in: MultiLayerNeuroSurface.ts:1575
Switch compositing mode between CPU and GPU
Parameters
useGPU
boolean
Returns
void
activateConfiguredCompositor()
activateConfiguredCompositor(): void;Defined in: MultiLayerNeuroSurface.ts:1640
Activate the constructor-requested GPU path once a viewer renderer exists.
Returns
void
setWideLines()
setWideLines(useWide): void;Defined in: MultiLayerNeuroSurface.ts:1646
Parameters
useWide
boolean
Returns
void
getCompositingMode()
getCompositingMode(): "CPU" | "GPU";Defined in: MultiLayerNeuroSurface.ts:1664
Get current compositing mode
Returns
"CPU" | "GPU"
dispose()
dispose(): void;Defined in: MultiLayerNeuroSurface.ts:1686
Dispose of all resources
Returns
void
Overrides
update()
update(property, value): void;Defined in: classes.ts:517
Parameters
property
string
value
any
Returns
void
Inherited from
getPickMetadata()
getPickMetadata(_vertexIndex): Record<string, unknown> | null;Defined in: classes.ts:647
Parameters
_vertexIndex
number
Returns
Record<string, unknown> | null
Inherited from
setVisible()
setVisible(visible): void;Defined in: classes.ts:654
Parameters
visible
boolean
Returns
void
Inherited from
setOpacity()
setOpacity(opacity): void;Defined in: classes.ts:662
Parameters
opacity
number
Returns
void
Inherited from
setSmoothShading()
setSmoothShading(smooth, smoothingAngle?): void;Defined in: classes.ts:682
Control surface shading style (visual only, doesn't modify geometry)
Parameters
smooth
boolean
If true, uses smooth shading (interpolated normals). If false, uses flat shading (face normals)
smoothingAngle?
number
Optional angle threshold in degrees (0-180). Edges above this angle remain sharp
Returns
void
Example
// Enable smooth shading for organic surfaces
surface.setSmoothShading(true);
// Smooth shading with 30° threshold (sharp edges preserved)
surface.setSmoothShading(true, 30);
// Flat shading for faceted/crystalline look
surface.setSmoothShading(false);Inherited from
applyLaplacianSmoothing()
applyLaplacianSmoothing(
iterations?,
lambda?,
method?,
preserveBoundaries?
): void;Defined in: classes.ts:718
Apply Laplacian smoothing to the surface vertices (modifies geometry)
Parameters
iterations?
number = 1
Number of smoothing iterations (1-10). More iterations = smoother surface
lambda?
number = 0.5
Smoothing strength (0-1). 0 = no effect, 1 = maximum smoothing per iteration
method?
"laplacian" | "taubin"
Smoothing algorithm:
- 'laplacian': Standard smoothing, may shrink surface
- 'taubin': Alternates shrink/expand to preserve volume
preserveBoundaries?
boolean = true
If true, boundary edges remain fixed
Returns
void
Example
// Gentle smoothing to reduce noise
surface.applyLaplacianSmoothing(2, 0.3, 'laplacian', true);
// Aggressive smoothing while preserving volume
surface.applyLaplacianSmoothing(5, 0.5, 'taubin', true);
// Smooth including boundaries (may distort edges)
surface.applyLaplacianSmoothing(3, 0.4, 'laplacian', false);Inherited from
NeuroSurface.applyLaplacianSmoothing
createSmoothedCopy()
createSmoothedCopy(
iterations?,
lambda?,
method?
): SurfaceGeometry;Defined in: classes.ts:768
Create a smoothed copy of this surface
Parameters
iterations?
number = 1
Number of smoothing iterations
lambda?
number = 0.5
Smoothing factor 0-1
method?
"laplacian" | "taubin"
'laplacian' or 'taubin'
Returns
A new smoothed surface geometry
Inherited from
NeuroSurface.createSmoothedCopy
updateMesh()
updateMesh(): Mesh;Defined in: classes.ts:793
Returns
Mesh