Skip to content

copper3d / Modules / Scene/copperSceneOnDemond / copperSceneOnDemond

Class: copperSceneOnDemond ​

Scene/copperSceneOnDemond.copperSceneOnDemond

Hierarchy ​

Table of contents ​

Constructors ​

Properties ​

Methods ​

Constructors ​

constructor ​

• new copperSceneOnDemond(container, renderer, opt?)

opt.controls picks the controls class, as it already did on copperScene. New in 3.9.0 -- this class hardcoded OrbitControls before, so passing the option produced no error and no effect.

The DEFAULT stays OrbitControls, which is what this class has always built. It differs from copperScene's default (Copper3dTrackballControls) on purpose: changing it would silently swap the controls under every existing on-demand viewer.

Note that the renderer's own options.controls is deliberately NOT consulted. It has never had any effect here, so honouring it now would change behaviour for anyone who set it and never noticed.

Parameters ​

NameType
containerHTMLDivElement
rendererWebGLRenderer
opt?ICopperSceneOpts

Overrides ​

baseScene.constructor

Defined in ​

src/Scene/copperSceneOnDemond.ts:39

Properties ​

ambientLight ​

• ambientLight: AmbientLight

Inherited from ​

baseScene.ambientLight

Defined in ​

src/Scene/baseScene.ts:18


callbackFrame ​

• Private callbackFrame: null | number = null

Handle of the callback loop's next frame; null while the loop is not running.

Defined in ​

src/Scene/copperSceneOnDemond.ts:23


camera ​

• camera: PerspectiveCamera | OrthographicCamera

Inherited from ​

baseScene.camera

Defined in ​

src/Scene/commonSceneMethod.ts:30


cameraPositionFlag ​

• cameraPositionFlag: boolean = false

Inherited from ​

baseScene.cameraPositionFlag

Defined in ​

src/Scene/baseScene.ts:20


container ​

• container: HTMLDivElement

Inherited from ​

baseScene.container

Defined in ​

src/Scene/commonSceneMethod.ts:28


content ​

• content: Group<Object3DEventMap>

Inherited from ​

baseScene.content

Defined in ​

src/Scene/baseScene.ts:21


controls ​

• controls: Copper3dTrackballControls | OrbitControls<Camera> | TrackballControls

Overrides ​

baseScene.controls

Defined in ​

src/Scene/copperSceneOnDemond.ts:19


copperControl ​

• copperControl: Controls

Inherited from ​

baseScene.copperControl

Defined in ​

src/Scene/baseScene.ts:19


copperOrthographicCamera ​

• copperOrthographicCamera: OrthographicCamera

Inherited from ​

baseScene.copperOrthographicCamera

Defined in ​

src/Scene/commonSceneMethod.ts:33


copperPerspectiveCamera ​

• copperPerspectiveCamera: PerspectiveCamera

Inherited from ​

baseScene.copperPerspectiveCamera

Defined in ​

src/Scene/commonSceneMethod.ts:32


depthStep ​

• Protected depthStep: number = 0.4

Inherited from ​

baseScene.depthStep

Defined in ​

src/Scene/commonSceneMethod.ts:45


directionalLight ​

• directionalLight: DirectionalLight

Inherited from ​

baseScene.directionalLight

Defined in ​

src/Scene/baseScene.ts:17


exportContent ​

• exportContent: Group<Object3DEventMap>

Inherited from ​

baseScene.exportContent

Defined in ​

src/Scene/baseScene.ts:22


isHalfed ​

• isHalfed: boolean = false

Inherited from ​

baseScene.isHalfed

Defined in ​

src/Scene/baseScene.ts:23


isResize ​

• isResize: boolean = false

Defined in ​

src/Scene/copperSceneOnDemond.ts:21


pickableObjects ​

• Protected pickableObjects: Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material<MaterialEventMap> | Material<MaterialEventMap>[], Object3DEventMap>[] = []

Inherited from ​

baseScene.pickableObjects

Defined in ​

src/Scene/commonSceneMethod.ts:47


preRenderCallbackFunctions ​

• Protected preRenderCallbackFunctions: preRenderCallbackFunctionType

Inherited from ​

baseScene.preRenderCallbackFunctions

Defined in ​

src/Scene/commonSceneMethod.ts:43


renderNrrdVolume ​

• Protected renderNrrdVolume: boolean = false

Inherited from ​

baseScene.renderNrrdVolume

Defined in ​

