Class: MultiLayerNeuroSurface
Defined in: MultiLayerNeuroSurface.ts:187
Multi-layer brain surface with flexible layer compositing
Extends
Extended by
Constructors
Constructor
new MultiLayerNeuroSurface(geometry, config?): MultiLayerNeuroSurface;Defined in: MultiLayerNeuroSurface.ts:214
Parameters
geometry
config?
Returns
MultiLayerNeuroSurface
Overrides
Properties
layerStack
layerStack: LayerStack;Defined in: MultiLayerNeuroSurface.ts:188
compositeBuffer
compositeBuffer: Float32Array;Defined in: MultiLayerNeuroSurface.ts:189
vertexCount
vertexCount: number;Defined in: MultiLayerNeuroSurface.ts:190
clipPlanes
readonly clipPlanes: ClipPlaneSet;Defined in: MultiLayerNeuroSurface.ts:212
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?
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:274
Toggle a simple edge wireframe for debugging/presentation. Creates if missing.
Parameters
enabled
boolean
Returns
void
updateSurfaceAttachments()
updateSurfaceAttachments(): void;Defined in: MultiLayerNeuroSurface.ts:562
Refresh only attachment positions affected by morph/variant changes.
Returns
void
updateOutlineResolution()
updateOutlineResolution(
width,
height,
dpr?
): void;Defined in: MultiLayerNeuroSurface.ts:566
Parameters
width
number
height
number
dpr?
number = 1
Returns
void
requestColorUpdate()
requestColorUpdate(): void;Defined in: MultiLayerNeuroSurface.ts:586
Request a color update (throttled)
Returns
void
flushPendingColorUpdate()
flushPendingColorUpdate(): boolean;Defined in: MultiLayerNeuroSurface.ts:597
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:617
Add a layer to the surface
Parameters
layer
Returns
void
addTwoDataLayer()
addTwoDataLayer(
id,
dataX,
dataY,
colorMap?,
config?
): TwoDataLayer;Defined in: MultiLayerNeuroSurface.ts:679
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 = 'confidence'
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:697
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:712
Get a TwoDataLayer by ID (type-safe convenience method)
Parameters
id
string
Returns
TwoDataLayer | undefined
removeLayer()
removeLayer(id): boolean;Defined in: MultiLayerNeuroSurface.ts:720
Remove a layer by ID
Parameters
id
string
Returns
boolean
clearLayers()
clearLayers(options?): void;Defined in: MultiLayerNeuroSurface.ts:749
Remove all non-base layers (optionally including base).
Parameters
options?
ClearLayersOptions = {}
Returns
void
updateLayer()
updateLayer(id, updates): void;Defined in: MultiLayerNeuroSurface.ts:764
Update a layer's properties
Parameters
id
string
updates
Record<string, any>
Returns
void
updateLayerData()
updateLayerData(
id,
data,
indices?
): void;Defined in: MultiLayerNeuroSurface.ts:775
Parameters
id
string
data
Float32Array<ArrayBufferLike> | number[]
indices?
number[] | Uint32Array<ArrayBufferLike> | null
Returns
void
updateLayerVisibility()
updateLayerVisibility(id, visible): void;Defined in: MultiLayerNeuroSurface.ts:779
Parameters
id
string
visible
boolean
Returns
void
getLayer()
getLayer(id): Layer | undefined;Defined in: MultiLayerNeuroSurface.ts:786
Get a layer by ID
Parameters
id
string
Returns
Layer | undefined
setCurvature()
setCurvature(curvature, options?): void;Defined in: MultiLayerNeuroSurface.ts:797
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:830
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:842
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:856
Get the curvature layer if it exists
Returns
CurvatureLayer | undefined
showCurvature()
showCurvature(visible): void;Defined in: MultiLayerNeuroSurface.ts:866
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:902
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:917
Enable a clip plane.
Parameters
axis
Returns
void
disableClipPlane()
disableClipPlane(axis): void;Defined in: MultiLayerNeuroSurface.ts:927
Disable a clip plane.
Parameters
axis
Returns
void
clearClipPlanes()
clearClipPlanes(): void;Defined in: MultiLayerNeuroSurface.ts:937
Clear all clip planes (disable all).
Returns
void
getClipPlane()
getClipPlane(axis): ClipPlane;Defined in: MultiLayerNeuroSurface.ts:947
Get a clip plane by axis.
Parameters
axis
Returns
getOrderedLayers()
getOrderedLayers(): readonly Layer[];Defined in: MultiLayerNeuroSurface.ts:992
Return the exact bottom-to-top layer order used by compositing.
Returns
readonly Layer[]
getLayerOrderDescriptors()
getLayerOrderDescriptors(): readonly LayerOrderDescriptor[];Defined in: MultiLayerNeuroSurface.ts:996
Returns
readonly LayerOrderDescriptor[]
validateLayerOrder()
validateLayerOrder(ids): LayerOrderResult;Defined in: MultiLayerNeuroSurface.ts:1001
Validate a complete bottom-to-top order without mutating the surface.
Parameters
ids
readonly string[]
Returns
setLayerOrder()
setLayerOrder(ids): LayerOrderResult;Defined in: MultiLayerNeuroSurface.ts:1008
Atomically set the complete bottom-to-top layer order.
Parameters
ids
readonly string[]
Returns
moveLayer()
moveLayer(layerId, destinationIndex): LayerOrderResult;Defined in: MultiLayerNeuroSurface.ts:1022
Parameters
layerId
string
destinationIndex
number
Returns
updateLayers()
updateLayers(updates): void;Defined in: MultiLayerNeuroSurface.ts:1040
Batch update multiple layers
Parameters
updates
Returns
void
updateColors()
updateColors(): void;Defined in: MultiLayerNeuroSurface.ts:1227
Composite all layers and update mesh colors
Returns
void
Overrides
setShading()
setShading(options): void;Defined in: MultiLayerNeuroSurface.ts:1426
Update fragment-level shading (threshold edges, outline, silhouette).
Parameters
options
Returns
void
updateConfig()
updateConfig(newConfig): void;Defined in: MultiLayerNeuroSurface.ts:1575
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:1600
Create mesh with proper material settings
Returns
Mesh
Overrides
setCompositingMode()
setCompositingMode(useGPU): void;Defined in: MultiLayerNeuroSurface.ts:1660
Switch compositing mode between CPU and GPU
Parameters
useGPU
boolean
Returns
void
activateConfiguredCompositor()
activateConfiguredCompositor(): void;Defined in: MultiLayerNeuroSurface.ts:1725
Activate the constructor-requested GPU path once a viewer renderer exists.
Returns
void
setWideLines()
setWideLines(useWide): void;Defined in: MultiLayerNeuroSurface.ts:1731
Parameters
useWide
boolean
Returns
void
getCompositingMode()
getCompositingMode(): "CPU" | "GPU";Defined in: MultiLayerNeuroSurface.ts:1749
Get current compositing mode
Returns
"CPU" | "GPU"
dispose()
dispose(): void;Defined in: MultiLayerNeuroSurface.ts:1771
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" = 'laplacian'
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'
'laplacian' or 'taubin'
Returns
A new smoothed surface geometry
Inherited from
NeuroSurface.createSmoothedCopy
updateMesh()
updateMesh(): Mesh;Defined in: classes.ts:793
Returns
Mesh