MoleculeRenderer
megane-viewer / MoleculeRenderer
Class: MoleculeRenderer
Defined in: renderer/MoleculeRenderer.ts:284
Constructors
Constructor
new MoleculeRenderer():
MoleculeRenderer
Returns
MoleculeRenderer
Methods
alignCameraToAxis()
alignCameraToAxis(
axis):void
Defined in: renderer/MoleculeRenderer.ts:2249
Turn the camera to look along a crystallographic (±a, ±b, ±c) or
Cartesian (±x, ±y, ±z) axis, keeping the current target, distance
and zoom. The crystal axes come from the loaded snapshot's cell; without
one they coincide with x/y/z. See cameraOrientation.ts for the sign
and up-vector conventions.
Parameters
axis
"+a" | "+b" | "+c" | "+x" | "+y" | "+z" | "-a" | "-b" | "-c" | "-x" | "-y" | "-z"
Returns
void
applyAtomColorOverrides()
applyAtomColorOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:1160
Apply per-atom RGB overrides for the primary structure. Null reverts to the default CPK palette for every atom. Identity comparison short-circuits the GPU upload when the same buffer reference is supplied repeatedly.
Parameters
overrides
Float32Array<ArrayBufferLike> | null
Returns
void
applyCameraState()
applyCameraState(
state):void
Defined in: renderer/MoleculeRenderer.ts:2282
Restore camera to a previously saved state.
Parameters
state
Returns
void
clearAtomOverrides()
clearAtomOverrides():
void
Defined in: renderer/MoleculeRenderer.ts:1133
Clear all per-atom overrides, reverting to global uniforms.
Returns
void
clearBondOpacityOverrides()
clearBondOpacityOverrides():
void
Defined in: renderer/MoleculeRenderer.ts:1226
Clear per-bond opacity overrides, reverting to global opacity.
Returns
void
clearPolyhedra()
clearPolyhedra():
void
Defined in: renderer/MoleculeRenderer.ts:1033
Clear all polyhedra from the scene.
Returns
void
clearSelection()
clearSelection():
void
Defined in: renderer/MoleculeRenderer.ts:1975
Clear all selected atoms.
Returns
void
dispose()
dispose():
void
Defined in: renderer/MoleculeRenderer.ts:2169
Clean up all resources.
Returns
void
endAxesDrag()
endAxesDrag():
void
Defined in: renderer/MoleculeRenderer.ts:1435
End the axes-inset drag.
Returns
void
fitToViewAll()
fitToViewAll():
void
Defined in: renderer/MoleculeRenderer.ts:1084
Fit camera to show all structures (from all layers + primary snapshot). Call after loading snapshots into layers.
Returns
void
getCamera()
getCamera():
OrthographicCamera|PerspectiveCamera
Defined in: renderer/MoleculeRenderer.ts:1777
Get the active camera.
Returns
OrthographicCamera | PerspectiveCamera
getCameraState()
getCameraState():
MeganeCameraState|null
Defined in: renderer/MoleculeRenderer.ts:2267
Read current camera state. Returns null before mount.
Returns
MeganeCameraState | null
getCanvas()
getCanvas():
HTMLCanvasElement|null
Defined in: renderer/MoleculeRenderer.ts:1767
Get the canvas element for event listener attachment.
Returns
HTMLCanvasElement | null
getCurrentPositionsCopy()
getCurrentPositionsCopy():
Float32Array<ArrayBufferLike> |null
Defined in: renderer/MoleculeRenderer.ts:1883
Get a copy of current atom positions (public, for external use).
Returns
Float32Array<ArrayBufferLike> | null
getLabelOverlay()
getLabelOverlay():
LabelOverlay|null
Defined in: renderer/MoleculeRenderer.ts:1800
Get the label overlay canvas.
Returns
LabelOverlay | null
getLayer()
getLayer(
layerId):StructureLayer|undefined
Defined in: renderer/MoleculeRenderer.ts:1052
Get an existing structure layer (or undefined).
Parameters
layerId
string
Returns
StructureLayer | undefined
getLayerIds()
getLayerIds():
string[]
Defined in: renderer/MoleculeRenderer.ts:1066
Get all current layer IDs.
Returns
string[]
getMeasurement()
getMeasurement():
Measurement|null
Defined in: renderer/MoleculeRenderer.ts:1981
Compute the current geometric measurement based on selected atoms.
Returns
Measurement | null
getOrCreateLayer()
getOrCreateLayer(
layerId):StructureLayer
Defined in: renderer/MoleculeRenderer.ts:1042
Get or create a structure layer for a given node ID.
Parameters
layerId
string
Returns
StructureLayer
getRenderer()
getRenderer():
WebGLRenderer
Defined in: renderer/MoleculeRenderer.ts:1782
Get the WebGL renderer.
Returns
WebGLRenderer
getScene()
getScene():
Scene
Defined in: renderer/MoleculeRenderer.ts:1772
Get the Three.js scene.
Returns
Scene
getStats()
getStats():
object
Defined in: renderer/MoleculeRenderer.ts:1792
Live rendering stats for the performance HUD: current FPS (updated by the rAF loop) and the draw-call count of the most recent frame. megane draws with instanced meshes, so draw calls — not a scene mesh-object count — are the meaningful GPU-load metric.
Returns
object
drawCalls
drawCalls:
number
fps
fps:
number
hasCell()
hasCell():
boolean
Defined in: renderer/MoleculeRenderer.ts:1390
Check if cell data exists.
Returns
boolean
hasCellAxes()
hasCellAxes():
boolean
Defined in: renderer/MoleculeRenderer.ts:1447
Check if cell axes data exists.
Returns
boolean
hitTestAxesInset()
hitTestAxesInset(
cssX,cssY):boolean
Defined in: renderer/MoleculeRenderer.ts:1409
Returns true if the CSS-pixel coordinate hits the axes inset.
Parameters
cssX
number
cssY
number
Returns
boolean
isAxesDragging()
isAxesDragging():
boolean
Defined in: renderer/MoleculeRenderer.ts:1442
Whether an axes drag is in progress.
Returns
boolean
loadPolyhedra()
loadPolyhedra(
data):void
Defined in: renderer/MoleculeRenderer.ts:1024
Load polyhedra mesh data for rendering.
Parameters
data
Returns
void
loadSnapshot()
loadSnapshot(
snapshot,opts?):void
Defined in: renderer/MoleculeRenderer.ts:534
Load a molecular snapshot (topology + positions).
opts.fit (default true) controls the closing fitToView. Pass false when
the snapshot is a re-mapping of the one already on screen (same topology,
new positions — e.g. the wrap node toggling wrap/unwrap): the camera then
keeps its current zoom/target instead of re-fitting to the new bounds.
Parameters
snapshot
opts?
fit?
boolean
Returns
void
mount()
mount(
container):void
Defined in: renderer/MoleculeRenderer.ts:416
Mount the viewer into a DOM element.
Parameters
container
HTMLElement
Returns
void
moveAxesDrag()
moveAxesDrag(
cssX,cssY):boolean
Defined in: renderer/MoleculeRenderer.ts:1424
Continue an axes-inset drag. Returns true if currently dragging.
Parameters
cssX
number
cssY
number
Returns
boolean
raycastAtPixel()
raycastAtPixel(
clientX,clientY):HoverInfo
Defined in: renderer/MoleculeRenderer.ts:1896
Perform a pick at the given screen coordinates using CPU screen-space projection.
Parameters
clientX
number
clientY
number
Returns
removeInactiveLayers()
removeInactiveLayers(
activeIds):void
Defined in: renderer/MoleculeRenderer.ts:1071
Remove layers not in the given set of active IDs.
Parameters
activeIds
Set<string>
Returns
void
removeLayer()
removeLayer(
layerId):void
Defined in: renderer/MoleculeRenderer.ts:1057
Remove a structure layer and dispose its resources.
Parameters
layerId
string
Returns
void
renderSingleFrame()
renderSingleFrame():
void
Defined in: renderer/MoleculeRenderer.ts:1808
Render a single frame synchronously at the current (or custom) size. Used for image/video capture outside the rAF loop.
Returns
void
resetCamera()
resetCamera():
void
Defined in: renderer/MoleculeRenderer.ts:2224
Re-fit the camera to the current snapshot's bounding box.
Returns
void
resetView()
resetView():
void
Defined in: renderer/MoleculeRenderer.ts:1500
Reset view to fit all atoms.
Returns
void
resizeForCapture()
resizeForCapture(
width,height): () =>void
Defined in: renderer/MoleculeRenderer.ts:1842
Temporarily resize the renderer for capture, suppressing auto-resize. Returns a restore function to call after capture is complete.
Parameters
width
number
height
number
Returns
() => void
selectAtomsInRect()
selectAtomsInRect(
rect):number[]
Defined in: renderer/MoleculeRenderer.ts:1956
Return the indices of atoms whose centers fall inside a screen rectangle.
Parameters
rect
ClientRect
Returns
number[]
setAtomOpacity()
setAtomOpacity(
opacity):void
Defined in: renderer/MoleculeRenderer.ts:1109
Set atom opacity (independent of bonds).
Parameters
opacity
number
Returns
void
setAtomOpacityOverrides()
setAtomOpacityOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:1125
Set per-atom opacity overrides from selection pipeline.
Parameters
overrides
Float32Array
Returns
void
setAtomScale()
setAtomScale(
scale):void
Defined in: renderer/MoleculeRenderer.ts:1099
Set atom radius scale multiplier.
Parameters
scale
number
Returns
void
setAtomScaleOverrides()
setAtomScaleOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:1117
Set per-atom scale overrides from selection pipeline.
Parameters
overrides
Float32Array
Returns
void
setAtomsVisible()
setAtomsVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1231
Toggle atom visibility.
Parameters
visible
boolean
Returns
void
setBackgroundColor()
setBackgroundColor(
hexColor):void
Defined in: renderer/MoleculeRenderer.ts:1877
Update the Three.js scene and canvas background color (e.g. when theme changes).
Parameters
hexColor
number
Returns
void
setBondOpacity()
setBondOpacity(
opacity):void
Defined in: renderer/MoleculeRenderer.ts:1150
Set bond opacity (independent of atoms).
Parameters
opacity
number
Returns
void
setBondOpacityOverrides()
setBondOpacityOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:1221
Apply per-bond opacity overrides (one value per logical bond).
Parameters
overrides
Float32Array
Returns
void
setBondPeriodicImages()
setBondPeriodicImages(
images):void
Defined in: renderer/MoleculeRenderer.ts:927
Apply outside-boundary neighbor images emitted by a coordination/bond stream.
Parameters
images
PeriodicAtomImageData | null
Returns
void
setBondScale()
setBondScale(
scale):void
Defined in: renderer/MoleculeRenderer.ts:1142
Set bond radius scale multiplier.
Parameters
scale
number
Returns
void
setBondsVisible()
setBondsVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1369
Set whether the active pipeline emits bonds for the primary structure.
The bond mesh is only shown when this AND the current representation
(atoms/both) both call for bonds — otherwise switching templates
would resurface stale bond geometry once the representation toggles
back to atoms.
Parameters
visible
boolean
Returns
void
setCameraChangeCallback()
setCameraChangeCallback(
cb):void
Defined in: renderer/MoleculeRenderer.ts:2262
Register a callback invoked after each user camera interaction ends.
Parameters
cb
(() => void) | null
Returns
void
setCameraMode()
setCameraMode(
mode):void
Defined in: renderer/MoleculeRenderer.ts:2218
Switch projection mode by name (wraps setPerspective for symmetry).
Parameters
mode
Returns
void
setCellAxesVisible()
setCellAxesVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1395
Toggle cell axes indicator visibility.
Parameters
visible
boolean
Returns
void
setCellVisible()
setCellVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1383
Toggle simulation cell visibility.
Parameters
visible
boolean
Returns
void
setControlsEnabled()
setControlsEnabled(
enabled):void
Defined in: renderer/MoleculeRenderer.ts:1970
Enable/disable camera controls (used to suspend camera rotation during a box drag).
Parameters
enabled
boolean
Returns
void
setDrawingBoundary()
setDrawingBoundary(
boundary):void
Defined in: renderer/MoleculeRenderer.ts:899
Apply the pipeline's Drawing Boundary atom collection.
Parameters
boundary
DrawingBoundaryData | null
Returns
void
setLabels()
setLabels(
labels):void
Defined in: renderer/MoleculeRenderer.ts:893
Set per-atom labels for overlay display.
Parameters
labels
string[] | null
Returns
void
setPerspective()
setPerspective(
enabled):void
Defined in: renderer/MoleculeRenderer.ts:1741
Switch between orthographic and perspective projection.
Parameters
enabled
boolean
Returns
void
setPivotMarkerVisible()
setPivotMarkerVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1402
Toggle rotation-center marker visibility.
Parameters
visible
boolean
Returns
void
setPreviewSelection()
setPreviewSelection(
atomIndices):void
Defined in: renderer/MoleculeRenderer.ts:1941
Highlight an arbitrary set of atoms as a live "preview" of the Selection
Inspector's current selection (green, translucent). Independent of the
measurement selection. Pass null or [] to clear.
Parameters
atomIndices
number[] | null
Returns
void
setRepresentationByAtom()
setRepresentationByAtom(
modes):void
Defined in: renderer/MoleculeRenderer.ts:1323
Apply a per-atom representation: atoms flagged "line" are drawn by the
line renderer while every other atom keeps the global mesh representation
(setRepresentationType). This enables mixed views such as "show the water
as lines while the rest stays ball-and-stick". Pass null to revert to the
uniform global representation.
Must run after setRepresentationType, which establishes the base mesh
mode and reloads the line geometry; this overlays the per-atom split on top.
Parameters
modes
RepresentationType[] | null
Returns
void
setRepresentationType()
setRepresentationType(
type):void
Defined in: renderer/MoleculeRenderer.ts:1249
Switch between atom/bond and cartoon representation modes. "atoms" – classic ball-and-stick (default) "cartoon" – Cα backbone only; atoms/bonds hidden "both" – cartoon overlaid on atoms/bonds "surface" – solvent-accessible surface only "line" – VMD/PyMOL-style thin wireframe lines; atoms/bonds meshes hidden "illustrative" – Mol*-style spacefill spheres at full vdW radius with flat, unlit shading and a silhouette outline; bonds hidden
Parameters
type
RepresentationType
Returns
void
setRotationCenter()
setRotationCenter(
x,y,z,animate?):void
Defined in: renderer/MoleculeRenderer.ts:1511
Set the rotation center (controls target) to the given world coordinates.
Parameters
x
number
y
number
z
number
animate?
boolean = true
When true (default), smoothly animates the transition over PIVOT_ANIM_DURATION_MS. Pass false to update synchronously (legacy behaviour). The clicked atom is animated to the screen center.
Returns
void
setSelection()
setSelection(
atomIndices):SelectionState
Defined in: renderer/MoleculeRenderer.ts:1930
Set selected atoms directly (for external triggers). Returns new selection state.
Parameters
atomIndices
number[]
Returns
setVectors()
setVectors(
vectors):void
Defined in: renderer/MoleculeRenderer.ts:1014
Set per-atom vector data for arrow display.
Parameters
vectors
Float32Array<ArrayBufferLike> | null
Returns
void
setVectorScale()
setVectorScale(
scale):void
Defined in: renderer/MoleculeRenderer.ts:1019
Set arrow scale multiplier.
Parameters
scale
number
Returns
void
setViewInsets()
setViewInsets(
left,right):void
Defined in: renderer/MoleculeRenderer.ts:1712
Set pixel insets for overlay panels that occlude viewport edges.
Parameters
left
number
right
number
Returns
void
startAxesDrag()
startAxesDrag(
cssX,cssY):void
Defined in: renderer/MoleculeRenderer.ts:1415
Begin an axes-inset drag at the given CSS coordinates.
Parameters
cssX
number
cssY
number
Returns
void
testGetCameraState()
testGetCameraState():
MeganeCameraState|null
Defined in: renderer/MoleculeRenderer.ts:2298
Read camera state for tests. Returns null before mount/snapshot.
Returns
MeganeCameraState | null
testGetProjectedAtomPositions()
testGetProjectedAtomPositions():
MeganeProjectedAtom[]
Defined in: renderer/MoleculeRenderer.ts:2320
Project every atom of the primary snapshot to viewer-space pixels.
Returns
MeganeProjectedAtom[]
testGetVisibleSubsystems()
testGetVisibleSubsystems():
MeganeSubsystemVisibility
Defined in: renderer/MoleculeRenderer.ts:2303
Aggregate visibility booleans for each renderer subsystem.
Returns
MeganeSubsystemVisibility
toggleAtomSelection()
toggleAtomSelection(
atomIndex):SelectionState
Defined in: renderer/MoleculeRenderer.ts:1915
Toggle atom selection (right-click). Returns new selection state.
Parameters
atomIndex
number
Returns
updateBonds()
updateBonds(
bonds,bondOrders):void
Defined in: renderer/MoleculeRenderer.ts:822
Replace bond data and re-render bonds without resetting the camera. Used for per-frame bond recalculation (e.g. distance-based bonds).
Parameters
bonds
Uint32Array
bondOrders
Uint8Array<ArrayBufferLike> | null
Returns
void
updateBondsExt()
updateBondsExt(
bonds,bondOrders,positions,elements,nAtoms):void
Defined in: renderer/MoleculeRenderer.ts:844
Replace bond data with optional extended positions/elements (PBC ghost atoms). When positions/elements are provided, they include ghost atoms appended to the original arrays, and bond indices may reference those ghost atoms.
Parameters
bonds
Uint32Array
bondOrders
Uint8Array<ArrayBufferLike> | null
positions
Float32Array<ArrayBufferLike> | null
elements
Uint8Array<ArrayBufferLike> | null
nAtoms
number
Returns
void
updateFrame()
updateFrame(
frame):void
Defined in: renderer/MoleculeRenderer.ts:699
Update positions from a trajectory frame.
Fast path (uniform trajectory): the frame carries only positions, so this is a positions-only update reusing the frame-0 snapshot's topology and cell — allocation-free, exactly as before.
Slow path (heterogeneous trajectory): the frame additionally carries
elements/bonds/box, so the atom/bond meshes and unit cell are rebuilt
to match this frame's differing atom count, elements, or cell.
Parameters
frame
Returns
void