|
@@ -17867,7 +17867,8 @@
|
|
|
if (text == void 0) text = '';
|
|
|
if (this.text !== text) {
|
|
|
if (!(text instanceof Array)) {
|
|
|
- this.text = [text + ''];
|
|
|
+ this.text = text.split('\n'); //如果是input手动输入的\n这里会是\\n且不会被拆分, 绘制的依然是\n。
|
|
|
+ //this.text = [text + '']
|
|
|
} else this.text = text;
|
|
|
this.updateTexture();
|
|
|
}
|
|
@@ -19011,6 +19012,8 @@
|
|
|
constructor() {
|
|
|
super();
|
|
|
delete this.sceneBG;
|
|
|
+ this.overlayScene = new Scene();
|
|
|
+ viewer.addEventListener("render.pass.perspective_overlay", this.renderOverlay.bind(this));
|
|
|
this.cameraP = new PerspectiveCamera(this.fov, 1, Potree.config.view.near, Potree.config.view.cameraFar);
|
|
|
this.cameraO = new OrthographicCamera(-1, 1, 1, -1, Potree.config.view.near, Potree.settings.cameraFar);
|
|
|
this.cameraP.limitFar = true; //add
|
|
@@ -19154,29 +19157,20 @@
|
|
|
bg2.layers.set(Potree.config.renderLayers.bg2);
|
|
|
this.bg2 = bg2;
|
|
|
}
|
|
|
-
|
|
|
- // { // lights
|
|
|
- // {
|
|
|
- // let light = new THREE.DirectionalLight(0xffffff);
|
|
|
- // light.position.set(10, 10, 1);
|
|
|
- // light.target.position.set(0, 0, 0);
|
|
|
- // this.scene.add(light);
|
|
|
- // }
|
|
|
-
|
|
|
- // {
|
|
|
- // let light = new THREE.DirectionalLight(0xffffff);
|
|
|
- // light.position.set(-10, 10, 1);
|
|
|
- // light.target.position.set(0, 0, 0);
|
|
|
- // this.scene.add(light);
|
|
|
- // }
|
|
|
-
|
|
|
- // {
|
|
|
- // let light = new THREE.DirectionalLight(0xffffff);
|
|
|
- // light.position.set(0, -10, 20);
|
|
|
- // light.target.position.set(0, 0, 0);
|
|
|
- // this.scene.add(light);
|
|
|
- // }
|
|
|
- // }
|
|
|
+ }
|
|
|
+ renderOverlay() {
|
|
|
+ var o = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
+ // measure tag
|
|
|
+ if (this.overlayScene.children.filter(e => e.visible).length == 0) return;
|
|
|
+ var renderer = o.renderer || this.viewer.renderer;
|
|
|
+ Potree.Utils.setCameraLayers(o.camera, ['sceneObjects']);
|
|
|
+ viewer.dispatchEvent({
|
|
|
+ type: "render.begin2",
|
|
|
+ name: 'overlays',
|
|
|
+ viewport: o.viewport,
|
|
|
+ renderer: o.renderer
|
|
|
+ });
|
|
|
+ renderer.render(this.overlayScene, o.camera);
|
|
|
}
|
|
|
}
|
|
|
;
|
|
@@ -22257,6 +22251,7 @@
|
|
|
*/
|
|
|
|
|
|
//xzw add
|
|
|
+ var labelorder = 5;
|
|
|
var config$1 = {
|
|
|
//配置参数 不可修改
|
|
|
displayMode: {
|
|
@@ -22529,8 +22524,28 @@
|
|
|
measureLabel: 8,
|
|
|
sorptionSign: 10,
|
|
|
model: 10,
|
|
|
- model: 10,
|
|
|
+ path: {
|
|
|
+ label: labelorder,
|
|
|
+ edge: labelorder,
|
|
|
+ line: labelorder - 1,
|
|
|
+ marker: labelorder
|
|
|
+ },
|
|
|
+ tag: {
|
|
|
+ label: labelorder,
|
|
|
+ spot: labelorder,
|
|
|
+ line: labelorder - 1,
|
|
|
+ onMesh: {
|
|
|
+ line: labelorder - 1,
|
|
|
+ spot: labelorder - 2
|
|
|
+ }
|
|
|
+ },
|
|
|
magnifier: 50
|
|
|
+
|
|
|
+ /*
|
|
|
+ renderOrder:
|
|
|
+ 理想情况是大家渲染层级都一样,用真实的遮挡情况。(depthTest为false的话会three会自动根据深度调整渲染顺序, 只是随着角度变化常有错) 但有时候为了处理特殊情况,如希望热点的线永在热点之后不穿出,需要增加层级。但热点和热点之间、热点和其他物品是平等的,而降低的层级总被远处的高层级遮挡。
|
|
|
+ 因此无论何时尽量减少层级数目。如有必要,可临时将容易被忽视穿帮的线条设置为低层级。
|
|
|
+ */
|
|
|
},
|
|
|
siteModel: {
|
|
|
names: {
|
|
@@ -42112,12 +42127,6 @@
|
|
|
width2d: 200
|
|
|
};
|
|
|
var titleLineHeight = 2;
|
|
|
- var renderOrders = {
|
|
|
- path: 1,
|
|
|
- marker: 2,
|
|
|
- line: 3,
|
|
|
- label: 4
|
|
|
- };
|
|
|
var arrowCountMax = 100; //箭头总数不能超过这个值。 The count value passed into the constructor represents the maximum number of instances of this mesh. You can change the number of instances at runtime to an integer value in the range [0, count].If you need more instances than the original count value, you have to create a new InstancedMesh.
|
|
|
var lastArrowCamPos,
|
|
|
lastArrowCount = 0;
|
|
@@ -42202,7 +42211,7 @@
|
|
|
setMarkerScale(marker,this.halfPathWidth)
|
|
|
marker.markerSelectStates = {}
|
|
|
Potree.Utils.setObjectLayers(marker, 'measure' )
|
|
|
- marker.renderOrder = renderOrders.marker
|
|
|
+ marker.renderOrder = Potree.config.renderOrders.path.marker
|
|
|
|
|
|
}
|
|
|
return
|
|
@@ -42237,8 +42246,8 @@
|
|
|
},
|
|
|
borderRadius: 6,
|
|
|
fontsize: this.fontsize || 13,
|
|
|
- renderOrder: renderOrders.label,
|
|
|
- pickOrder: renderOrders.label,
|
|
|
+ renderOrder: Potree.config.renderOrders.path.label,
|
|
|
+ pickOrder: Potree.config.renderOrders.path.label,
|
|
|
clipDistance: 10,
|
|
|
fadeFar: this.fadeFar
|
|
|
}));
|
|
@@ -42249,7 +42258,7 @@
|
|
|
transparent: true,
|
|
|
fadeFar: this.fadeFar
|
|
|
}));
|
|
|
- line.renderOrder = renderOrders.line;
|
|
|
+ line.renderOrder = Potree.config.renderOrders.line;
|
|
|
group.add(line);
|
|
|
group.add(this.titleLabel);
|
|
|
this.titleLabel.position.z = titleLineHeight;
|
|
@@ -42308,7 +42317,8 @@
|
|
|
})));
|
|
|
//new THREE.MeshBasicMaterial({depthWrite:false, transparent:true, color:this.pathColor || '#fff', opacity:0.5, side:2}))
|
|
|
this.add(this.edge);
|
|
|
- this.edge.renderOrder = renderOrders.path;
|
|
|
+ this.edge.renderOrder = Potree.config.renderOrders.path.edge,
|
|
|
+ //和tag的一样,但为何遮不住它?好在一般底下有一层地面能遮住
|
|
|
this.edge.name = 'pathEdge';
|
|
|
var addHoverEvent = () => {
|
|
|
var mouseover = e => {
|
|
@@ -42406,8 +42416,8 @@
|
|
|
name: 'markerTitle',
|
|
|
text: "",
|
|
|
fontsize: this.fontsize || 12,
|
|
|
- renderOrder: renderOrders.label,
|
|
|
- pickOrder: renderOrders.label,
|
|
|
+ renderOrder: Potree.config.renderOrders.path.label,
|
|
|
+ pickOrder: Potree.config.renderOrders.path.label,
|
|
|
fontWeight: '',
|
|
|
//thick
|
|
|
backgroundColor: {
|
|
@@ -42539,7 +42549,7 @@
|
|
|
setMarkerScale(marker, this.halfPathWidth);
|
|
|
marker.markerSelectStates = {};
|
|
|
//Potree.Utils.setObjectLayers(marker, 'measure' )
|
|
|
- marker.renderOrder = renderOrders.marker;
|
|
|
+ marker.renderOrder = Potree.config.renderOrders.path.marker;
|
|
|
marker.addEventListener('mouseover', e => {
|
|
|
if (this.addOrRemovePoint && !this.isNew) {
|
|
|
viewer.dispatchEvent({
|
|
@@ -42677,6 +42687,7 @@
|
|
|
}
|
|
|
setMarkerTitle(index, title) {
|
|
|
if (!this.markerLabels[index]) return;
|
|
|
+ this.markerLabels[index].originText = title;
|
|
|
this.markerLabels[index].setText(title);
|
|
|
this.setTitleVisi(this.markerLabels[index], title instanceof Array || title.trim() != '', 'noText');
|
|
|
viewer.dispatchEvent('content_changed');
|
|
@@ -42725,13 +42736,13 @@
|
|
|
state == 'unclick' && (marker.markerSelectStates.click = false);
|
|
|
if (marker.markerSelectStates.click) {
|
|
|
marker.material = getMarkerMat('drag');
|
|
|
- marker.renderOrder = marker.pickOrder = renderOrders.marker + 2;
|
|
|
+ marker.renderOrder = marker.pickOrder = Potree.config.renderOrders.path.marker + 1;
|
|
|
} else if (marker.markerSelectStates.hover) {
|
|
|
marker.material = getMarkerMat(this.addOrRemovePoint ? 'delete' : 'drag');
|
|
|
- marker.renderOrder = marker.pickOrder = renderOrders.marker + 1;
|
|
|
+ marker.renderOrder = marker.pickOrder = Potree.config.renderOrders.path.marker + 1;
|
|
|
} else {
|
|
|
marker.material = getMarkerMat('default');
|
|
|
- marker.renderOrder = marker.pickOrder = renderOrders.marker;
|
|
|
+ marker.renderOrder = marker.pickOrder = Potree.config.renderOrders.path.marker;
|
|
|
}
|
|
|
|
|
|
//marker.selected = absoluteState
|
|
@@ -42836,6 +42847,7 @@
|
|
|
}));
|
|
|
//let material = new THREE.MeshBasicMaterial({map )})
|
|
|
this.arrows = new InstancedMesh(planeGeo$2, material, arrowCountMax); //会自动向shader添加define和instanceMatrix
|
|
|
+ this.arrows.renderOrder = Potree.config.renderOrders.path.edge;
|
|
|
this.add(this.arrows);
|
|
|
//Potree.Utils.setObjectLayers(this.arrows, 'measure' )
|
|
|
}
|
|
@@ -43330,7 +43342,7 @@
|
|
|
this.scene.name = 'scene_measurement';
|
|
|
//this.light = new THREE.PointLight(0xffffff, 1.0);
|
|
|
//this.scene.add(this.light);
|
|
|
- this.viewer.inputHandler.registerInteractiveScene(this.scene);
|
|
|
+
|
|
|
this.history = new History({
|
|
|
applyData: data => {
|
|
|
if (data.measure.parent && data.measure.visible) {
|
|
@@ -43379,7 +43391,7 @@
|
|
|
e.measurement.dispose(); /* this.scene.remove(e.measurement); */
|
|
|
};
|
|
|
this.onAdd = e => {
|
|
|
- this.scene.add(e.measurement);
|
|
|
+ viewer.scene.overlayScene.add(e.measurement);
|
|
|
};
|
|
|
for (var measurement of viewer.scene.measurements) {
|
|
|
this.onAdd({
|
|
@@ -43633,7 +43645,7 @@
|
|
|
args.minMarkers = measure.minMarkers;
|
|
|
} else {
|
|
|
measure = args.measureType == 'MulDistance Ring' ? new Prism(args) : args.type == 'Path' ? new Path$1(args) : new Measure$1(args);
|
|
|
- this.scene.add(measure);
|
|
|
+ viewer.scene.overlayScene.add(measure);
|
|
|
}
|
|
|
measure.isNew = true;
|
|
|
this.viewer.dispatchEvent({
|
|
@@ -43943,6 +43955,7 @@
|
|
|
}
|
|
|
render() {
|
|
|
var o = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
+ //废弃
|
|
|
if (this.scene.children.filter(e => e.visible).length == 0) return;
|
|
|
var renderer = o.renderer || this.viewer.renderer;
|
|
|
Potree.Utils.setCameraLayers(o.camera, ['sceneObjects']);
|
|
@@ -56521,12 +56534,6 @@
|
|
|
maxOcclusionFactor: 0.7,
|
|
|
maxClipFactor: 1
|
|
|
};
|
|
|
- var renderOrders$1 = {
|
|
|
- line: 3,
|
|
|
- spot: 15,
|
|
|
- //高过模型
|
|
|
- label: 17
|
|
|
- };
|
|
|
var planeGeo$3 = new PlaneBufferGeometry(1, 1);
|
|
|
var texLoader$8 = new TextureLoader();
|
|
|
var lineMat;
|
|
@@ -56565,12 +56572,12 @@
|
|
|
map: texLoader$8.load(o.spotUrl || Potree.resourcePath + '/textures/spot_default.png')
|
|
|
})));
|
|
|
this.spot.scale.set(defaultSpotScale, defaultSpotScale, defaultSpotScale);
|
|
|
- this.spot.renderOrder = this.spot.pickOrder = renderOrders$1.spot;
|
|
|
+ this.spot.renderOrder = this.spot.pickOrder = Potree.config.renderOrders.tag.spot;
|
|
|
this.line = LineDraw.createFatLine([], {
|
|
|
mat: lineMat
|
|
|
});
|
|
|
this.line.name = 'tagLine';
|
|
|
- this.line.renderOrder = this.line.pickOrder = renderOrders$1.line;
|
|
|
+ this.line.renderOrder = this.line.pickOrder = Potree.config.renderOrders.tag.line;
|
|
|
this.titleLabel = new TextSprite$2(Object.assign({}, depthMatProp, {
|
|
|
root: group,
|
|
|
text: '',
|
|
@@ -56593,8 +56600,8 @@
|
|
|
fontsize: this.fontsize || 13,
|
|
|
fontWeight: '',
|
|
|
//thick
|
|
|
- renderOrder: renderOrders$1.label,
|
|
|
- pickOrder: renderOrders$1.label,
|
|
|
+ renderOrder: Potree.config.renderOrders.tag.label,
|
|
|
+ pickOrder: Potree.config.renderOrders.tag.label,
|
|
|
useDepth: true
|
|
|
})); //更新sprite时,实际更新的是root: spot的矩阵
|
|
|
this.setTitle(this.title);
|
|
@@ -56734,13 +56741,15 @@
|
|
|
this.titleLabel.position.y = 0;
|
|
|
this.spot.position.set(0, 0, 0.01); //在mesh之上偏移一点
|
|
|
this.setNorQua();
|
|
|
- this.line.renderOrder = renderOrders$1.spot + 1; //比spot高,但比label低
|
|
|
+ this.spot.renderOrder = Potree.config.renderOrders.tag.onMesh.spot; // 防止遮住线
|
|
|
+ this.line.renderOrder = Potree.config.renderOrders.tag.onMesh.line;
|
|
|
} else {
|
|
|
this.titleLabel.parent.add(this.spot);
|
|
|
this.updateTitlePos();
|
|
|
this.spot.position.set(0, 0, 0);
|
|
|
- this.spot.quaternion.set(0, 0, 0, 1); //this.titleLabel.waitUpdate()
|
|
|
- this.line.renderOrder = renderOrders$1.line; //还原
|
|
|
+ this.spot.quaternion.set(0, 0, 0, 1); //this.titleLabel.waitUpdate()
|
|
|
+ this.spot.renderOrder = Potree.config.renderOrders.tag.spot; //还原
|
|
|
+ this.line.renderOrder = Potree.config.renderOrders.tag.line;
|
|
|
}
|
|
|
Potree.Utils.updateVisible(this.line, 'hideTitle', !this.titleLabel.visible && onMesh ? false : true);
|
|
|
this.updateDepthParams();
|
|
@@ -56840,12 +56849,8 @@
|
|
|
constructor(viewer) {
|
|
|
super();
|
|
|
this.viewer = viewer;
|
|
|
- this.scene = new Scene();
|
|
|
viewer.tags = new Object3D();
|
|
|
- this.scene.add(viewer.tags);
|
|
|
- this.viewer.inputHandler.registerInteractiveScene(this.scene);
|
|
|
- viewer.addEventListener("render.pass.perspective_overlay", this.render.bind(this)); //在measure之后渲染,盖住它
|
|
|
-
|
|
|
+ viewer.scene.overlayScene.add(viewer.tags);
|
|
|
this.viewer.addEventListener('start_inserting_tag', e => {
|
|
|
this.viewer.dispatchEvent({
|
|
|
type: 'cancel_insertions'
|
|
@@ -56909,19 +56914,6 @@
|
|
|
});
|
|
|
return deferred.promise();
|
|
|
}
|
|
|
- render() {
|
|
|
- var o = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
|
- if (viewer.tags.children.filter(e => e.visible).length == 0) return;
|
|
|
- var renderer = o.renderer || this.viewer.renderer;
|
|
|
- Potree.Utils.setCameraLayers(o.camera, ['sceneObjects']);
|
|
|
- viewer.dispatchEvent({
|
|
|
- type: "render.begin2",
|
|
|
- name: 'tags',
|
|
|
- viewport: o.viewport,
|
|
|
- renderer: o.renderer
|
|
|
- });
|
|
|
- renderer.render(this.scene, o.camera);
|
|
|
- }
|
|
|
}
|
|
|
|
|
|
var initDir = new Vector3(0, 1, 0); //指南针模型的北方向 向屏幕里
|
|
@@ -73599,7 +73591,7 @@
|
|
|
var rotQua2$1 = new Quaternion().setFromAxisAngle(new Vector3(0, 0, 1), -Math.PI);
|
|
|
var lineMats$3 = {};
|
|
|
var circleMats = {};
|
|
|
- var renderOrders$2 = {
|
|
|
+ var renderOrders = {
|
|
|
circleSelected: 3,
|
|
|
circle: 2,
|
|
|
line: 1
|
|
@@ -73835,7 +73827,7 @@
|
|
|
this.linkGuideLine.visible = false;
|
|
|
this.linkGuideLine.name = 'linkGuideLine';
|
|
|
viewer.scene.scene.add(this.linkGuideLine);
|
|
|
- this.linkGuideLine.renderOrder = renderOrders$2.line;
|
|
|
+ this.linkGuideLine.renderOrder = renderOrders.line;
|
|
|
var update = e => {
|
|
|
if (this.operation != 'addLink' || this.activeViewName != 'top' && this.activeViewName != 'mainView' || !this.selectedPano) {
|
|
|
return this.linkGuideLine.visible = false;
|
|
@@ -74502,7 +74494,7 @@
|
|
|
mat: lineMats$3.default
|
|
|
});
|
|
|
line.name = "".concat(pano0.id, "-").concat(pano1.id);
|
|
|
- line.renderOrder = line.pickOrder = renderOrders$2.line;
|
|
|
+ line.renderOrder = line.pickOrder = renderOrders.line;
|
|
|
this.lineMeshes.add(line);
|
|
|
this.panoLink[pano0.id][pano1.id].line = this.panoLink[pano1.id][pano0.id].line = line;
|
|
|
line.addEventListener('mouseover', () => {
|
|
@@ -74645,8 +74637,8 @@
|
|
|
nearBound: 2,
|
|
|
farBound: 10
|
|
|
},
|
|
|
- renderOrder: renderOrders$2.circle,
|
|
|
- pickOrder: renderOrders$2.circle
|
|
|
+ renderOrder: renderOrders.circle,
|
|
|
+ pickOrder: renderOrders.circle
|
|
|
});
|
|
|
circle.pickDontCheckDis = true;
|
|
|
circle.name = 'panoCircle';
|
|
@@ -74739,7 +74731,7 @@
|
|
|
var opaProp = this.activeViewName == 'top' ? opacitys.topView : opacitys.sideView;
|
|
|
if (this.selectedPano) {
|
|
|
this.selectedPano.circle.material = circleMats['default' + '_' + this.getPanoRtkState(this.selectedPano)];
|
|
|
- this.selectedPano.circle.renderOrder = renderOrders$2.circle;
|
|
|
+ this.selectedPano.circle.renderOrder = renderOrders.circle;
|
|
|
this.selectedPano.removeEventListener('rePos', this.panoReposCallback);
|
|
|
if (this.activeViewName == 'mainView') {} else {
|
|
|
this.selectedClouds.forEach(e => {
|
|
@@ -74752,7 +74744,7 @@
|
|
|
this.updateSelectGroup();
|
|
|
if (pano) {
|
|
|
this.selectedPano.circle.material = circleMats['selected' + '_' + this.getPanoRtkState(this.selectedPano)];
|
|
|
- this.selectedPano.circle.renderOrder = this.selectedPano.circle.pickOrder = renderOrders$2.circleSelected; //侧视图能显示在最前
|
|
|
+ this.selectedPano.circle.renderOrder = this.selectedPano.circle.pickOrder = renderOrders.circleSelected; //侧视图能显示在最前
|
|
|
|
|
|
//viewer.controls.setTarget(this.selectedPano.position) //3d时绕其为中心转动 (注释原因:不想变来变去不习惯,难以查看任意角落细节)
|
|
|
this.selectedPano.addEventListener('rePos', this.panoReposCallback);
|
|
@@ -74940,7 +74932,7 @@
|
|
|
mat: lineMats$3.suggestLink
|
|
|
});
|
|
|
this.suggestLines.push(line);
|
|
|
- line.renderOrder = renderOrders$2.line;
|
|
|
+ line.renderOrder = renderOrders.line;
|
|
|
viewer.scene.scene.add(line);
|
|
|
});
|
|
|
}
|
|
@@ -80734,6 +80726,7 @@
|
|
|
}
|
|
|
this.inputHandler = new InputHandler(this, this.scene.scene);
|
|
|
this.inputHandler.containsMouse = true; //初始化,使键盘事件在mainViewer有效
|
|
|
+ this.inputHandler.registerInteractiveScene(this.scene.overlayScene);
|
|
|
//this.inputHandler.setScene(this.scene);
|
|
|
//this.inputHandler.addInputListener(this);//add
|
|
|
|