Exhibition

Exhibition

This component mainly controls the loading, display, control and additional functionality of the entire 3D exhibition.

Constructor

new Exhibition()

Source:

Extends

Members

(private) activationCountdown_ :number

Description:
  • An optional countdown for the start of reshuffling can be displayed here. The countdown is then displayed at the bottom right of the page.

Source:

An optional countdown for the start of reshuffling can be displayed here. The countdown is then displayed at the bottom right of the page.

Type:
  • number

(private) activationHint_ :Element

Description:
Source:

Dom reference for the activation hint when a Exhibition#activationCountdown_ time is defined.

Type:
  • Element

(private) allExhibitColliders_ :Array.<THREE.Object3D>

Description:
  • Contains all THREE collision objects of the exhibits for checking the collision by raycasting.

Source:

Contains all THREE collision objects of the exhibits for checking the collision by raycasting.

Type:
  • Array.<THREE.Object3D>

(private) allMassBodiesAreScalledUp_ :boolean

Description:
  • Defines if the mass objects of all exhibits are scalled up for normal collision behaviour.

Source:

Defines if the mass objects of all exhibits are scalled up for normal collision behaviour.

Type:
  • boolean

(protected) antialiasDisabled_ :boolean

Description:
  • Defines if antialias should be activated for the WebGLRenderer

Source:
Overrides:

Defines if antialias should be activated for the WebGLRenderer

Type:
  • boolean

(private) autoResetProvider_ :AutoResetProvider

Description:
  • Reference to AutoResetProvider to monitor and control the automatic reset of the page when the user is inactive for a specified period of time.

Source:

Reference to AutoResetProvider to monitor and control the automatic reset of the page when the user is inactive for a specified period of time.

Type:

(protected) cameraOribitview_ :THREE.Camera

Description:
  • Camera vor randering an exhibit orbit view

Source:

Camera vor randering an exhibit orbit view

Type:
  • THREE.Camera

(protected) cameraTopviewWrapper_ :THREE.Group

Description:
  • 3D container that contains the camera for the top view and is used for position changes.

Source:

3D container that contains the camera for the top view and is used for position changes.

Type:
  • THREE.Group

(protected) cameraTopview_ :THREE.Camera

Description:
  • Camera for rendering the top view

Source:

Camera for rendering the top view

Type:
  • THREE.Camera

(protected) camera_ :THREE.Camera

Description:
  • Current camera object which is used in the render process.

Source:
Overrides:

Current camera object which is used in the render process.

Type:
  • THREE.Camera

(private) checkExhibits_ :boolean

Description:
  • Specifies when to check in exhibits whether certain 3D elements can be removed after the first interaction with an artwork.

Source:

Specifies when to check in exhibits whether certain 3D elements can be removed after the first interaction with an artwork.

Type:
  • boolean

(protected) checkFrames_ :boolean

Description:
  • Determines whether the application should monitor the framerate to decide if it is necessary to create a renderer with different settings with lower quality but better performance.

Source:
Overrides:

Determines whether the application should monitor the framerate to decide if it is necessary to create a renderer with different settings with lower quality but better performance.

Type:
  • boolean

(protected) clock_ :THREE.Clock

Source:
Overrides:
Type:
  • THREE.Clock

(private) collidedSensors_ :Array.<string>

Description:
Source:

List of Cannon sensors that have detected a collision change in Exhibition#handleCollisionStart_ and Exhibition#handleCollisionEnd_

Type:
  • Array.<string>

(private) controlProvider_ :ControlProvider

Description:
  • Reference to ControlProvider to monitor the activation of a gamepad controller so that the application's control is adapted to it.

Source:

Reference to ControlProvider to monitor the activation of a gamepad controller so that the application's control is adapted to it.

Type:

(private) countdownIsRunning_ :boolean

Description:
  • Defines if the countdown for the reshuffeling of the exhibits is running.

Source:

Defines if the countdown for the reshuffeling of the exhibits is running.

Type:
  • boolean

(protected) creationCompleter_ :Completer

Description:
  • Completer is a helper which returns a promise. Its solved if the creation of the 3D scene is completed.

Source:
Overrides:

Completer is a helper which returns a promise. Its solved if the creation of the 3D scene is completed.

Type:
  • Completer

(protected) currentFps_ :number

Description:
  • Current framerate

Source:
Overrides:

Current framerate

Type:
  • number

(private) enableDebugRendering_ :boolean

Description:
  • Specifies whether debug rendering is generally enabled for the Cannon world. This can be activated via the URL parameter physic=1.

Source:

