84 lines
3.0 KiB
JavaScript
84 lines
3.0 KiB
JavaScript
OV.Init3DViewerElements = function ()
|
|
{
|
|
function LoadElement (element)
|
|
{
|
|
let canvas = document.createElement ('canvas');
|
|
element.appendChild (canvas);
|
|
|
|
let viewer = new OV.Viewer ();
|
|
viewer.Init (canvas);
|
|
|
|
let width = parseInt (element.getAttribute ('width'));
|
|
let height = parseInt (element.getAttribute ('height'));
|
|
element.style.width = width + 'px';
|
|
element.style.height = height + 'px';
|
|
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...';
|
|
},
|
|
onFilesLoaded : function () {
|
|
progressDiv.innerHTML = 'Importing model...';
|
|
},
|
|
onModelImported : function () {
|
|
progressDiv.innerHTML = 'Visualizing model...';
|
|
},
|
|
onModelFinished : function (importResult, threeMeshes) {
|
|
element.removeChild (progressDiv);
|
|
canvas.style.display = 'initial';
|
|
viewer.AddMeshes (threeMeshes);
|
|
let boundingSphere = viewer.GetBoundingSphere (function (meshUserData) {
|
|
return true;
|
|
});
|
|
viewer.AdjustClippingPlanes (boundingSphere);
|
|
viewer.FitToWindow (boundingSphere, false);
|
|
},
|
|
onTextureLoaded : function () {
|
|
viewer.Render ();
|
|
},
|
|
onLoadError : function (importerError) {
|
|
progressDiv.innerHTML = 'Unknown error.';
|
|
},
|
|
});
|
|
|
|
let model = element.getAttribute ('model');
|
|
if (!model) {
|
|
return;
|
|
}
|
|
|
|
let modelUrls = model.split (',');
|
|
if (modelUrls.length === 0) {
|
|
return;
|
|
}
|
|
|
|
let camera = element.getAttribute ('camera');
|
|
if (camera) {
|
|
let cameraParams = camera.split (',');
|
|
if (cameraParams.length === 9) {
|
|
let camera = new OV.Camera (
|
|
new OV.Coord3D (parseFloat (cameraParams[0]), parseFloat (cameraParams[1]), parseFloat (cameraParams[2])),
|
|
new OV.Coord3D (parseFloat (cameraParams[3]), parseFloat (cameraParams[4]), parseFloat (cameraParams[5])),
|
|
new OV.Coord3D (parseFloat (cameraParams[6]), parseFloat (cameraParams[7]), parseFloat (cameraParams[8]))
|
|
);
|
|
viewer.SetCamera (camera);
|
|
}
|
|
}
|
|
|
|
loader.LoadFromUrlList (modelUrls);
|
|
}
|
|
|
|
window.addEventListener ('load', function () {
|
|
let elements = document.getElementsByClassName ('online_3d_viewer');
|
|
for (let i = 0; i < elements.length; i++) {
|
|
let element = elements[i];
|
|
LoadElement (element);
|
|
}
|
|
});
|
|
};
|