Initial commit
This commit is contained in:
commit
05c65aad4d
155 changed files with 93617 additions and 0 deletions
239
viewer/FUNCTIONS.md
Normal file
239
viewer/FUNCTIONS.md
Normal file
|
|
@ -0,0 +1,239 @@
|
|||
# Viewer Function Reference
|
||||
|
||||
This file documents the main exported viewer functions and helpers used by the viewer runtime.
|
||||
It is intended as a quick reference for the current `viewer/` module exports and their roles.
|
||||
|
||||
## `viewer/main.js`
|
||||
|
||||
`viewer/main.js` exposes the exported `Viewer` object and core runtime entry points.
|
||||
|
||||
- `Viewer.MainInit()`
|
||||
- Initialize the viewer runtime.
|
||||
- Loads `viewer-settings.json`, configures the DOM container, sets up core state, starts the animation loop, and prepares the viewer for model loading.
|
||||
|
||||
- `Viewer.mainLoadModel()`
|
||||
- Load the current model from `core.fileObject`.
|
||||
- Handles all supported file formats, archive transformations, GLTF/GLB loading, and post-load scene preparation.
|
||||
|
||||
- `Viewer.mainLoadModelWrapper()`
|
||||
- Wrapper for `mainLoadModel()`.
|
||||
- Normalizes auto-paths and archive paths before delegating to the loader.
|
||||
|
||||
- `Viewer.prepareSandboxScene()`
|
||||
- Reset the viewer for sandbox mode.
|
||||
- Clears loaded objects, resets camera and controls, and shows sandbox UI hints.
|
||||
|
||||
- `Viewer.setModelPaths()`
|
||||
- Parse and populate `core.fileObject` from `core.fileObject.originalPath`.
|
||||
- Sets `filename`, `basename`, `extension`, `path`, `uri`, and `relativePath`.
|
||||
|
||||
- `Viewer.normalizeFileUrl(rawUrl)`
|
||||
- Normalize source URLs and Drupal `public://` paths.
|
||||
- Converts relative model attributes into canonical browser URLs.
|
||||
|
||||
- `Viewer.normalizeDrupalFilesPath(path)`
|
||||
- Normalize Drupal file paths by stripping `sites/default/files` prefixes and trimming slashes.
|
||||
|
||||
- `Viewer.normalizeArchiveModelPath(path)`
|
||||
- Fix archive-derived model paths by injecting a `/gltf/` segment when needed.
|
||||
|
||||
- `Viewer.applyCameraOverridesFromUrl()`
|
||||
- Apply camera position, camera target, and FOV overrides from URL query parameters.
|
||||
|
||||
- `Viewer.toggleFullscreen()`
|
||||
- Enter or exit fullscreen mode for the viewer container.
|
||||
|
||||
- `Viewer.updateSize()`
|
||||
- Resize the renderer, camera, GUI, metadata, and action menu when the viewport changes.
|
||||
|
||||
- `Viewer.setCameraProjection(projection)`
|
||||
- Switch the viewer camera between perspective and orthographic projection.
|
||||
|
||||
- `Viewer.toHexColor(input)` / `Viewer.toThreeColor(input)`
|
||||
- Normalize different color input formats into numeric or `THREE.Color` values.
|
||||
|
||||
- `Viewer.disposeObjectResources(object)`
|
||||
- Dispose of mesh geometry and material resources for an object tree.
|
||||
|
||||
- `Viewer.removeAndDisposeFromScene(object)`
|
||||
- Remove an object or object array from the scene and dispose its resources.
|
||||
|
||||
- `Viewer.resetLoadedModelState()`
|
||||
- Clear viewer state related to loaded models, annotations, selection, and helper objects.
|
||||
|
||||
- `Viewer.reportError(error, options)`
|
||||
- Report viewer errors consistently to console, toast notifications, and E2E state.
|
||||
|
||||
- URL and parameter parsing utilities:
|
||||
- `Viewer.parseBooleanParam(value)`
|
||||
- `Viewer.parseFloatParam(value)`
|
||||
- `Viewer.parseVector2Param(value)`
|
||||
- `Viewer.parseVector3Param(value)`
|
||||
- `Viewer.formatVector3Param(vector)`
|
||||
|
||||
- Viewer support utilities:
|
||||
- `Viewer.getSupportedFormatsText()`
|
||||
- `Viewer.getSupportedArchiveFormatsText()`
|
||||
- `Viewer.getDistanceMeasurementScaleMeters()`
|
||||
- `Viewer.formatMeasuredDistance(rawDistanceInModelUnits)`
|
||||
- `Viewer.toggleAutoRotateByKeyboard()`
|
||||
- `Viewer.onViewerKeyDown(event)`
|
||||
|
||||
|
||||
## `viewer/loaders.js`
|
||||
|
||||
`viewer/loaders.js` contains model loaders, environment sync logic, and loading progress/error handlers.
|
||||
|
||||
- `loadDDSLoader()` / `loadMTLLoader()` / `loadOBJLoader()` / `loadFBXLoader()`
|
||||
- `loadPLYLoader()` / `loadColladaLoader()` / `loadSTLLoader()` / `loadXYZLoader()`
|
||||
- `loadTDSLoader()` / `loadPCDLoader()` / `loadGLTFLoader()` / `loadDRACOLoader()`
|
||||
- `loadIFCLoader()` / `loadRoomEnvironment()` / `loadHDRLoader()`
|
||||
- Dynamically import the corresponding Three.js loader or environment helper.
|
||||
|
||||
- `syncSceneEnvironment(enabled = true, preset = null)`
|
||||
- Load the environment texture for the scene and apply it to `core.scene`.
|
||||
- Supports built-in studio and HDR presets.
|
||||
|
||||
- `loadModel()`
|
||||
- Main engine for model loading.
|
||||
- Detects file type, chooses the correct loader, applies geometry/material setup, adds the object to the scene, and triggers metadata loading.
|
||||
|
||||
- `getModuleAssetBasePath()`
|
||||
- Resolve the runtime asset base path based on build target, Drupal environment, and local preview mode.
|
||||
|
||||
- `onError(_event)`
|
||||
- Generic loader error handler.
|
||||
|
||||
- `onErrorMTL(_event)`
|
||||
- Fallback loader error handler for OBJ/MTL bundles.
|
||||
|
||||
- `onErrorGLB(_event, params, loadedTimes)`
|
||||
- Retry logic for GLB loading errors.
|
||||
|
||||
- `onProgress(xhr)`
|
||||
- Update progress UI while a model is downloading.
|
||||
|
||||
|
||||
## `viewer/metadata.js`
|
||||
|
||||
`viewer/metadata.js` handles metadata fetching, metadata panel rendering, and IIIF support.
|
||||
|
||||
- `addWissKIMetadata(label, value)`
|
||||
- Map WissKI field names to localized metadata display labels.
|
||||
|
||||
- `lilGUIhasFolder(folder, name)` / `lilGUIgetFolder(gui, name)`
|
||||
- Find lil-gui folders by title.
|
||||
|
||||
- `expandMetadata()`
|
||||
- Toggle the metadata panel open/closed.
|
||||
|
||||
- `appendMetadata(metadataContent)`
|
||||
- Render metadata HTML into the viewer metadata container.
|
||||
|
||||
- `fetchMetadata(_object, _type)`
|
||||
- Count vertices or faces for a mesh object.
|
||||
|
||||
- `handleMetadataResponse(data, metadata, object, hierarchyMain)`
|
||||
- Build the metadata panel and edit/hierarchy UI after loading a model.
|
||||
|
||||
- `settingsHandler(object, hierarchyMain, data)`
|
||||
- Apply object and camera settings after metadata has been loaded.
|
||||
|
||||
- `traverseObject(object)`
|
||||
- Run object traversal logic for metadata and camera setup.
|
||||
|
||||
- `presentationMode(object)`
|
||||
- Apply presentation-mode-specific scene setup.
|
||||
|
||||
- `fetchSettings(object)`
|
||||
- Fetch remote metadata payloads and dispatch metadata handling.
|
||||
|
||||
- `createIIIFDropdown(iiifConfigURL)`
|
||||
- Render a dropdown for selectable IIIF manifests.
|
||||
|
||||
- `createAIM3IFDropdown()`
|
||||
- Render a dropdown for selectable AIM³IF manifests.
|
||||
|
||||
- `createManifestUI()`
|
||||
- Create the IIIF/AIM³IF manifest loader UI panel.
|
||||
|
||||
|
||||
## `viewer/viewer-utils.js`
|
||||
|
||||
`viewer/viewer-utils.js` contains viewer helpers for clipping planes, UI notifications, camera setup, and background rendering.
|
||||
|
||||
- `initClippingPlanes()`
|
||||
- Initialize the three clipping planes used by the viewer.
|
||||
|
||||
- `toastHelper(key, toneOrOptions, maybeOptions)`
|
||||
- Show a translated status toast by key.
|
||||
|
||||
- `showToast(message, toneOrOptions, maybeOptions)`
|
||||
- Show a message or translated toast directly.
|
||||
|
||||
- `getErrorMessage(error)`
|
||||
- Normalize error objects or strings into a message.
|
||||
|
||||
- `reportViewerError(error, options)`
|
||||
- Report errors through console, toast, and E2E state.
|
||||
|
||||
- `setupObject(_object, _metadata)`
|
||||
- Adjust object position, rotation, scale, and camera based on metadata or configuration.
|
||||
|
||||
- `setupCamera(_object, _data)`
|
||||
- Set up camera, controls, lights, and background for the loaded object.
|
||||
|
||||
- `applyGradientCss(gradient)`
|
||||
- Set a CSS gradient background from parsed gradient values.
|
||||
|
||||
- `changeBackground(_type, _color1, _color2 = _color1, _alpha = 100)`
|
||||
- Set viewer canvas background color or gradient.
|
||||
|
||||
- `invertHexColor(hexTripletColor)`
|
||||
- Return the inverted value for a hex color string.
|
||||
|
||||
- `getOrAddGuiController(object, prop)`
|
||||
- Find or create a lil-gui controller by property name.
|
||||
|
||||
|
||||
## `viewer/utils.js`
|
||||
|
||||
`viewer/utils.js` exposes generic utility functions used throughout the viewer.
|
||||
|
||||
- `distanceBetweenPoints(pointA, pointB)`
|
||||
- `distanceBetweenPointsVector(vector)`
|
||||
- `vectorBetweenPoints(pointA, pointB)`
|
||||
- `halfwayBetweenPoints(pointA, pointB)`
|
||||
- `interpolateDistanceBetweenPoints(pointA, vector, length, scalar)`
|
||||
- Geometry helpers for basic vector math.
|
||||
|
||||
- `detectColorFormat(color)`
|
||||
- `hexToRgb(hex)`
|
||||
- `parseCssColor(str)`
|
||||
- `normalizeColor(value)`
|
||||
- Color parsing and normalization helpers.
|
||||
|
||||
- `isValidUrl(urlString)`
|
||||
- `truncateString(str, n)`
|
||||
- String and URL utilities.
|
||||
|
||||
- `getProxyPath(url, config)`
|
||||
- Build proxied asset URLs for server-side proxy support.
|
||||
|
||||
|
||||
## `viewer/viewer-settings.js`
|
||||
|
||||
- `loadSettings()`
|
||||
- Load `viewer-settings.json` relative to the current module path.
|
||||
- Used by source-mode development and runtime config loading.
|
||||
|
||||
## scripts/convert.sh
|
||||
- ```handle_file``` - uses python script (downloaded and modified version of https://github.com/ux3d/2gltf2/tree/master) triggered by blender
|
||||
```${BLENDER_PATH}blender -b -P ${SPATH}/scripts/2gltf2/2gltf2.py -- "$INPATH/$FILENAME" "$GLTF" "$COMPRESSION" "$COMPRESSION_LEVEL" "$OUTPUT$OUTPUTPATH"```
|
||||
- ```handle_ifc_file``` - uses IfcConvert script (available at https://ifcopenshell.sourceforge.net/ifcconvert.html)
|
||||
```${SPATH}/scripts/IfcConvert "$INPATH/$FILENAME" "$INPATH/gltf/$NAME.glb"```
|
||||
- ```handle_blend_file``` - uses python script triggered by blender
|
||||
```${BLENDER_PATH}blender -b -P ${SPATH}/scripts/convert-blender-to-gltf.py "$INPATH/$FILENAME" "$INPATH/gltf/$NAME.glb"```
|
||||
|
||||
- automatic rendering of 3D model for thumbnails - function ```render_preview```, which uses wrapper for triggering virtual environment (xvfb-run) for blender and it’s python script
|
||||
```xvfb-run --auto-servernum --server-args="-screen 0 512x512x16" sudo ${BLENDER_PATH}blender -b -P ${SPATH}/scripts/render.py -- "$INPATH/$NAME.glb" "glb" $1 "$INPATH/views/" $IS_ARCHIVE -E BLENDER_EEVEE -f 1```
|
||||
Loading…
Add table
Add a link
Reference in a new issue