Specifies whether debug rendering is generally enabled for the Cannon world. This can be activated via the URL parameter physic=1.

Type:
  • boolean

enabled

Description:
  • Setter

Source:
Overrides:

Setter

(protected) enabled_ :boolean

Description:
  • Defines if the rendering is active

Source:
Overrides:

Defines if the rendering is active

Type:
  • boolean

(private) exhibitFrameOpener_ :Element

Description:
  • Dom reference for the button which should show an external installation in an iframe layer.

Source:

Dom reference for the button which should show an external installation in an iframe layer.

Type:
  • Element

(private) exhibitInfoOpener_ :Element

Description:
  • Dom reference for the button which should show the exhibit infos.

Source:

Dom reference for the button which should show the exhibit infos.

Type:
  • Element

(private) exhibitInteractiveHint_ :Element

Description:
  • Dom reference for the interaction hint which is displayed until the reshuffeling is completed.

Source:

Dom reference for the interaction hint which is displayed until the reshuffeling is completed.

Type:
  • Element

(private) exhibitViewCloser_ :Element

Description:
  • Dom reference for the button which should switch back to the normal visitor view.

Source:

Dom reference for the button which should switch back to the normal visitor view.

Type:
  • Element

(private) exhibitViewOpener_ :Element

Description:
  • Dom reference for the button which should switch into the exhibit/orbit view.

Source:

Dom reference for the button which should switch into the exhibit/orbit view.

Type:
  • Element

(private) exhibitionProvider_ :ExhibitionProvider

Description:
  • Reference to ExhibitionProvider to communicate with the backend and provide and monitor all information that dynamically changes the application.

Source:

Reference to ExhibitionProvider to communicate with the backend and provide and monitor all information that dynamically changes the application.

Type:

(private) exhibits_ :Array.<Exhibit>

Description:
  • list of all created exhibits

Source:

list of all created exhibits

Type:

(private) firstInteractionCompleter_ :Completer

Description:
  • Completer is a helper which returns a promise. It is solved when the first interaction of the user has been registered. In this case, the user has clicked on the audio hint box button that is displayed at startup.

Source:

Completer is a helper which returns a promise. It is solved when the first interaction of the user has been registered. In this case, the user has clicked on the audio hint box button that is displayed at startup.

Type:
  • Completer

(protected) fpsThreshhold_ :number|Array.<number>

Description:
Source:
Overrides:

General limit or list of limits for the current Abstract3DWorld#lowSettingStep_ for the check if the current framerate is detected as a lower framerate.

Type:
  • number | Array.<number>

(protected) frames_ :number

Description:
  • Current frame count since rendering was started

Source:
Overrides:

Current frame count since rendering was started

Type:
  • number

(private) ground_ :THREE.Mesh

Description:
  • Ground color plane

Source:

Ground color plane

Type:
  • THREE.Mesh

(private) gui_ :dat.GUI

Description:
Source:

Represents the Helper GUI https://github.com/dataarts/dat.gui to change some world settings WorldProvider#settings on the fly. The GUI is activated and displayed by the URL parameter gui=1.

Type:
  • dat.GUI

(private) hintBox_ :HintBox

Description:
  • Component reference for controlling the hint appearing.

Source:

Component reference for controlling the hint appearing.

Type:

(private) hintNavigationPromise_ :Promise

Description:
  • Promise which is solved when the navigation hint boxes (NAVIGATION_MOVEMENT, NAVIGATION_PERSPECTIVE and NAVIGATION_TOPVIEW) were displayed.

Source:

Promise which is solved when the navigation hint boxes (NAVIGATION_MOVEMENT, NAVIGATION_PERSPECTIVE and NAVIGATION_TOPVIEW) were displayed.

Type:
  • Promise

(private) isFirstActivation_ :boolean

Description:
  • This value indicates that it is the first entering of an activation zone by a visitor after reshuffling. As a result, no interactions with the activation zones are triggered during reshuffling.

Source:

This value indicates that it is the first entering of an activation zone by a visitor after reshuffling. As a result, no interactions with the activation zones are triggered during reshuffling.

Type:
  • boolean

(private) layerProvider_ :LayerProvider

Description:
  • Reference to LayerProvider for monitoring and controlling layer appearance and disappearance.

Source:

Reference to LayerProvider for monitoring and controlling layer appearance and disappearance.

Type:

(private) lights_ :Map.<string, THREE.Light>

Description:
  • List of created lights for the 3D scene

Source:

List of created lights for the 3D scene

Type:
  • Map.<string, THREE.Light>

