Skip to main content

MoleculeRenderer

megane-viewer


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​

MeganeCameraState

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​

MeshData

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​

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​

HoverInfo


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​

MeganeCameraMode

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​

SelectionState


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

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​

SelectionState


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​

Frame

Returns​

void