MoleculeRenderer
megane-viewer / MoleculeRenderer
Class: MoleculeRenderer
Defined in: renderer/MoleculeRenderer.ts:62
Constructors
Constructor
new MoleculeRenderer():
MoleculeRenderer
Returns
MoleculeRenderer
Methods
alignCameraToAxis()
alignCameraToAxis(
axis):void
Defined in: renderer/MoleculeRenderer.ts:1589
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:847
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:1604
Restore camera to a previously saved state.
Parameters
state
Returns
void
clearAtomOverrides()
clearAtomOverrides():
void
Defined in: renderer/MoleculeRenderer.ts:824
Clear all per-atom overrides, reverting to global uniforms.
Returns
void
clearBondOpacityOverrides()
clearBondOpacityOverrides():
void
Defined in: renderer/MoleculeRenderer.ts:913
Clear per-bond opacity overrides, reverting to global opacity.
Returns
void
clearPolyhedra()
clearPolyhedra():
void
Defined in: renderer/MoleculeRenderer.ts:738
Clear all polyhedra from the scene.
Returns
void
clearSelection()
clearSelection():
void
Defined in: renderer/MoleculeRenderer.ts:1395
Clear all selected atoms.
Returns
void
dispose()
dispose():
void
Defined in: renderer/MoleculeRenderer.ts:1530
Clean up all resources.
Returns
void
dragDeltaForAtom()
dragDeltaForAtom(
atomIndex,fromX,fromY,toX,toY): [number,number,number] |null
Defined in: renderer/MoleculeRenderer.ts:1359
World displacement of a screen drag in the camera-facing plane through
atom atomIndex (at its current position). Null when nothing is loaded.
Parameters
atomIndex
number
fromX
number
fromY
number
toX
number
toY
number
Returns
[number, number, number] | null
dragGesture()
dragGesture(
atomIndex,fromX,fromY,toX,toY):ViewDragGesture|null
Defined in: renderer/MoleculeRenderer.ts:1370
A drag grabbed at atom atomIndex, for an editor (see SelectionController.dragGesture).
Parameters
atomIndex
number
fromX
number
fromY
number
toX
number
toY
number
Returns
ViewDragGesture | null
endAxesDrag()
endAxesDrag():
void
Defined in: renderer/MoleculeRenderer.ts:1100
End the axes-inset drag.
Returns
void
fitToViewAll()
fitToViewAll():
void
Defined in: renderer/MoleculeRenderer.ts:789
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:1206
Get the active camera.
Returns
OrthographicCamera | PerspectiveCamera
getCameraState()
getCameraState():
MeganeCameraState|null
Defined in: renderer/MoleculeRenderer.ts:1599
Read current camera state. Returns null before mount.
Returns
MeganeCameraState | null
getCanvas()
getCanvas():
HTMLCanvasElement|null
Defined in: renderer/MoleculeRenderer.ts:1196
Get the canvas element for event listener attachment.
Returns
HTMLCanvasElement | null
getCurrentPositionsCopy()
getCurrentPositionsCopy():
Float32Array<ArrayBufferLike> |null
Defined in: renderer/MoleculeRenderer.ts:1302
Get a copy of current atom positions (public, for external use).
Returns
Float32Array<ArrayBufferLike> | null
getLabelOverlay()
getLabelOverlay():
LabelOverlay|null
Defined in: renderer/MoleculeRenderer.ts:1229
Get the label overlay canvas.
Returns
LabelOverlay | null
getLayer()
getLayer(
layerId):StructureLayer|undefined
Defined in: renderer/MoleculeRenderer.ts:757
Get an existing structure layer (or undefined).
Parameters
layerId
string
Returns
StructureLayer | undefined
getLayerIds()
getLayerIds():
string[]
Defined in: renderer/MoleculeRenderer.ts:771
Get all current layer IDs.
Returns
string[]
getMeasurement()
getMeasurement():
Measurement|null
Defined in: renderer/MoleculeRenderer.ts:1400
Compute the current geometric measurement based on selected atoms.
Returns
Measurement | null
getOrCreateLayer()
getOrCreateLayer(
layerId):StructureLayer
Defined in: renderer/MoleculeRenderer.ts:747
Get or create a structure layer for a given node ID.
Parameters
layerId
string
Returns
StructureLayer
getRenderer()
getRenderer():
WebGLRenderer
Defined in: renderer/MoleculeRenderer.ts:1211
Get the WebGL renderer.
Returns
WebGLRenderer
getScene()
getScene():
Scene
Defined in: renderer/MoleculeRenderer.ts:1201
Get the Three.js scene.
Returns
Scene
getStats()
getStats():
object
Defined in: renderer/MoleculeRenderer.ts:1221
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:1055
Check if cell data exists.
Returns
boolean
hasCellAxes()
hasCellAxes():
boolean
Defined in: renderer/MoleculeRenderer.ts:1112
Check if cell axes data exists.
Returns
boolean
hitTestAxesInset()
hitTestAxesInset(
cssX,cssY):boolean
Defined in: renderer/MoleculeRenderer.ts:1074
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:1107
Whether an axes drag is in progress.
Returns
boolean
loadPolyhedra()
loadPolyhedra(
data):void
Defined in: renderer/MoleculeRenderer.ts:729
Load polyhedra mesh data for rendering.
Parameters
data
Returns
void
loadSnapshot()
loadSnapshot(
snapshot,opts?):void
Defined in: renderer/MoleculeRenderer.ts:288
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:186
Mount the viewer into a DOM element.
Parameters
container
HTMLElement
Returns
void
moveAxesDrag()
moveAxesDrag(
cssX,cssY):boolean
Defined in: renderer/MoleculeRenderer.ts:1089
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:1315
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:776
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:762
Remove a structure layer and dispose its resources.
Parameters
layerId
string
Returns
void
renderSingleFrame()
renderSingleFrame():
void
Defined in: renderer/MoleculeRenderer.ts:1237
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:1578
Re-fit the camera to the current snapshot's bounding box.
Returns
void
resetRotationCenter()
resetRotationCenter():
void
Defined in: renderer/MoleculeRenderer.ts:1181
Reset the rotation center to the model center — the point a fresh fit orbits around (cell center, or the atoms' centroid without a cell) — keeping the view as setRotationCenter does.
Returns
void
resetView()
resetView():
void
Defined in: renderer/MoleculeRenderer.ts:1159
Reset view to fit all atoms.
Returns
void
resizeForCapture()
resizeForCapture(
width,height): () =>void
Defined in: renderer/MoleculeRenderer.ts:1271
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
screenToWorldAtPivot()
screenToWorldAtPivot(
clientX,clientY): [number,number,number] |null
Defined in: renderer/MoleculeRenderer.ts:1385
World point under a client pixel on the camera-facing plane through the current rotation pivot (the structure's center by default). Used to place a new atom on empty space. Null when nothing is mounted.
Parameters
clientX
number
clientY
number
Returns
[number, number, number] | null
selectAtomsInRect()
selectAtomsInRect(
rect):number[]
Defined in: renderer/MoleculeRenderer.ts:1351
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:809
Set atom opacity (independent of bonds).
Parameters
opacity
number
Returns
void
setAtomOpacityOverrides()
setAtomOpacityOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:819
Set per-atom opacity overrides from selection pipeline.
Parameters
overrides
Float32Array
Returns
void
setAtomScale()
setAtomScale(
scale):void
Defined in: renderer/MoleculeRenderer.ts:804
Set atom radius scale multiplier.
Parameters
scale
number
Returns
void
setAtomScaleOverrides()
setAtomScaleOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:814
Set per-atom scale overrides from selection pipeline.
Parameters
overrides
Float32Array
Returns
void
setAtomsVisible()
setAtomsVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:918
Toggle atom visibility.
Parameters
visible
boolean
Returns
void
setBackgroundColor()
setBackgroundColor(
hexColor):void
Defined in: renderer/MoleculeRenderer.ts:1296
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:837
Set bond opacity (independent of atoms).
Parameters
opacity
number
Returns
void
setBondOpacityOverrides()
setBondOpacityOverrides(
overrides):void
Defined in: renderer/MoleculeRenderer.ts:908
Apply per-bond opacity overrides (one value per logical bond).
Parameters
overrides
Float32Array
Returns
void
setBondPeriodicImages()
setBondPeriodicImages(
images):void
Defined in: renderer/MoleculeRenderer.ts:648
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:829
Set bond radius scale multiplier.
Parameters
scale
number
Returns
void
setBondsVisible()
setBondsVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1037
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:1594
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:1573
Switch projection mode by name (wraps setPerspective for symmetry).
Parameters
mode
Returns
void
setCellAxesVisible()
setCellAxesVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1060
Toggle cell axes indicator visibility.
Parameters
visible
boolean
Returns
void
setCellVisible()
setCellVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1048
Toggle simulation cell visibility.
Parameters
visible
boolean
Returns
void
setControlsEnabled()
setControlsEnabled(
enabled):void
Defined in: renderer/MoleculeRenderer.ts:1390
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:629
Apply the pipeline's Drawing Boundary atom collection.
Parameters
boundary
DrawingBoundaryData | null
Returns
void
setHoverHighlight()
setHoverHighlight(
atomIndices,color?):void
Defined in: renderer/MoleculeRenderer.ts:1341
Builder: mark the atoms a click would act on (null clears).
Parameters
atomIndices
number[] | null
color?
number
Returns
void
setLabels()
setLabels(
labels):void
Defined in: renderer/MoleculeRenderer.ts:623
Set per-atom labels for overlay display.
Parameters
labels
string[] | null
Returns
void
setPerspective()
setPerspective(
enabled):void
Defined in: renderer/MoleculeRenderer.ts:1191
Switch between orthographic and perspective projection.
Parameters
enabled
boolean
Returns
void
setPivotMarkerVisible()
setPivotMarkerVisible(
visible):void
Defined in: renderer/MoleculeRenderer.ts:1067
Toggle rotation-center marker visibility.
Parameters
visible
boolean
Returns
void
setPreviewSelection()
setPreviewSelection(
atomIndices):void
Defined in: renderer/MoleculeRenderer.ts:1336
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:989
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:932
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:1172
Set the rotation center (controls target) to the given world point.
Orthographic cameras keep the image and start orbiting around the point
where it is on screen (OVITO); perspective cameras pan it to the screen
center, smoothly when animate is true (default). See
CameraController.setRotationCenter.
Parameters
x
number
y
number
z
number
animate?
boolean = true
Returns
void
setSelection()
setSelection(
atomIndices):SelectionState
Defined in: renderer/MoleculeRenderer.ts:1327
Set selected atoms directly (for external triggers). Returns new selection state.
Parameters
atomIndices
number[]
Returns
setVectors()
setVectors(
vectors):void
Defined in: renderer/MoleculeRenderer.ts:719
Set per-atom vector data for arrow display.
Parameters
vectors
Float32Array<ArrayBufferLike> | null
Returns
void
setVectorScale()
setVectorScale(
scale):void
Defined in: renderer/MoleculeRenderer.ts:724
Set arrow scale multiplier.
Parameters
scale
number
Returns
void
setViewInsets()
setViewInsets(
left,right):void
Defined in: renderer/MoleculeRenderer.ts:1186
Set pixel insets for overlay panels that occlude viewport edges.
Parameters
left
number
right
number
Returns
void
setWarningHighlight()
setWarningHighlight(
atomIndices):void
Defined in: renderer/MoleculeRenderer.ts:1346
Builder: mark atoms in a close contact in red (null clears).
Parameters
atomIndices
number[] | null
Returns
void
startAxesDrag()
startAxesDrag(
cssX,cssY):void
Defined in: renderer/MoleculeRenderer.ts:1080
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:1609
Read camera state for tests. Returns null before mount/snapshot.
Returns
MeganeCameraState | null
testGetProjectedAtomPositions()
testGetProjectedAtomPositions():
MeganeProjectedAtom[]
Defined in: renderer/MoleculeRenderer.ts:1631
Project every atom of the primary snapshot to viewer-space pixels.
Returns
MeganeProjectedAtom[]
testGetVisibleSubsystems()
testGetVisibleSubsystems():
MeganeSubsystemVisibility
Defined in: renderer/MoleculeRenderer.ts:1614
Aggregate visibility booleans for each renderer subsystem.
Returns
MeganeSubsystemVisibility
toggleAtomSelection()
toggleAtomSelection(
atomIndex):SelectionState
Defined in: renderer/MoleculeRenderer.ts:1322
Toggle atom selection (right-click). Returns new selection state.
Parameters
atomIndex
number
Returns
updateBonds()
updateBonds(
bonds,bondOrders):void
Defined in: renderer/MoleculeRenderer.ts:552
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:574
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:427
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