(private) loadCheckInterval_ :number

Description:
  • Interval id for checking the loading progress.

Source:

Interval id for checking the loading progress.

Type:
  • number

(protected) lowFramerateCount_ :number

Description:
Source:
Overrides:

Frame count of lower frames than the defined Abstract3DWorld#fpsThreshhold_

Type:
  • number

(protected) lowSettingStep_ :number

Description:
  • Current step of the lower setting reduction

Source:
Overrides:

Current step of the lower setting reduction

Type:
  • number

(protected) lowSettingThreshhold_ :number|Array.<number>

Description:
Source:
Overrides:

Limit of Abstract3DWorld#lowFramerateCount_ for the current Abstract3DWorld#lowSettingStep_ of lower setting check

Type:
  • number | Array.<number>

(protected) maxPixelRatio_ :number

Description:
  • Defines if the rendering context should be rendered for retina in double resolution

Source:
Overrides:

Defines if the rendering context should be rendered for retina in double resolution

Type:
  • number

(private) moveController_ :MoveController

Description:
  • Initialization of the MoveController with values for acceleration and friction. x, z: values for the visitor movement in the in the 3D space; rh, rv: values visitor rotation in the 3D space

Source:

Initialization of the MoveController with values for acceleration and friction. x, z: values for the visitor movement in the in the 3D space; rh, rv: values visitor rotation in the 3D space

Type:

(protected) orbitControls_ :THREE.OrbitControls

Description:
  • THREE orbit controls will be used for the exhibit orbit view

Source:

THREE orbit controls will be used for the exhibit orbit view

Type:
  • THREE.OrbitControls

(private) orbit_ :Object

Description:
  • Holds the current orbit view configuration (azimuthal angle, polar angle and zoom)

Source:

Holds the current orbit view configuration (azimuthal angle, polar angle and zoom)

Type:
  • Object

(private) physicDebugger_ :Object

Description:
  • Cannon physics debugger to display polygon outline segments for the mass collision objects when reshuffeling occurs.

Source:

Cannon physics debugger to display polygon outline segments for the mass collision objects when reshuffeling occurs.

Type:
  • Object

(private) physicWorld_ :CANNON.World

Description:
  • Cannon world for handling all Cannon physic objects.

Source:

Cannon world for handling all Cannon physic objects.

Type:
  • CANNON.World

(protected) prevTime_ :number

Description:
  • Used as a value to check the framerate only in a certain time interval.

Source:
Overrides:

Used as a value to check the framerate only in a certain time interval.

Type:
  • number

(protected) raycaster_ :THREE.Raycaster

Source:
Overrides:
Type:
  • THREE.Raycaster

(protected) renderer_ :THREE.WebGLRenderer

Description:
  • Main WebGLRenderer

Source:
Overrides:

Main WebGLRenderer

Type:
  • THREE.WebGLRenderer

(protected, nullable) requestFrameId_ :number

Description:
  • Instance of the window.requestAnimationFrame call

Source:
Overrides:

Instance of the window.requestAnimationFrame call

Type:
  • number

(protected) resizeProvider_ :ResizeProvider

Description:
  • Reference to ResizeProvider for monitoring device size changes.

Source:
Overrides:

Reference to ResizeProvider for monitoring device size changes.

Type:

(private) savedProperties_ :Map.<string, number>

Description:
  • Any values can be stored in this object. The zoom value is stored before the change from the visitor view to the exhibit orbit view in order to animate back to this value during the animation in the initial state.

Source:

Any values can be stored in this object. The zoom value is stored before the change from the visitor view to the exhibit orbit view in order to animate back to this value during the animation in the initial state.

Type:
  • Map.<string, number>

(private) scene_ :THREE.Scene

Description:
  • Main THREE scene

Source:

Main THREE scene

Type:
  • THREE.Scene

(private) securityProvider_ :SecurityProvider

Description:
  • Reference to SecurityProvider for monitoring the data security consent.

Source:

Reference to SecurityProvider for monitoring the data security consent.

Type:

(protected) shouldBuildImmediately_ :boolean

Description:
  • Defines whether the 3D scene should be rendered immediately after the component is initialized.

Source:
Overrides:

Defines whether the 3D scene should be rendered immediately after the component is initialized.

Type:
  • boolean

(private) soundProvider_ :SoundProvider

Description:
  • Reference to SoundProvider for monitoring and executing sound loading processes and sound playback controling.

Source:

Reference to SoundProvider for monitoring and executing sound loading processes and sound playback controling.

Type:

(protected) stats_ :Stats