src/Scene/commonSceneMethod.ts:41


renderRequested ​

• renderRequested: undefined | boolean = false

Defined in ​

src/Scene/copperSceneOnDemond.ts:20


renderer ​

• renderer: WebGLRenderer

Inherited from ​

baseScene.renderer

Defined in ​

src/Scene/baseScene.ts:12


scene ​

• scene: Scene<Object3DEventMap>

Inherited from ​

baseScene.scene

Defined in ​

src/Scene/commonSceneMethod.ts:29


sceneName ​

• sceneName: string = ""

Inherited from ​

baseScene.sceneName

Defined in ​

src/Scene/baseScene.ts:15


sort ​

• Protected sort: boolean = true

Inherited from ​

baseScene.sort

Defined in ​

src/Scene/commonSceneMethod.ts:44


subCamera ​

• subCamera: null | PerspectiveCamera = null

Inherited from ​

baseScene.subCamera

Defined in ​

src/Scene/commonSceneMethod.ts:37


subCopperControl ​

• Protected subCopperControl: null | Controls = null

Inherited from ​

baseScene.subCopperControl

Defined in ​

src/Scene/commonSceneMethod.ts:40


subDiv ​

• subDiv: null | HTMLDivElement = null

Inherited from ​

baseScene.subDiv

Defined in ​

src/Scene/commonSceneMethod.ts:35


subRender ​

• Protected subRender: null | WebGLRenderer = null

Inherited from ​

baseScene.subRender

Defined in ​

src/Scene/commonSceneMethod.ts:39


subScene ​

• subScene: Scene<Object3DEventMap>

Inherited from ​

baseScene.subScene

Defined in ​

src/Scene/commonSceneMethod.ts:36


viewPoint ​

• viewPoint: CameraViewPoint

Inherited from ​

baseScene.viewPoint

Defined in ​

src/Scene/baseScene.ts:24


vignette ​

• vignette: undefined | customMeshType

Inherited from ​

baseScene.vignette

Defined in ​

src/Scene/baseScene.ts:16

Methods ​

addLights ​

▸ addLights(): void

Returns ​

void

Inherited from ​

baseScene.addLights

Defined in ​

src/Scene/baseScene.ts:142


addObject ​

▸ addObject(obj): void

Parameters ​

NameType
objany

Returns ​

void

Inherited from ​

baseScene.addObject

Defined in ​

src/Scene/baseScene.ts:138


addPreRenderCallbackFunction ​

▸ addPreRenderCallbackFunction(callbackFunction): number

Registers a per-frame callback, as on copperScene -- nrrdTools.start is the usual one.

This scene draws only on demand, and before 4.1.2 nothing here ran the registry: registering returned an id and the callback never ran. Now the scene runs a requestAnimationFrame loop of its own while anything is registered, and none while nothing is. The loop calls the callbacks and nothing else -- it does not render the WebGL scene, so a callback that changes what the scene shows still asks for a frame with requestRenderIfNotRequested.

Parameters ​

NameType
callbackFunctionFunction

Returns ​

number

Overrides ​

baseScene.addPreRenderCallbackFunction

Defined in ​

src/Scene/copperSceneOnDemond.ts:170


addSubView ​

▸ addSubView(): HTMLDivElement

create a new sub view to display models

Returns ​

HTMLDivElement

Inherited from ​

baseScene.addSubView

Defined in ​

src/Scene/commonSceneMethod.ts:159


confirmResize ​

▸ confirmResize(): void

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:155


createDemoMesh ​

▸ createDemoMesh(): void

Returns ​

void

Inherited from ​

baseScene.createDemoMesh

Defined in ​

src/Scene/commonSceneMethod.ts:82


dispose ​

▸ dispose(): void

Releases what this scene attached OUTSIDE itself.

The resize listener the constructor puts on window used to have no counterpart: every scene ever created stayed subscribed for the life of the page, kept alive by the closure, and went on calling requestRenderIfNotRequested -- and so onWindowResize, which resizes the SHARED renderer -- long after it stopped being displayed. An app that creates a scene per case leaks one of those per case.

Does not touch the scene graph or the renderer: what a scene's contents are worth keeping is the caller's decision, and the renderer is shared with every other scene. disposeScene(renderer, name) is the one that tears the contents down.

Deliberately NOT controls.dispose(). That path ends in domElement.style.touchAction = "", and every scene here shares one canvas -- only connect() sets it back to "none". Disposing one scene's controls would kill touch rotation on the canvas for the rest of the session. Disabling them is enough.

