From c95f7c202688ad2df14639f196e80f4db026bce2 Mon Sep 17 00:00:00 2001 From: Ilia Pozdnyakov Date: Sun, 15 Jan 2023 03:09:07 +0600 Subject: [PATCH] Allow initializing viewer element from File objects. (#352) Co-authored-by: Ilia Pozdnyakov --- sandbox/embed_selfhost_manual.html | 6 +++--- source/engine/main.js | 4 ++-- source/engine/viewer/embeddedviewer.js | 18 ++++++++++++++++-- 3 files changed, 21 insertions(+), 7 deletions(-) diff --git a/sandbox/embed_selfhost_manual.html b/sandbox/embed_selfhost_manual.html index 503b826..2862134 100644 --- a/sandbox/embed_selfhost_manual.html +++ b/sandbox/embed_selfhost_manual.html @@ -30,7 +30,7 @@ '../../test/testfiles/3ds/cube_four_instances.3ds', '../../test/testfiles/3ds/texture.png' ]; - OV.Init3DViewerElement (container, modelUrls); + OV.Init3DViewerElementFromUrlList (container, modelUrls); } { let container = document.createElement ('div'); @@ -41,7 +41,7 @@ '../../test/testfiles/obj/hundred_cubes.obj', '../../test/testfiles/obj/hundred_cubes.mtl' ]; - OV.Init3DViewerElement (container, modelUrls); + OV.Init3DViewerElementFromUrlList (container, modelUrls); } { let container = document.createElement ('div'); @@ -52,7 +52,7 @@ '../../test/testfiles/obj/hundred_cubes.obj?param1=value1¶m2=value2', '../../test/testfiles/obj/hundred_cubes.mtl?param1=value1¶m2=value2' ]; - OV.Init3DViewerElement (container, modelUrls); + OV.Init3DViewerElementFromUrlList (container, modelUrls); } diff --git a/source/engine/main.js b/source/engine/main.js index bd17f45..5c6697f 100644 --- a/source/engine/main.js +++ b/source/engine/main.js @@ -66,7 +66,7 @@ import { ThreeModelLoader } from './threejs/threemodelloader.js'; import { HasHighpDriverIssue, GetShadingType, ConvertThreeColorToColor, ConvertColorToThreeColor, ConvertThreeGeometryToMesh, DisposeThreeObjects, ShadingType } from './threejs/threeutils.js'; import { Camera, CameraIsEqual3D, CameraMode } from './viewer/camera.js'; import { GetIntegerFromStyle, GetDomElementExternalWidth, GetDomElementExternalHeight, GetDomElementInnerDimensions, GetDomElementClientCoordinates, CreateDomElement, AddDomElement, AddDiv, ClearDomElement, InsertDomElementBefore, InsertDomElementAfter, ShowDomElement, IsDomElementVisible, SetDomElementWidth, SetDomElementHeight, GetDomElementOuterWidth, GetDomElementOuterHeight, SetDomElementOuterWidth, SetDomElementOuterHeight, CreateDiv } from './viewer/domutils.js'; -import { EmbeddedViewer, Init3DViewerElement, Init3DViewerElements } from './viewer/embeddedviewer.js'; +import { EmbeddedViewer, Init3DViewerElementFromUrlList, Init3DViewerElements } from './viewer/embeddedviewer.js'; import { MouseInteraction, TouchInteraction, ClickDetector, Navigation, NavigationType } from './viewer/navigation.js'; import { EnvironmentSettings, ShadingModel } from './viewer/shadingmodel.js'; import { CameraValidator, UpVector, Viewer, GetDefaultCamera, TraverseThreeObject, GetShadingTypeOfObject } from './viewer/viewer.js'; @@ -312,7 +312,7 @@ export { SetDomElementOuterHeight, CreateDiv, EmbeddedViewer, - Init3DViewerElement, + Init3DViewerElementFromUrlList, Init3DViewerElements, MouseInteraction, TouchInteraction, diff --git a/source/engine/viewer/embeddedviewer.js b/source/engine/viewer/embeddedviewer.js index 3396ca8..a94ae8a 100644 --- a/source/engine/viewer/embeddedviewer.js +++ b/source/engine/viewer/embeddedviewer.js @@ -220,13 +220,27 @@ export class EmbeddedViewer * @param {object} parameters See {@link EmbeddedViewer} constructor for details. * @returns {EmbeddedViewer} */ -export function Init3DViewerElement (parentElement, modelUrls, parameters) +export function Init3DViewerElementFromUrlList (parentElement, modelUrls, parameters) { let viewer = new EmbeddedViewer (parentElement, parameters); viewer.LoadModelFromUrlList (modelUrls); return viewer; } +/** + * Loads the model specified by File objects. + * @param {Element} parentElement The parent element for the viewer canvas. + * @param {File[]} models Model files. + * @param {object} parameters See {@link EmbeddedViewer} constructor for details. + * @returns {EmbeddedViewer} + */ +export function Init3DViewerElementFromFileList (parentElement, models, parameters) +{ + let viewer = new EmbeddedViewer (parentElement, parameters); + viewer.LoadModelFromFileList (models); + return viewer; +} + /** * Loads all the models on the page. This function looks for all the elements with online_3d_viewer * class name, and loads the model according to the tag's parameters. @@ -287,7 +301,7 @@ export function Init3DViewerElements (onReady) modelUrls = ParameterConverter.StringToModelUrls (modelParams); } - return Init3DViewerElement (element, modelUrls, { + return Init3DViewerElementFromUrlList (element, modelUrls, { camera : camera, cameraMode : cameraMode, backgroundColor : backgroundColor,