Description:
Source:
Overrides:
Type:
  • Stats

(private) videoProvider_ :VideoProvider

Description:
  • Reference to VideoProvider for creating and monitoring Vimeo video instances.

Source:

Reference to VideoProvider for creating and monitoring Vimeo video instances.

Type:

(private) viewSwitchTimeout_ :number

Description:
  • Timeout id for the delayed appearing of view switch buttons

Source:

Timeout id for the delayed appearing of view switch buttons

Type:
  • number

(private) virtualActiveSensor_ :Object|null

Description:
  • Holds the values of a detected Cannon sensor that was activated during the reshuffeling and is executed if it is still active when the reshuffeling is complete.

Source:

Holds the values of a detected Cannon sensor that was activated during the reshuffeling and is executed if it is still active when the reshuffeling is complete.

Type:
  • Object | null

(private) visitor_ :Visitor

Description:
  • Instance of the created visitor object

Source:

Instance of the created visitor object

Type:

(protected) worldProvider_ :WorldProvider

Description:
  • Reference to the WorldProvider for monitoring actions, loading processes and status changes of the created THREE.Scene.

Source:
Overrides:

Reference to the WorldProvider for monitoring actions, loading processes and status changes of the created THREE.Scene.

Type:

Methods

(private) activateGravity_()

Description:
  • Activates the attraction force when the user is in an exhibit activation zone. The other exhibits in the vicinity of the activated exhibit are rearranged according to their attraction force based on the tags.

Source:

(protected) activateInteraction_()

Description:
  • Activates interactivity within the 3D scene

Source:
Overrides:

(protected) activateScene_()

Description:
  • Enable the active scene for rendering and interaction.

Source:
Overrides:

(private) activateSensor_(exhibitId, elementId)

Description:
  • Entering an activity zone is registered.

Source:
Parameters:
Name Type Description
exhibitId number
elementId number

(private) animateToClosestOrbitPoint_(closestOrbitPoint, targetCameraY, targetCameraZ, targetCameraRotationX) → {Promise}

Description:
  • Starts the animated change from the visitor view to the exhibit orbit view

Source:
Parameters:
Name Type Description
closestOrbitPoint THREE.Vector3

Closest vector form the visitor position to the default obit view radius (zoom).

targetCameraY number
targetCameraZ number
targetCameraRotationX number
Returns:
Type
Promise

(async, protected) buildScene_() → {Promise}

Description:
  • Loads and creates the 3D scene.

Source:
Overrides:
Returns:
Type
Promise

(private) changeCamera_(camera)

Description:
  • Changes the camera to the passed one and updates the matrix to the viewport/render size.

Source:
Parameters:
Name Type Description
camera THREE.Camera

(private) changeExhibitView_()

Description:
  • Triggers the change from the visitor view to the top view and vice versa. For the period of the change the interaction possibility of the user is deactivated.

Source:

(protected) changeToLowSettings_(step)

Description:
  • Bad performance has been detected and the WebGLRenderer is being rebuilt with new settings to improve performance.

Source:
Overrides:
Parameters:
Name Type Description
step number

Current (already increased) Abstract3DWorld#lowSettingStep_

(private) checkControlling_()

Description:
  • Checks and updates the controller settings.

Source:

(protected) checkFramerate_()

Description:
Source:
Overrides:

(private) checkWebGlSupport_() → {boolean}

Description:
  • Checks if the browser supports WebGL

Source:
Overrides:
Returns:
Type
boolean

(private) createDebugGui_()

Description:
  • Defines the values that can be shown and changed in the GUI. The GUI is displayed with the url parameter gui=1.

Source:

(protected) createRenderer_()

Description:
  • Creates the main WebGLRenderer

Source:
Overrides:

(protected) deactivateInteraction_()

Description:
  • Deactivates interactivity within the 3D scene

Source:
Overrides:

(protected) deactivateScene_()

Description:
  • Disable the active scene for rendering and interaction.

Source:
Overrides:

(private) deactivateSensor_()

Description:
  • Leaving an activity zone is registered.

Source:

(protected) displayNoSupportMessage_()

Description:
  • Display a message if WebGL isn't supported.

Source:
Overrides:

(protected) drawScene_()

Source:
Overrides:

(private) enableGravity_(enable)

Description:
  • Activates the attraction of the exhibits, so that the physical calculation of Cannon affects their mass and thus the position.

Source:
Parameters:
Name Type Description
enable boolean

(private) handleCanvasClick_(event)

