diff --git a/gz3d/build/gz3d.js b/gz3d/build/gz3d.js index 48e52a7c37f71bc71ae08baea4b024555291fc7c..8b1351d6558390a11bc3111102edc6d16815e25e 100644 --- a/gz3d/build/gz3d.js +++ b/gz3d/build/gz3d.js @@ -3013,7 +3013,6 @@ GZ3D.GZIface.prototype.createSensorFromMsg = function(sensor) // view.camera.add( cameraHelper ); view.type = sensor.type; - console.log('view type: ' + view.type); sensorObj.add(view.camera); } @@ -4847,6 +4846,7 @@ GZ3D.Manipulator.prototype = Object.create(THREE.EventDispatcher.prototype); */ GZ3D.MULTIVIEW_MAX_VIEW_COUNT = 10; +GZ3D.MULTIVIEW_MAINVIEW_NAME = 'main_view'; /** * GZ3D.MULTIVIEW_RENDER_VIEWPORTS uses view containers as transparent references to determine viewports for rendering (one single canvas). @@ -4861,11 +4861,10 @@ GZ3D.MULTIVIEW_RENDER_VIEWPORTS = 1; */ GZ3D.MULTIVIEW_RENDER_COPY2CANVAS = 2; -GZ3D.MultiView = function(gz3dScene, mainContainer, callbackCreateRenderContainer) +GZ3D.MultiView = function(gz3dScene, mainContainer) { this.gz3dScene = gz3dScene; this.mainContainer = mainContainer; - this.createRenderContainerCallback = callbackCreateRenderContainer; this.init(); }; @@ -4880,6 +4879,8 @@ GZ3D.MultiView.prototype.init = function() if (this.renderMethod === GZ3D.MULTIVIEW_RENDER_VIEWPORTS) { this.mainContainer.appendChild(this.gz3dScene.getDomElement()); } + + this.createMainUserView(); }; GZ3D.MultiView.prototype.setCallbackCreateRenderContainer = function(callback) @@ -4887,6 +4888,31 @@ GZ3D.MultiView.prototype.setCallbackCreateRenderContainer = function(callback) this.createRenderContainerCallback = callback; }; +/** + * This creates the main view the user will interact with and should always be there. + */ +GZ3D.MultiView.prototype.createMainUserView = function() +{ + var displayParams = { + left: '0px', + top: '0px', + width: '100%', + height: '100%', + adjustable: false + }; + var cameraParams = { + width: 960, + height: 600, + fov: 60, + near: 0.1, + far: 100 + }; + + this.mainUserView = this.createView(GZ3D.MULTIVIEW_MAINVIEW_NAME, displayParams, cameraParams); + + return this.mainUserView; +}; + /** * * @param name @@ -4895,9 +4921,9 @@ GZ3D.MultiView.prototype.setCallbackCreateRenderContainer = function(callback) */ GZ3D.MultiView.prototype.createView = function(name, displayParams, cameraParams) { - if (this.getViewByName(name) !== undefined) { + if (angular.isDefined(this.getViewByName(name))) { console.error('GZ3D.MultiView.createView() - a view of that name already exists (' + name + ')'); - return null; + return undefined; } if (this.views.length >= this.MULTIVIEW_MAX_VIEW_COUNT) { @@ -4905,8 +4931,8 @@ GZ3D.MultiView.prototype.createView = function(name, displayParams, cameraParams } var container = this.createViewContainer(displayParams, name); - if (container === null) { - return; + if (!angular.isDefined(container)) { + return undefined; } // camera @@ -4929,18 +4955,24 @@ GZ3D.MultiView.prototype.createView = function(name, displayParams, cameraParams GZ3D.MultiView.prototype.createViewContainer = function(displayParams, name) { - if (this.createRenderContainerCallback === undefined) { + if (!angular.isDefined(this.createRenderContainerCallback)) { console.error('GZ3D.MultiView.createViewContainer() - no callback for creating view reference container defined'); - return null; + return undefined; } // container div - var viewContainer = this.createRenderContainerCallback(displayParams.adjustable, name); - if (!viewContainer) { + var viewContainer; + if (name === GZ3D.MULTIVIEW_MAINVIEW_NAME) { + viewContainer = document.createElement('div'); + } else { + viewContainer = this.createRenderContainerCallback(displayParams.adjustable, name); + } + if (!angular.isDefined(viewContainer)) { console.error('GZ3D.MultiView.createViewContainer() - could not create view container via callback'); - return null; + return undefined; } + // positioning viewContainer.style.position = 'absolute'; viewContainer.style.left = displayParams.left; @@ -5568,32 +5600,14 @@ GZ3D.Scene.prototype.init = function() this.container = document.getElementById( 'container' ); // create views manager - this.viewManager = new GZ3D.MultiView(this, this.container, function(adjustable, name){ - return document.createElement('div'); - }); - // create main view - var displayParams = { - left: '0px', - top: '0px', - width: '100%', - height: '100%', - adjustable: false - }; - var cameraParams = { - width: 960, - height: 600, - fov: 60, - near: 0.1, - far: 100 - }; - this.viewManager.createView('main_view', displayParams, cameraParams); + this.viewManager = new GZ3D.MultiView(this, this.container); // lights this.ambient = new THREE.AmbientLight( 0x666666 ); this.scene.add(this.ambient); // camera - this.camera = this.viewManager.getViewByName('main_view').camera; + this.camera = this.viewManager.mainUserView.camera; this.defaultCameraPosition = new THREE.Vector3(5, 0, 1); this.resetView(); @@ -6606,10 +6620,12 @@ GZ3D.Scene.prototype.createPointLight = function(obj, color, intensity, { lightObj.distance = distance; } - if (cast_shadows) + + // point light shadow maps not supported yet, disable for now + /*if (cast_shadows) { lightObj.castShadow = cast_shadows; - } + }*/ var helperGeometry = new THREE.OctahedronGeometry(0.25, 0); helperGeometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2)); diff --git a/gz3d/src/gziface.js b/gz3d/src/gziface.js index 5e28028356bef6362bd97774cdd8f4bd7f5e525c..530da130cf95ae01b4f80c39822549998e121a5d 100644 --- a/gz3d/src/gziface.js +++ b/gz3d/src/gziface.js @@ -992,7 +992,6 @@ GZ3D.GZIface.prototype.createSensorFromMsg = function(sensor) // view.camera.add( cameraHelper ); view.type = sensor.type; - console.log('view type: ' + view.type); sensorObj.add(view.camera); } diff --git a/gz3d/src/gzmultiview.js b/gz3d/src/gzmultiview.js index 16aaa50efd37119940004316ea4d95248e4dd786..b874ac469f63b4e9c3396ff3e94466504a1a3ceb 100644 --- a/gz3d/src/gzmultiview.js +++ b/gz3d/src/gzmultiview.js @@ -3,6 +3,7 @@ */ GZ3D.MULTIVIEW_MAX_VIEW_COUNT = 10; +GZ3D.MULTIVIEW_MAINVIEW_NAME = 'main_view'; /** * GZ3D.MULTIVIEW_RENDER_VIEWPORTS uses view containers as transparent references to determine viewports for rendering (one single canvas). @@ -17,11 +18,10 @@ GZ3D.MULTIVIEW_RENDER_VIEWPORTS = 1; */ GZ3D.MULTIVIEW_RENDER_COPY2CANVAS = 2; -GZ3D.MultiView = function(gz3dScene, mainContainer, callbackCreateRenderContainer) +GZ3D.MultiView = function(gz3dScene, mainContainer) { this.gz3dScene = gz3dScene; this.mainContainer = mainContainer; - this.createRenderContainerCallback = callbackCreateRenderContainer; this.init(); }; @@ -36,6 +36,8 @@ GZ3D.MultiView.prototype.init = function() if (this.renderMethod === GZ3D.MULTIVIEW_RENDER_VIEWPORTS) { this.mainContainer.appendChild(this.gz3dScene.getDomElement()); } + + this.createMainUserView(); }; GZ3D.MultiView.prototype.setCallbackCreateRenderContainer = function(callback) @@ -43,6 +45,31 @@ GZ3D.MultiView.prototype.setCallbackCreateRenderContainer = function(callback) this.createRenderContainerCallback = callback; }; +/** + * This creates the main view the user will interact with and should always be there. + */ +GZ3D.MultiView.prototype.createMainUserView = function() +{ + var displayParams = { + left: '0px', + top: '0px', + width: '100%', + height: '100%', + adjustable: false + }; + var cameraParams = { + width: 960, + height: 600, + fov: 60, + near: 0.1, + far: 100 + }; + + this.mainUserView = this.createView(GZ3D.MULTIVIEW_MAINVIEW_NAME, displayParams, cameraParams); + + return this.mainUserView; +}; + /** * * @param name @@ -51,9 +78,9 @@ GZ3D.MultiView.prototype.setCallbackCreateRenderContainer = function(callback) */ GZ3D.MultiView.prototype.createView = function(name, displayParams, cameraParams) { - if (this.getViewByName(name) !== undefined) { + if (angular.isDefined(this.getViewByName(name))) { console.error('GZ3D.MultiView.createView() - a view of that name already exists (' + name + ')'); - return null; + return undefined; } if (this.views.length >= this.MULTIVIEW_MAX_VIEW_COUNT) { @@ -61,8 +88,8 @@ GZ3D.MultiView.prototype.createView = function(name, displayParams, cameraParams } var container = this.createViewContainer(displayParams, name); - if (container === null) { - return; + if (!angular.isDefined(container)) { + return undefined; } // camera @@ -85,18 +112,24 @@ GZ3D.MultiView.prototype.createView = function(name, displayParams, cameraParams GZ3D.MultiView.prototype.createViewContainer = function(displayParams, name) { - if (this.createRenderContainerCallback === undefined) { + if (!angular.isDefined(this.createRenderContainerCallback)) { console.error('GZ3D.MultiView.createViewContainer() - no callback for creating view reference container defined'); - return null; + return undefined; } // container div - var viewContainer = this.createRenderContainerCallback(displayParams.adjustable, name); - if (!viewContainer) { + var viewContainer; + if (name === GZ3D.MULTIVIEW_MAINVIEW_NAME) { + viewContainer = document.createElement('div'); + } else { + viewContainer = this.createRenderContainerCallback(displayParams.adjustable, name); + } + if (!angular.isDefined(viewContainer)) { console.error('GZ3D.MultiView.createViewContainer() - could not create view container via callback'); - return null; + return undefined; } + // positioning viewContainer.style.position = 'absolute'; viewContainer.style.left = displayParams.left; diff --git a/gz3d/src/gzscene.js b/gz3d/src/gzscene.js index ebac0df5eefd716d6e0cb58b2e0bba4dc9dc44b6..6188def34c19e1529d8e8828869c450086cf1d10 100644 --- a/gz3d/src/gzscene.js +++ b/gz3d/src/gzscene.js @@ -41,32 +41,14 @@ GZ3D.Scene.prototype.init = function() this.container = document.getElementById( 'container' ); // create views manager - this.viewManager = new GZ3D.MultiView(this, this.container, function(adjustable, name){ - return document.createElement('div'); - }); - // create main view - var displayParams = { - left: '0px', - top: '0px', - width: '100%', - height: '100%', - adjustable: false - }; - var cameraParams = { - width: 960, - height: 600, - fov: 60, - near: 0.1, - far: 100 - }; - this.viewManager.createView('main_view', displayParams, cameraParams); + this.viewManager = new GZ3D.MultiView(this, this.container); // lights this.ambient = new THREE.AmbientLight( 0x666666 ); this.scene.add(this.ambient); // camera - this.camera = this.viewManager.getViewByName('main_view').camera; + this.camera = this.viewManager.mainUserView.camera; this.defaultCameraPosition = new THREE.Vector3(5, 0, 1); this.resetView(); @@ -1080,10 +1062,11 @@ GZ3D.Scene.prototype.createPointLight = function(obj, color, intensity, lightObj.distance = distance; } - if (cast_shadows) + // point light shadow maps not supported yet, disable for now + /*if (cast_shadows) { lightObj.castShadow = cast_shadows; - } + }*/ var helperGeometry = new THREE.OctahedronGeometry(0.25, 0); helperGeometry.applyMatrix(new THREE.Matrix4().makeRotationX(Math.PI/2));