Safe to call twice.

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:222


fitView ​

▸ fitView(preset, aspect, bounds, margin?): boolean

Re-frames the camera on bounds, keeping the preset's view direction and up and replacing only its distance. Returns false when there is nothing to do -- an orthographic camera (no field of view to fit against), or a preset whose eye sits exactly on its target.

Does not render: the caller decides when to draw, which matters here because this scene renders on demand.

Parameters ​

NameType
presetCameraViewPoint
aspectnumber
boundsFitBounds
margin?number

Returns ​

boolean

Defined in ​

src/Scene/copperSceneOnDemond.ts:124


getDefaultViewPoint ​

▸ getDefaultViewPoint(): CameraViewPoint

Returns ​

CameraViewPoint

Inherited from ​

baseScene.getDefaultViewPoint

Defined in ​

src/Scene/baseScene.ts:113


init ​

▸ init(): void

Returns ​

void

Inherited from ​

baseScene.init

Defined in ​

src/Scene/baseScene.ts:57


loadDicom ​

▸ loadDicom(urls, opts?): void

Parameters ​

NameType
urlsstring | string[]
opts?dicomLoaderOptsType

Returns ​

void

Inherited from ​

baseScene.loadDicom

Defined in ​

src/Scene/commonSceneMethod.ts:183


loadGltf ​

▸ loadGltf(url, callback?, opts?): void

Parameters ​

NameType
urlstring
callback?(content: Group<Object3DEventMap>) => void
opts?GltfLoadOpts

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:72


loadMetadataUrl ​

▸ loadMetadataUrl(url): void

Parameters ​

NameType
urlstring

Returns ​

void

Inherited from ​

baseScene.loadMetadataUrl

Defined in ​

src/Scene/baseScene.ts:71


loadNrrd ​

▸ loadNrrd(url, loadingBar, callback?, opts?): void

Loads an NRRD in the canonical voxel order (i -> patient Left, j -> Posterior, k -> Superior), whatever order its file stores; see copperNrrdLoader.

Parameters ​

NameType
urlstring
loadingBarloadingBarType
callback?(volume: any, nrrdMeshes: nrrdMeshesType, nrrdSlices: nrrdSliceType, gui?: GUI) => void
opts?optsType

Returns ​

void

Inherited from ​

baseScene.loadNrrd

Defined in ​

src/Scene/commonSceneMethod.ts:302


loadNrrdTexture3d ​

▸ loadNrrdTexture3d(url, callback?): void

Parameters ​

NameType
urlstring
callback?(volume: any, gui?: GUI) => void

Returns ​

void

Deprecated

Shows the file in its stored voxel order, not the canonical LPS order every other loader uses, with window and threshold values fixed for one demo case. Use loadNrrd (copperNrrdLoader) instead. Will be removed in a future major release.

Inherited from ​

baseScene.loadNrrdTexture3d

Defined in ​

src/Scene/commonSceneMethod.ts:330


loadOBJ ​

▸ loadOBJ(url, callback?, opts?): void

Parameters ​

NameType
urlstring
callback?(mesh: Group<Object3DEventMap>) => void
opts?Object
opts.colorstring

Returns ​

void

Inherited from ​

baseScene.loadOBJ

Defined in ​

src/Scene/commonSceneMethod.ts:342


loadView ​

▸ loadView(viewpointData): void

Parameters ​

NameType
viewpointDataCameraViewPoint

Returns ​

void

Inherited from ​

baseScene.loadView

Defined in ​

src/Scene/baseScene.ts:100


loadViewUrl ​

▸ loadViewUrl(url): void

Parameters ​

NameType
urlstring

Returns ​

void

Inherited from ​

baseScene.loadViewUrl

Defined in ​

src/Scene/baseScene.ts:88


onRenderCameraChange ​

▸ onRenderCameraChange(): void

Returns ​

void

Inherited from ​

baseScene.onRenderCameraChange

Defined in ​

src/Scene/baseScene.ts:215


onWindowResize ​

▸ onWindowResize(): void

Returns ​

void

Inherited from ​

baseScene.onWindowResize

Defined in ​

src/Scene/baseScene.ts:221


pickModel ​

▸ pickModel(content, callback, options?): void

Parameters ​

