|
@@ -597,6 +597,10 @@
|
|
|
siteModeOnlyMapVisi:12,//只能mapViewer可见
|
|
|
siteModelMapUnvisi:13,//只有mapViewer不可见
|
|
|
siteModeSideVisi:14,//只有侧面可见
|
|
|
+
|
|
|
+
|
|
|
+ layer1: 10,// 备用1
|
|
|
+ layer2: 15,// 备用2
|
|
|
},
|
|
|
|
|
|
renderOrders:{ //会影响到绘制、pick时的顺序。
|
|
@@ -63878,11 +63882,11 @@ void main() {
|
|
|
|
|
|
if(prop.isFirstLoad){
|
|
|
modelEditing = model;
|
|
|
- MergeEditor.setModelBtmHeight(model, 0); //默认离地高度为0
|
|
|
+ //MergeEditor.setModelBtmHeight(model, 0) //默认离地高度为0
|
|
|
viewer.addEventListener('global_mousemove', moveModel);
|
|
|
viewer.addEventListener('global_click', confirmPos, 3);
|
|
|
}else {
|
|
|
- MergeEditor.setModelBtmHeight(model, prop.bottom || 0); //默认离地高度为0
|
|
|
+ //MergeEditor.setModelBtmHeight(model, prop.bottom || 0) //默认离地高度为0
|
|
|
modelEditing = null;
|
|
|
}
|
|
|
|
|
@@ -63892,35 +63896,61 @@ void main() {
|
|
|
}
|
|
|
|
|
|
|
|
|
- {//transform
|
|
|
+ /* {//transform --------维持离地高度和中心点的版本
|
|
|
+ let updateBound = ()=>{
|
|
|
+ model.updateMatrixWorld()
|
|
|
+ viewer.updateModelBound()
|
|
|
+ }
|
|
|
+ let maintainBtmZAndCenter = ()=>{
|
|
|
+ MergeEditor.maintainBoundXY(model)
|
|
|
+ MergeEditor.setModelBtmHeight(model)
|
|
|
+ updateBound()
|
|
|
+ model.dispatchEvent('transformChanged')
|
|
|
+ }
|
|
|
+ model.addEventListener('position_changed', ()=>{
|
|
|
+ updateBound()
|
|
|
+ MergeEditor.getBoundCenter(model);//更新boundcenter
|
|
|
+ MergeEditor.computeBtmHeight(model)
|
|
|
+ if(prop.bottomRange && (model.btmHeight > prop.bottomRange.max || model.btmHeight < prop.bottomRange.min)){
|
|
|
+ model.btmHeight = THREE.Math.clamp(model.btmHeight, prop.bottomRange.min, prop.bottomRange.max)
|
|
|
+ MergeEditor.setModelBtmHeight(model)
|
|
|
+ updateBound()
|
|
|
+ }
|
|
|
+ model.dispatchEvent('transformChanged')
|
|
|
+ })
|
|
|
+ model.addEventListener("rotation_changed", maintainBtmZAndCenter )
|
|
|
+ model.addEventListener("scale_changed", maintainBtmZAndCenter )
|
|
|
+ model.addEventListener('transformChanged', ()=>{
|
|
|
+ MergeEditor.modelTransformCallback(model)
|
|
|
+ })
|
|
|
+ //离地高度只是boundingbox在transform后的最低点的高度,而非模型transform后的最低点的高度,所以旋转过后看起来不太准确
|
|
|
+ } */
|
|
|
+
|
|
|
+ {//transform --------维持中心点的版本
|
|
|
let updateBound = ()=>{
|
|
|
model.updateMatrixWorld();
|
|
|
viewer.updateModelBound();
|
|
|
};
|
|
|
- let maintainBtmZAndCenter = ()=>{
|
|
|
- MergeEditor.maintainBoundXY(model);
|
|
|
- MergeEditor.setModelBtmHeight(model);
|
|
|
+ let maintainCenter = ()=>{
|
|
|
+ //MergeEditor.maintainBoundXY(model)
|
|
|
+ MergeEditor.maintainBoundCenter(model);
|
|
|
updateBound();
|
|
|
model.dispatchEvent('transformChanged');
|
|
|
};
|
|
|
model.addEventListener('position_changed', ()=>{
|
|
|
updateBound();
|
|
|
MergeEditor.getBoundCenter(model);//更新boundcenter
|
|
|
- MergeEditor.computeBtmHeight(model);
|
|
|
- if(prop.bottomRange && (model.btmHeight > prop.bottomRange.max || model.btmHeight < prop.bottomRange.min)){
|
|
|
- model.btmHeight = MathUtils.clamp(model.btmHeight, prop.bottomRange.min, prop.bottomRange.max);
|
|
|
- MergeEditor.setModelBtmHeight(model);
|
|
|
- updateBound();
|
|
|
- }
|
|
|
+
|
|
|
model.dispatchEvent('transformChanged');
|
|
|
});
|
|
|
- model.addEventListener("rotation_changed", maintainBtmZAndCenter );
|
|
|
- model.addEventListener("scale_changed", maintainBtmZAndCenter );
|
|
|
+ model.addEventListener("rotation_changed", maintainCenter );
|
|
|
+ model.addEventListener("scale_changed", maintainCenter );
|
|
|
model.addEventListener('transformChanged', ()=>{
|
|
|
MergeEditor.modelTransformCallback(model);
|
|
|
});
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
model.updateMatrixWorld();
|
|
|
viewer.updateModelBound();
|
|
|
|
|
@@ -86091,7 +86121,7 @@ void main() {
|
|
|
['sceneObjects','mapObjects','measure', 'transformationTool', 'model'],
|
|
|
this.hoverViewport && this.hoverViewport.extraEnableLayers
|
|
|
);
|
|
|
-
|
|
|
+ //this.hoverViewport.beforeRender && this.hoverViewport.beforeRender()
|
|
|
|
|
|
viewer.dispatchEvent( {type:'raycaster', viewport: this.hoverViewport});//add
|
|
|
let intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), true); //原本是false 检测不到children
|
|
@@ -115664,11 +115694,14 @@ ENDSEC
|
|
|
|
|
|
Object3D.call( this );
|
|
|
|
|
|
+
|
|
|
this.visible = false;
|
|
|
this.domElement = domElement;
|
|
|
|
|
|
var _gizmo = new TransformControlsGizmo(options);
|
|
|
this.add( _gizmo );
|
|
|
+ this._gizmo = _gizmo;
|
|
|
+
|
|
|
|
|
|
var _plane = new TransformControlsPlane(options);
|
|
|
this.add( _plane );
|
|
@@ -115832,6 +115865,22 @@ ENDSEC
|
|
|
return this;
|
|
|
|
|
|
};
|
|
|
+
|
|
|
+
|
|
|
+ /* this.hideAxis = function ( mode, axis=[] ) {//xzw add 设置不可见的axis
|
|
|
+
|
|
|
+ var handles = [];
|
|
|
+ handles = handles.concat( this._gizmo.picker[ mode ].children );
|
|
|
+ handles = handles.concat( this._gizmo.gizmo[ mode ].children );
|
|
|
+ handles = handles.concat( this._gizmo.helper[ mode ].children );
|
|
|
+ handles.forEach(e=>e.visible = false)
|
|
|
+ axis.forEach(name=>{
|
|
|
+ handles.filter(handle =>!handle.name.includes(name))
|
|
|
+ })
|
|
|
+ handles.forEach(e=>e.visible = true)
|
|
|
+ }; */
|
|
|
+
|
|
|
+
|
|
|
|
|
|
// Defined getter, setter and store for a property
|
|
|
function defineProperty( propName, defaultValue ) {
|
|
@@ -115889,7 +115938,15 @@ ENDSEC
|
|
|
this.camera.updateMatrixWorld();
|
|
|
this.camera.matrixWorld.decompose( cameraPosition, cameraQuaternion, cameraScale );
|
|
|
|
|
|
- eye.copy( cameraPosition ).sub( worldPosition ).normalize();
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ if(this.camera.type == "OrthographicCamera"){//xzw add
|
|
|
+ eye.copy( this.view.direction);
|
|
|
+ }else {
|
|
|
+ eye.copy( cameraPosition ).sub( worldPosition ).normalize();
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
Object3D.prototype.updateMatrixWorld.call( this );
|
|
|
|
|
@@ -115908,7 +115965,11 @@ ENDSEC
|
|
|
//ray.setFromCamera( pointer, this.camera ); //这句会在floorplan模式get不到intersect
|
|
|
let {origin, direction} = viewer.inputHandler.getMouseDirection();
|
|
|
ray.set(origin, direction);
|
|
|
-
|
|
|
+
|
|
|
+ viewer.setCameraLayers(ray, //设置能识别到的layers
|
|
|
+ ['sceneObjects','mapObjects','measure', 'transformationTool', 'model'],
|
|
|
+ viewer.inputHandler.hoverViewport && viewer.inputHandler.hoverViewport.extraEnableLayers
|
|
|
+ );
|
|
|
|
|
|
|
|
|
var intersect = ray.intersectObjects( _gizmo.picker[ this.mode ].children, true )[ 0 ] || false;
|
|
@@ -115937,6 +115998,14 @@ ENDSEC
|
|
|
//ray.setFromCamera( pointer, this.camera ); //这句会在floorplan模式get不到intersect
|
|
|
let {origin, direction} = viewer.inputHandler.getMouseDirection();
|
|
|
ray.set(origin, direction);
|
|
|
+
|
|
|
+ viewer.setCameraLayers(ray, //设置能识别到的layers
|
|
|
+ ['sceneObjects','mapObjects','measure', 'transformationTool', 'model'],
|
|
|
+ viewer.inputHandler.hoverViewport && viewer.inputHandler.hoverViewport.extraEnableLayers
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false;
|
|
|
|
|
|
if ( planeIntersect ) {
|
|
@@ -116015,6 +116084,13 @@ ENDSEC
|
|
|
let {origin, direction} = viewer.inputHandler.getMouseDirection();
|
|
|
ray.set(origin, direction);
|
|
|
|
|
|
+ viewer.setCameraLayers(ray, //设置能识别到的layers
|
|
|
+ ['sceneObjects','mapObjects','measure', 'transformationTool', 'model'],
|
|
|
+ viewer.inputHandler.hoverViewport && viewer.inputHandler.hoverViewport.extraEnableLayers
|
|
|
+ );
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
var planeIntersect = ray.intersectObjects( [ _plane ], true )[ 0 ] || false;
|
|
|
|
|
|
if ( planeIntersect === false ) return;
|
|
@@ -116450,7 +116526,7 @@ ENDSEC
|
|
|
this.type = 'TransformControlsGizmo';
|
|
|
|
|
|
// shared materials
|
|
|
-
|
|
|
+ this.hideAxis = {};
|
|
|
var gizmoMaterial = new MeshBasicMaterial( {
|
|
|
depthTest: false,
|
|
|
depthWrite: false,
|
|
@@ -116472,7 +116548,7 @@ ENDSEC
|
|
|
matInvisible.opacity = 0.15;
|
|
|
|
|
|
var matHelper = gizmoMaterial.clone();
|
|
|
- matHelper.opacity = 0.33;
|
|
|
+ matHelper.opacity = 0.1;
|
|
|
|
|
|
var matRed = gizmoMaterial.clone();
|
|
|
matRed.color.set( 0xff0000 );
|
|
@@ -116905,24 +116981,26 @@ ENDSEC
|
|
|
for ( var i = 0; i < handles.length; i ++ ) {
|
|
|
|
|
|
var handle = handles[ i ];
|
|
|
+ //add
|
|
|
+ if(this.hideAxis[this.mode] && this.hideAxis[this.mode].some(e=>handle.name.includes(e.toUpperCase()))){
|
|
|
+ viewer.updateVisible(handle, 'hidden', false);
|
|
|
+ continue
|
|
|
+ }
|
|
|
+
|
|
|
let visible = true;
|
|
|
// hide aligned to camera
|
|
|
-
|
|
|
-
|
|
|
+
|
|
|
|
|
|
handle.rotation.set( 0, 0, 0 );
|
|
|
handle.position.copy( this.worldPosition );
|
|
|
|
|
|
- var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition );
|
|
|
-
|
|
|
- //俯视图的透视和距离无关,因此在两种相机切换切换时大小过渡比较困难
|
|
|
- /* if(player.mode == "transitioning" && (player.modeTran.split('-')[0] == "floorplan" || player.modeTran.split('-')[1] == "floorplan")){
|
|
|
- eyeDistance = Math.min(eyeDistance, 6.5)//从一开始很小的距离过渡到俯视图50的高度,会变得很大。
|
|
|
- }else if(player.mode == "floorplan"){
|
|
|
- var flcamera = player.cameraControls.cameras.floorplan;
|
|
|
- eyeDistance = (flcamera.right - flcamera.left ) / flcamera.aspect ;
|
|
|
- }
|
|
|
- */
|
|
|
+
|
|
|
+ if(this.camera.type == "OrthographicCamera"){
|
|
|
+ var eyeDistance = 800 / this.camera.zoom;
|
|
|
+ }else {
|
|
|
+ var eyeDistance = this.worldPosition.distanceTo( this.cameraPosition );
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
handle.scale.set( 1, 1, 1 ).multiplyScalar( eyeDistance * this.size / 7 );
|
|
|
|
|
@@ -117505,7 +117583,10 @@ ENDSEC
|
|
|
const texLoader$8 = new TextureLoader();
|
|
|
texLoader$8.crossOrigin = "anonymous";
|
|
|
|
|
|
-
|
|
|
+ const edgeStrengths = {
|
|
|
+ pointcloud: 4,
|
|
|
+ glb: 100
|
|
|
+ };
|
|
|
const viewportProps$1 = [{
|
|
|
left:0,
|
|
|
bottom:0,
|
|
@@ -117568,7 +117649,7 @@ ENDSEC
|
|
|
|
|
|
this.transformControls = new TransformControls(viewer.mainViewport.camera, viewer.renderArea,{
|
|
|
|
|
|
- dontHideWhenFaceCamera: true,
|
|
|
+ //dontHideWhenFaceCamera: true,
|
|
|
/* scaleAxis: ["x", "y"],
|
|
|
//隐藏了z轴。虽然参数没用上
|
|
|
NoScaleZ: true //整体缩放时只缩放xy轴。 */
|
|
@@ -117577,6 +117658,28 @@ ENDSEC
|
|
|
this.transformControls.setSize(1.5);
|
|
|
viewer.scene.scene.add(this.transformControls);
|
|
|
|
|
|
+ //右屏
|
|
|
+ this.transformControls2 = new TransformControls(viewer.mainViewport.camera, viewer.renderArea,{
|
|
|
+ });
|
|
|
+ this.transformControls.setSize(1.5);
|
|
|
+ viewer.scene.scene.add(this.transformControls2);
|
|
|
+ viewer.setObjectLayers(this.transformControls2, 'layer2' );
|
|
|
+
|
|
|
+ let mouseDown = (e)=>{//暂时消失
|
|
|
+ if(this.split && this.selected.isPointcloud){
|
|
|
+ viewer.outlinePass.edgeStrength = 0;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ let mouseUp = (e)=>{
|
|
|
+ if(this.split && this.selected.isPointcloud){
|
|
|
+ viewer.outlinePass.edgeStrength = edgeStrengths.pointcloud;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ this.transformControls.addEventListener('mouseDown',mouseDown);
|
|
|
+ this.transformControls2.addEventListener('mouseDown',mouseDown);
|
|
|
+ this.transformControls.addEventListener('mouseUp',mouseUp);
|
|
|
+ this.transformControls2.addEventListener('mouseUp',mouseUp);
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
@@ -117683,7 +117786,17 @@ ENDSEC
|
|
|
viewer.addEventListener('global_mousedown', drag);
|
|
|
viewer.addEventListener('global_drag', drag, 10);
|
|
|
viewer.addEventListener('global_mousemove', (e)=>{
|
|
|
- if(this.split && this.transformState && !e.drag && (e.hoverViewport.name == 'top' || this.transformState == 'translate')){
|
|
|
+ if(this.split && this.transformState && !e.drag && (e.hoverViewport.name == 'top' || this.transformState == 'translate')){
|
|
|
+
|
|
|
+ /* if(this.lastHoverViewport != e.hoverViewport){
|
|
|
+ this.lastHoverViewport = e.hoverViewport
|
|
|
+ this.transformControls.view = e.hoverViewport.view
|
|
|
+ this.transformControls.camera = e.hoverViewport.camera
|
|
|
+ this.transformControls.hideAxis( this.transformState, e.hoverViewport.name == 'top' ? [z] : [x,y]);
|
|
|
+ } */
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
let mouseover = e.intersect.pointclouds.includes(this.selected) || e.intersect.allElements.some(e=>e.object == this.selected);
|
|
|
//let mouseover = (e.intersect.object || e.intersect.pointcloud) == this.selected
|
|
@@ -117699,8 +117812,9 @@ ENDSEC
|
|
|
}
|
|
|
}else {
|
|
|
this.clearTranCursor();
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
});
|
|
|
|
|
|
viewer.addEventListener('global_drop', (e)=>{
|
|
@@ -117747,6 +117861,19 @@ ENDSEC
|
|
|
viewer.setControls(viewer.fpControls);
|
|
|
viewer.viewports.find(e=>e.name == 'right').rotateSide = true;
|
|
|
viewer.viewports.find(e=>e.name == 'top').alignment = true;
|
|
|
+
|
|
|
+
|
|
|
+ viewer.viewports[1].layersAdd('layer2');
|
|
|
+ viewer.viewports[0].layersAdd('layer1');
|
|
|
+ viewer.setObjectLayers(this.transformControls, 'layer1' );
|
|
|
+ this.transformControls.view = viewer.viewports[0].view;
|
|
|
+ this.transformControls.camera = viewer.viewports[0].camera;
|
|
|
+ this.transformControls._gizmo.hideAxis = {translate:['z'], rotate:['x','y','z'] };
|
|
|
+ this.transformControls2.view = viewer.viewports[1].view;
|
|
|
+ this.transformControls2.camera = viewer.viewports[1].camera;
|
|
|
+ this.transformControls2._gizmo.hideAxis = {translate:['x','y'], rotate:['x','y','z'] };
|
|
|
+
|
|
|
+
|
|
|
|
|
|
},
|
|
|
|
|
@@ -117760,6 +117887,13 @@ ENDSEC
|
|
|
this.showModelOutline(this.selected, true)
|
|
|
this.selected.material.activeAttributeName = "rgba"
|
|
|
} */
|
|
|
+ this.transformControls.camera = viewer.viewports[0].camera;
|
|
|
+ this.transformControls.view = viewer.viewports[0].view;
|
|
|
+ this.transformControls._gizmo.hideAxis = {};
|
|
|
+ viewer.setObjectLayers(this.transformControls, 'sceneObjects' ); //恢复
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
},
|
|
|
|
|
|
rotateSideCamera(angle){
|
|
@@ -117827,9 +117961,9 @@ ENDSEC
|
|
|
this.showModelOutline(model);
|
|
|
|
|
|
if(model.isPointcloud){
|
|
|
- viewer.outlinePass.edgeStrength = 4;
|
|
|
+ viewer.outlinePass.edgeStrength = edgeStrengths.pointcloud;
|
|
|
}else {
|
|
|
- viewer.outlinePass.edgeStrength = 100;
|
|
|
+ viewer.outlinePass.edgeStrength = edgeStrengths.glb;
|
|
|
}
|
|
|
//console.log('selectModel', model)
|
|
|
|
|
@@ -117875,26 +118009,7 @@ ENDSEC
|
|
|
}
|
|
|
},
|
|
|
|
|
|
- /* focusOn(object, duration = 400){
|
|
|
- let boundingBox = object.boundingBox.clone().applyMatrix4(object.matrixWorld)
|
|
|
- let center = boundingBox.getCenter(new THREE.Vector3)
|
|
|
- let size = boundingBox.getSize(new THREE.Vector3)
|
|
|
- let maxSize = size.length() //对角线长度
|
|
|
-
|
|
|
- if(object.isPointcloud){
|
|
|
- maxSize /= 2
|
|
|
- }
|
|
|
-
|
|
|
- let hfov = cameraLight.getHFOVForCamera(viewer.mainViewport.camera,true)
|
|
|
- let minRadius = maxSize / Math.tan(hfov/2)
|
|
|
- //viewer.mainViewport.view.lookAt(center)
|
|
|
- viewer.mainViewport.view.setView({
|
|
|
- position: center.clone().sub(viewer.mainViewport.view.direction.clone().multiplyScalar(minRadius)),
|
|
|
- target: center,
|
|
|
- duration
|
|
|
- }) //setView can cancel bump
|
|
|
-
|
|
|
- }, */
|
|
|
+
|
|
|
focusOn(objects, duration = 400, fitBound=true, dontLookUp){
|
|
|
if(!(objects instanceof Array)){
|
|
|
objects = [objects];
|
|
@@ -117926,9 +118041,18 @@ ENDSEC
|
|
|
|
|
|
viewer.mainViewport.view.radius = viewer.mainViewport.camera.position.distanceTo(position);
|
|
|
//为了不改画面,不调节方向了,只能调调radius,一定程度将target靠近model
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+ moveBoundCenterTo(model,pos){ //使boundCenter在所要的位置
|
|
|
+ let diff = new Vector3().subVectors(pos, model.boundCenter);
|
|
|
+ model.position.add(diff);
|
|
|
+ },
|
|
|
+
|
|
|
+ getBoundCenter(model){
|
|
|
+ if(!model.boundCenter) model.boundCenter = new Vector3;
|
|
|
+ model.boundingBox.getCenter(model.boundCenter).applyMatrix4(model.matrixWorld);
|
|
|
},
|
|
|
|
|
|
setModelBtmHeight(model, z ){
|
|
@@ -117953,6 +118077,7 @@ ENDSEC
|
|
|
model.btmHeight = center.z - size.z / 2;
|
|
|
},
|
|
|
|
|
|
+
|
|
|
maintainBoundXY(model){ //在旋转和缩放后,立即执行这个函数,使boundCenter保持原位
|
|
|
|
|
|
model.updateMatrixWorld();
|
|
@@ -117962,23 +118087,21 @@ ENDSEC
|
|
|
let diff = new Vector2$1().subVectors(center1,center2);
|
|
|
model.position.x += diff.x;
|
|
|
model.position.y += diff.y;
|
|
|
- /* model.updateMatrixWorld()
|
|
|
- this.getBoundCenter(model)//再次更新,它需要和center1相同 */
|
|
|
model.boundCenter.copy(center1);
|
|
|
- },
|
|
|
+ },
|
|
|
+
|
|
|
|
|
|
- moveBoundCenterTo(model,pos){ //使boundCenter在所要的位置
|
|
|
- let diff = new Vector3().subVectors(pos, model.boundCenter);
|
|
|
- model.position.add(diff);
|
|
|
- },
|
|
|
|
|
|
- getBoundCenter(model){
|
|
|
- if(!model.boundCenter) model.boundCenter = new Vector3;
|
|
|
- model.boundingBox.getCenter(model.boundCenter).applyMatrix4(model.matrixWorld);
|
|
|
+ maintainBoundCenter(model){
|
|
|
+ model.updateMatrixWorld();
|
|
|
+ let center1 = model.boundCenter.clone();//还未更新的
|
|
|
+ this.getBoundCenter(model);//更新
|
|
|
+ let center2 = model.boundCenter.clone();
|
|
|
+ let diff = new Vector3().subVectors(center1,center2);
|
|
|
+ model.position.add(diff);
|
|
|
+ model.boundCenter.copy(center1);
|
|
|
},
|
|
|
|
|
|
-
|
|
|
-
|
|
|
modelTransformCallback(model){
|
|
|
|
|
|
model.updateMatrixWorld();
|
|
@@ -125523,7 +125646,12 @@ ENDSEC
|
|
|
|
|
|
render: function (scenes, camera, viewports, renderer, writeBuffer, readBuffer, maskActive, renderFun ) {
|
|
|
if(!(scenes instanceof Array))scenes = [scenes];
|
|
|
- if ( this.selectedObjects.length > 0 ) {
|
|
|
+
|
|
|
+ if(this.edgeStrength == 0){
|
|
|
+ console.log('this.edgeStrength == 0');
|
|
|
+ }
|
|
|
+
|
|
|
+ if ( this.selectedObjects.length > 0 && this.edgeStrength > 0) {
|
|
|
|
|
|
let render2 = (target, dontRenderRtEDL=true)=>{
|
|
|
if(renderFun){
|
|
@@ -125534,8 +125662,12 @@ ENDSEC
|
|
|
scenes.forEach(scene=>renderer.render( scene, camera));
|
|
|
}
|
|
|
};
|
|
|
- viewports.forEach(e=> e.beforeRender = ()=>{
|
|
|
- this.replaceDepthToViewZ( e.camera );
|
|
|
+ viewports.forEach(e=>{
|
|
|
+ e.oldBeforeRender = e.beforeRender;
|
|
|
+ e.beforeRender = ()=>{
|
|
|
+ e.oldBeforeRender && e.oldBeforeRender();
|
|
|
+ this.replaceDepthToViewZ( e.camera );
|
|
|
+ };
|
|
|
});
|
|
|
|
|
|
|
|
@@ -125570,10 +125702,13 @@ ENDSEC
|
|
|
this.changeVisibilityOfSelectedObjects( true );
|
|
|
|
|
|
|
|
|
- viewports.forEach(e=> e.beforeRender = ()=>{
|
|
|
- // Update Texture Matrix for Depth compare
|
|
|
- this.updateTextureMatrix(e.camera);
|
|
|
- this.prepareMaskMaterial.uniforms[ "cameraNearFar" ].value = new Vector2$1( e.camera.near, e.camera.far );
|
|
|
+ viewports.forEach(e=>{
|
|
|
+ e.beforeRender = ()=>{
|
|
|
+ e.oldBeforeRender && e.oldBeforeRender();
|
|
|
+ // Update Texture Matrix for Depth compare
|
|
|
+ this.updateTextureMatrix(e.camera);
|
|
|
+ this.prepareMaskMaterial.uniforms[ "cameraNearFar" ].value = new Vector2$1( e.camera.near, e.camera.far );
|
|
|
+ };
|
|
|
});
|
|
|
|
|
|
|
|
@@ -125596,7 +125731,7 @@ ENDSEC
|
|
|
//renderer.render( scene, camera/* , this.renderTargetMaskBuffer, true */ );
|
|
|
render2(this.renderTargetMaskBuffer);
|
|
|
|
|
|
- viewports.forEach((e)=>{e.beforeRender = null;});
|
|
|
+ viewports.forEach((e)=>{e.beforeRender = e.oldBeforeRender;});
|
|
|
|
|
|
this.changeVisibilityOfNonSelectedObjects( true , scenes);
|
|
|
|
|
@@ -129046,7 +129181,7 @@ ENDSEC
|
|
|
|
|
|
render(params={}){//add params
|
|
|
if(Potree.measureTimings) performance.mark("render-start");
|
|
|
- if(this.outlinePass.selectedObjects.length && !params.screenshot){
|
|
|
+ if(this.outlinePass.selectedObjects.length && this.outlinePass.edgeStrength > 0 && !params.screenshot){
|
|
|
this.composer.render(this.inputHandler.interactiveScenes.concat(this.scene.scene).concat(viewer.scene.scenePointCloud), null, this.viewports, this.renderDefault.bind(this));
|
|
|
}else {
|
|
|
this.renderDefault(params);
|