78 lines
2.0 KiB
JavaScript
78 lines
2.0 KiB
JavaScript
LoadOnline3DModels = function ()
|
|
{
|
|
function Error (viewerElement, message)
|
|
{
|
|
var context = viewerElement.getContext ('2d');
|
|
context.font = '12px Arial';
|
|
context.fillText (message, 0, 12);
|
|
}
|
|
|
|
function LoadViewer (viewerElement)
|
|
{
|
|
var urls = viewerElement.getAttribute ('sourcefiles');
|
|
if (urls === undefined || urls === null) {
|
|
Error (viewerElement, 'Invalid source files.');
|
|
return;
|
|
}
|
|
|
|
var urlList = urls.split ('|');
|
|
JSM.ConvertURLListToJsonData (urlList, {
|
|
onError : function () {
|
|
Error (viewerElement, 'Conversion failed.');
|
|
return;
|
|
},
|
|
onReady : function (fileNames, jsonData) {
|
|
var viewerSettings = {
|
|
cameraEyePosition : [6.0, -5.5, 4.0],
|
|
cameraCenterPosition : [0.0, 0.0, 0.0],
|
|
cameraUpVector : [0.0, 0.0, 1.0]
|
|
};
|
|
|
|
var viewer = new JSM.ThreeViewer ();
|
|
if (!viewer.Start (viewerElement, viewerSettings)) {
|
|
Error (viewerElement, 'Internal error.');
|
|
return;
|
|
}
|
|
|
|
var currentMeshIndex = 0;
|
|
var environment = new JSM.AsyncEnvironment ({
|
|
onStart : function (/*taskCount, meshes*/) {
|
|
viewer.EnableDraw (false);
|
|
},
|
|
onProcess : function (currentTask, meshes) {
|
|
while (currentMeshIndex < meshes.length) {
|
|
viewer.AddMesh (meshes[currentMeshIndex]);
|
|
currentMeshIndex = currentMeshIndex + 1;
|
|
}
|
|
},
|
|
onFinish : function (meshes) {
|
|
if (meshes.length > 0) {
|
|
viewer.AdjustClippingPlanes (50.0);
|
|
viewer.FitInWindow ();
|
|
}
|
|
viewer.EnableDraw (true);
|
|
viewer.Draw ();
|
|
}
|
|
});
|
|
|
|
var textureLoaded = function () {
|
|
viewer.Draw ();
|
|
};
|
|
JSM.ConvertJSONDataToThreeMeshes (jsonData, textureLoaded, environment);
|
|
}
|
|
});
|
|
}
|
|
|
|
var supported = JSM.IsWebGLEnabled () && JSM.IsFileApiEnabled ();
|
|
var viewers = document.getElementsByClassName ('3dviewer');
|
|
var i, viewer;
|
|
for (i = 0; i < viewers.length; i++) {
|
|
viewer = viewers[i];
|
|
if (supported) {
|
|
LoadViewer (viewer);
|
|
} else {
|
|
Error (viewer, 'No browser support.');
|
|
}
|
|
}
|
|
};
|