NameType
contentGroup<Object3DEventMap>
callback(selectMesh: undefined | Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material<MaterialEventMap> | Material<MaterialEventMap>[], Object3DEventMap>) => void
options?string[]

Returns ​

void

Inherited from ​

baseScene.pickModel

Defined in ​

src/Scene/commonSceneMethod.ts:117


pickSpecifiedModel ​

▸ pickSpecifiedModel(content, mousePosition): Object

Parameters ​

NameType
contentMesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material<MaterialEventMap> | Material<MaterialEventMap>[], Object3DEventMap> | Mesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material<MaterialEventMap> | Material<MaterialEventMap>[], Object3DEventMap>[]
mousePositionmouseMovePositionType

Returns ​

Object

NameType
intersectedObjectnull | Object3D<Object3DEventMap>
intersectsIntersection<Object3D<Object3DEventMap>>[]

Inherited from ​

baseScene.pickSpecifiedModel

Defined in ​

src/Scene/commonSceneMethod.ts:139


removeLights ​

▸ removeLights(): void

Returns ​

void

Inherited from ​

baseScene.removeLights

Defined in ​

src/Scene/baseScene.ts:173


removePreRenderCallbackFunction ​

▸ removePreRenderCallbackFunction(id): void

Parameters ​

NameType
idnumber

Returns ​

void

Overrides ​

baseScene.removePreRenderCallbackFunction

Defined in ​

src/Scene/copperSceneOnDemond.ts:178


render ​

▸ render(): void

Returns ​

void

Overrides ​

baseScene.render

Defined in ​

src/Scene/copperSceneOnDemond.ts:236


requestRenderIfNotRequested ​

▸ requestRenderIfNotRequested(): void

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:243


runCallbackFrame ​

▸ Private runCallbackFrame(): void

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:183


setCameraPose ​

▸ setCameraPose(pose): void

Moves the camera to pose and syncs the controls' orbit pivot with it. Without that last part the next drag silently undoes the move -- see Controls/setCameraPose.ts.

Does not render; the caller decides when to draw.

Parameters ​

NameType
posePose

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:151


setDepth ​

▸ setDepth(value): void

Parameters ​

NameType
valuenumber

Returns ​

void

Inherited from ​

baseScene.setDepth

Defined in ​

src/Scene/commonSceneMethod.ts:97


setDicomFilesOrder ​

▸ setDicomFilesOrder(value): void

Parameters ​

NameType
value"ascending" | "descending"

Returns ​

void

Inherited from ​

baseScene.setDicomFilesOrder

Defined in ​

src/Scene/commonSceneMethod.ts:100


setViewPoint ​

▸ setViewPoint(camera, target?): CameraViewPoint

Parameters ​

NameType
cameraPerspectiveCamera
target?number[]

Returns ​

CameraViewPoint

Inherited from ​

baseScene.setViewPoint

Defined in ​

src/Scene/baseScene.ts:117


stopCallbackLoop ​

▸ Private stopCallbackLoop(): void

Returns ​

void

Defined in ​

src/Scene/copperSceneOnDemond.ts:194


updateBackground ​

▸ updateBackground(color1, color2): void

Parameters ​

NameType
color1string
color2string

Returns ​

void

Inherited from ​

baseScene.updateBackground

Defined in ​

src/Scene/baseScene.ts:201


updateControls ​

▸ updateControls(camera): void

Parameters ​

NameType
cameraPerspectiveCamera | OrthographicCamera

Returns ​

void

Inherited from ​

baseScene.updateControls

Defined in ​

src/Scene/commonSceneMethod.ts:316


updateDisplay ​

▸ updateDisplay(state): void

Parameters ​

NameType
statebaseStateType

Returns ​

void

Inherited from ​

baseScene.updateDisplay

Defined in ​

src/Scene/baseScene.ts:196


updateLights ​

▸ updateLights(state): void

Parameters ​

NameType
statebaseStateType

Returns ​

void

Inherited from ​

baseScene.updateLights

Defined in ​

src/Scene/baseScene.ts:179


updateModelChildrenVisualisation ​

▸ updateModelChildrenVisualisation(child): void

Parameters ​

NameType
childMesh<BufferGeometry<NormalBufferAttributes, BufferGeometryEventMap>, Material<MaterialEventMap> | Material<MaterialEventMap>[], Object3DEventMap>

Returns ​

void

Inherited from ​

baseScene.updateModelChildrenVisualisation

Defined in ​

src/Scene/baseScene.ts:206