diff --git a/sandbox/embed_selfhost_manual.html b/sandbox/embed_selfhost_manual.html
new file mode 100644
index 0000000..8666315
--- /dev/null
+++ b/sandbox/embed_selfhost_manual.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+ Online 3D Viewer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/source/viewer/domviewer.js b/source/viewer/domviewer.js
index 67a7471..14c97e1 100644
--- a/source/viewer/domviewer.js
+++ b/source/viewer/domviewer.js
@@ -1,92 +1,102 @@
+OV.Init3DViewerElement = function (parentDiv, modelUrls, camera, backgroundColor, defaultColor)
+{
+ let canvas = document.createElement ('canvas');
+ parentDiv.appendChild (canvas);
+
+ let viewer = new OV.Viewer ();
+ viewer.Init (canvas);
+
+ let width = parentDiv.clientWidth;
+ let height = parentDiv.clientHeight;
+ viewer.Resize (width, height);
+
+ let loader = new OV.ThreeModelLoader ();
+ let progressDiv = null;
+ loader.Init ({
+ onLoadStart : function () {
+ canvas.style.display = 'none';
+ progressDiv = document.createElement ('div');
+ parentDiv.appendChild (progressDiv);
+ progressDiv.innerHTML = 'Loading model...';
+ },
+ onImportStart : function () {
+ progressDiv.innerHTML = 'Importing model...';
+ },
+ onVisualizationStart : function () {
+ progressDiv.innerHTML = 'Visualizing model...';
+ },
+ onModelFinished : function (importResult, threeMeshes) {
+ parentDiv.removeChild (progressDiv);
+ canvas.style.display = 'inherit';
+ viewer.AddMeshes (threeMeshes);
+ let boundingSphere = viewer.GetBoundingSphere ((meshUserData) => {
+ return true;
+ });
+ viewer.AdjustClippingPlanes (boundingSphere);
+ if (camera !== null) {
+ viewer.SetCamera (camera);
+ } else {
+ viewer.SetUpVector (importResult.upVector, false);
+ }
+ viewer.FitToWindow (boundingSphere, false);
+ },
+ onTextureLoaded : function () {
+ viewer.Render ();
+ },
+ onLoadError : function (importError) {
+ progressDiv.innerHTML = 'Unknown error.';
+ },
+ });
+
+ if (modelUrls === null || modelUrls.length === 0) {
+ return null;
+ }
+
+ if (backgroundColor !== null) {
+ viewer.SetBackgroundColor (backgroundColor);
+ }
+
+ let settings = new OV.ImportSettings ();
+ if (defaultColor !== null) {
+ settings.defaultColor = defaultColor;
+ }
+
+ loader.LoadFromUrlList (modelUrls, settings);
+ return {
+ element: parentDiv,
+ viewer: viewer
+ };
+};
+
OV.Init3DViewerElements = function (onReady)
{
function LoadElement (element)
{
- let canvas = document.createElement ('canvas');
- element.appendChild (canvas);
-
- let viewer = new OV.Viewer ();
- viewer.Init (canvas);
-
- let width = element.clientWidth;
- let height = element.clientHeight;
- viewer.Resize (width, height);
-
- let loader = new OV.ThreeModelLoader ();
- let progressDiv = null;
- loader.Init ({
- onLoadStart : function () {
- canvas.style.display = 'none';
- progressDiv = document.createElement ('div');
- element.appendChild (progressDiv);
- progressDiv.innerHTML = 'Loading model...';
- },
- onImportStart : function () {
- progressDiv.innerHTML = 'Importing model...';
- },
- onVisualizationStart : function () {
- progressDiv.innerHTML = 'Visualizing model...';
- },
- onModelFinished : function (importResult, threeMeshes) {
- element.removeChild (progressDiv);
- canvas.style.display = 'inherit';
- viewer.AddMeshes (threeMeshes);
- let boundingSphere = viewer.GetBoundingSphere ((meshUserData) => {
- return true;
- });
- viewer.AdjustClippingPlanes (boundingSphere);
- let camera = null;
- let cameraParams = element.getAttribute ('camera');
- if (cameraParams) {
- camera = OV.ParameterConverter.StringToCamera (cameraParams);
- }
- if (camera !== null) {
- viewer.SetCamera (camera);
- } else {
- viewer.SetUpVector (importResult.upVector, false);
- }
- viewer.FitToWindow (boundingSphere, false);
- },
- onTextureLoaded : function () {
- viewer.Render ();
- },
- onLoadError : function (importError) {
- progressDiv.innerHTML = 'Unknown error.';
- },
- });
-
- let backgroundParam = element.getAttribute ('backgroundcolor');
- if (backgroundParam) {
- let backgroundColor = OV.ParameterConverter.StringToColor (backgroundParam);
- if (backgroundColor !== null) {
- viewer.SetBackgroundColor (backgroundColor);
- }
+ let camera = null;
+ let cameraParams = element.getAttribute ('camera');
+ if (cameraParams) {
+ camera = OV.ParameterConverter.StringToCamera (cameraParams);
}
+ let backgroundColor = null;
+ let backgroundColorParams = element.getAttribute ('backgroundcolor');
+ if (backgroundColorParams) {
+ backgroundColor = OV.ParameterConverter.StringToColor (backgroundColorParams);
+ }
+
+ let defaultColor = null;
+ let defaultColorParams = element.getAttribute ('defaultcolor');
+ if (defaultColorParams) {
+ defaultColor = OV.ParameterConverter.StringToColor (defaultColorParams);
+ }
+
+ let modelUrls = null;
let modelParams = element.getAttribute ('model');
- if (!modelParams) {
- return;
+ if (modelParams) {
+ modelUrls = OV.ParameterConverter.StringToModelUrls (modelParams);
}
- let modelUrls = OV.ParameterConverter.StringToModelUrls (modelParams);
- if (modelUrls === null || modelUrls.length === 0) {
- return;
- }
-
- let settings = new OV.ImportSettings ();
- let colorParam = element.getAttribute ('defaultcolor');
- if (colorParam) {
- let defaultColor = OV.ParameterConverter.StringToColor (colorParam);
- if (defaultColor !== null) {
- settings.defaultColor = defaultColor;
- }
- }
-
- loader.LoadFromUrlList (modelUrls, settings);
- return {
- element: element,
- viewer: viewer
- };
+ return OV.Init3DViewerElement (element, modelUrls, camera, backgroundColor, defaultColor);
}
let viewerElements = [];