Description:
  • Analyzes the click on the canvas when the exhibition is in top view and checks by raycasting if an object in the list of Worldprovider#intersectables has been hit. The position of the visitor changes to the clicked position. A minimum distance to the next artwork is kept so that the user does not move too far away from all objects in the room. If an intersectable (exhibit or scenographic element) is hit, the next possible free position to the object is calculated.

Source:
Parameters:
Name Type Description
event Event

(private) handleCollisionEnd_(event)

Description:
  • Monitors the Cannon sensors and their interaction end. When the user leaves an activity zone, further actions are triggered (end of movement of other artwork, exhibit view and info buttons are hidden).

Source:
Parameters:
Name Type Description
event Object

(private) handleCollisionStart_(event)

Description:
  • Monitors the Cannon sensors and their interaction start. Checks if the visitor interacts with exhibit elements. If it is an activity zone, it is activated and triggers further events (rearrangement of other artworks, user profile update, display of exhibit view and info buttons).

Source:
Parameters:
Name Type Description
event Object

(private) handleLayerHide_(event)

Description:
  • Monitors whether a layer is closed and performs different actions depending on the layer.

Source:
Parameters:
Name Type Description
event LayerEvent

(private) handleLayerShow_(event)

Description:
  • Monitors whether a layer is opened and performs different actions depending on the layer.

Source:
Parameters:
Name Type Description
event LayerEvent

(private) handlePhysicPreStep_()

Description:
  • Monitor the step before the new powers are applied to physical objects. Influences the forces that occur.

Source:

(private) handleSwitchExhibitView_()

Description:
  • Initializes the switch from visitor view to exhibit orbit view and vice versa.

Source:

(private) handleSwitchView_()

Description:
  • Performs the animated switch from visitor view to top view and vice versa.

Source:

(private) handleVideoPause_()

Description:
  • Enables the background sound when a video is paused/stopped.

Source:

(private) handleVideoPlay_()

Description:
  • Disables the background sound when a video is started.

Source:

(private) initOrbitView_(artwork3D, orbitView) → {Promise}

Description:
  • Starts the animated change from the visitor view to the exhibit orbit view

Source:
Parameters:
Name Type Description
artwork3D THREE.Object3D

Artwork which should be the center of the orbit view.

orbitView ExhibitionElementOrbitViewModel
Returns:
Type
Promise

(protected) initScene_() → {Promise}

Description:
  • Initializes the renderer, creates the raycaster object and starts the creation of the 3D scene.

Source:
Overrides:
Returns:
Type
Promise

(private) leaveOrbitView_() → {Promise}

Description:
  • Starts the animated change from the exhibit orbit view back to the visitor view

Source:
Returns:
Type
Promise

onInit()

Description:
  • Component is ready and had loaded all dependencies (inherit method waitFor and sub components).

Source:
Overrides:

(private) openExhibitInfo_()

Description:
  • Initializes the opening of the layer for the exhibit infos.

Source:

(protected) pauseRenderer_()

Description:
  • Deactivates rendering

Source:
Overrides:

ready() → {Promise}

Description:
  • Can be called to receive a Promise that is triggered when the creation of the 3D scene is completed.

Source:
Overrides:
Returns:
Type
Promise

(protected) renderScene_(forcedRenderingopt)

Description:
  • Main render process (window.requestAnimationFrame call). Updates THREE clock, framerate check, stats and 3D scene Abstract3DWorld#updateScene_

Source:
Overrides:
Parameters:
Name Type Attributes Default Description
forcedRendering boolean <optional>
false

If it is set to true, a rendering will still take place even if Abstract3DWorld#enabled_ is set to false.

(protected) resize_()

Description:
  • Detects window size changes and therefore updates renderer sizes.

Source:
Overrides:

(private) showExhibitFrame_()

Description:
  • Initializes the display of the layer for the external installation of an exhibit. Rendering is paused during display to save performance.

Source:

(private) showNavigationHints_() → {Promise}

Description:
  • Shows the different navigation hints (HintBox) for the user one after the other.

Source:
Returns:
Type
Promise

(protected) startRenderScene_()

Description:
  • Starts the rendering of the active 3D scene

Source:
Overrides:

(protected) startRenderer_()

Description:
  • Activates rendering

Source:
Overrides:

(protected) stopRenderScene_()

Description:
  • Stops the rendering of the active 3D scene

Source:
Overrides:

(protected) updateCameraMatrix_()

Description:
  • Updates the current camera aspect based on the window size.

Source:
Overrides:

(protected) updateScene_(delta)

Description:
  • Main call for 3D scene updates in the render process.

Source:
Overrides:
Parameters:
Name Type Description
delta number