|
@@ -4605,7 +4605,7 @@
|
|
|
}
|
|
|
},
|
|
|
dealURL(url) {
|
|
|
- var urlNew = this.replaceAll(url, "\\+", "%2B"); // 浏览器似乎不支持访问带+的地址
|
|
|
+ var urlNew = this.replaceAll(url, "+", "%2B"); //this.replaceAll(url, "\\+", "%2B");// 浏览器似乎不支持访问带+的地址
|
|
|
|
|
|
urlNew = this.replaceAll(urlNew, "/.//", "/"); //去除双斜杠(/.//)
|
|
|
|
|
@@ -21579,9 +21579,9 @@
|
|
|
function panoEditStart(dom, number, EditCloudsArgs) {
|
|
|
Potree.settings.editType = 'pano';
|
|
|
Potree.settings.number = number;
|
|
|
- Potree.settings.unableNavigate = true;
|
|
|
Potree.settings.sizeFitToLevel = true; //当type为衰减模式时自动根据level调节大小。每长一级,大小就除以2
|
|
|
|
|
|
+ var datasetData;
|
|
|
var viewer = new Potree.Viewer(dom);
|
|
|
var Alignment = viewer.modules.Alignment;
|
|
|
viewer.setEDLEnabled(false);
|
|
@@ -21598,15 +21598,6 @@
|
|
|
});
|
|
|
Potree.settings.sizeFitToLevel = true;
|
|
|
}
|
|
|
- EditCloudsArgs.forEach((e, i) => {
|
|
|
- //加载点云和漫游点
|
|
|
- if (e.datasetId == void 0) {
|
|
|
- console.error('没有datasetId '); // 看看和看见没有
|
|
|
- e.datasetId = i; //经常没有datasetId所以自己加
|
|
|
- }
|
|
|
- Potree.settings.datasetsPanos[e.datasetId] = null;
|
|
|
- Potree.loadPanosDone(e.datasetId, e.clouds);
|
|
|
- });
|
|
|
var pointcloudLoadDone = function pointcloudLoadDone() {
|
|
|
//所有点云cloud.js加载完毕后
|
|
|
|
|
@@ -21657,6 +21648,7 @@
|
|
|
var panoCount = panoData.length;
|
|
|
var pointcloudLoaded = 0;
|
|
|
var datasetsCount = Object.keys(Potree.settings.datasetsPanos).length;
|
|
|
+ var datasetData = Potree.datasetData.find(e => e.datasetId = datasetId);
|
|
|
panoData.forEach((pano, index) => {
|
|
|
//let cloudPath = `${Potree.scriptPath}/data/panoEdit/uuidcloud/${pano.uuid}/cloud.js`
|
|
|
var cloudPath = "".concat(Potree.settings.urls.prefix1, "/").concat(Potree.settings.webSite, "/").concat(Potree.settings.number, "/data/bundle_").concat(Potree.settings.number, "/building/uuidcloud/").concat(pano.uuid, "/cloud.js");
|
|
@@ -21671,7 +21663,7 @@
|
|
|
var timeStamp = 0;
|
|
|
pano.index = index; //注意:index不等于uuid,因为有的uuid缺失。但是visibles中存的是下标!
|
|
|
|
|
|
- Potree.loadPointCloud(cloudPath, name, name, timeStamp, e => {
|
|
|
+ Potree.loadPointCloud(cloudPath, name, number, timeStamp, e => {
|
|
|
//开始加载点云
|
|
|
var scene = viewer.scene;
|
|
|
var pointcloud = e.pointcloud;
|
|
@@ -21687,6 +21679,8 @@
|
|
|
pointcloud.dataset_id = datasetId; //多个点云指向一个datasetId
|
|
|
pointcloud.panoUuid = pano.uuid;
|
|
|
pointcloud.timeStamp = timeStamp;
|
|
|
+ pointcloud.datasetData = datasetData;
|
|
|
+ pointcloud.hasDepthTex = Potree.settings.useDepthTex && !!datasetData.has_depth;
|
|
|
|
|
|
//transformPointcloud(pointcloud, pano)
|
|
|
scene.addPointCloud(pointcloud);
|
|
@@ -21708,6 +21702,20 @@
|
|
|
Potree.loadPanosInfo(data => {
|
|
|
loadPanosDone('testDataset', data.sweepLocations);
|
|
|
});
|
|
|
+ } else {
|
|
|
+ Potree.loadDatasets(datasets => {
|
|
|
+ Potree.datasetData = datasets;
|
|
|
+ if (!(EditCloudsArgs instanceof Array)) EditCloudsArgs = [EditCloudsArgs];
|
|
|
+ EditCloudsArgs.forEach((e, i) => {
|
|
|
+ //加载点云和漫游点
|
|
|
+ if (e.datasetId == void 0) {
|
|
|
+ console.error('没有datasetId '); // 看看和看见没有
|
|
|
+ e.datasetId = i; //经常没有datasetId所以自己加
|
|
|
+ }
|
|
|
+ Potree.settings.datasetsPanos[e.datasetId] = null;
|
|
|
+ Potree.loadPanosDone(e.datasetId, e.clouds);
|
|
|
+ });
|
|
|
+ }, number);
|
|
|
}
|
|
|
}
|
|
|
function mergeEditStart(dom, mapDom) {
|
|
@@ -26714,7 +26722,11 @@
|
|
|
//因为位置朝向随着点云位置改变,所以直接运用到点云上,这里清零
|
|
|
this.originPosition = new Vector3(); //{x: 0, y: 0, z: 0}
|
|
|
this.quaternion = new Quaternion(); //{w: 0, x: 0, y: 0, z: 1}
|
|
|
- //this.quaternion4dkk = math.convertVisionQuaternion(this.quaternion)//4dkk内使用的quaternion
|
|
|
+ this.quaternion4dkk = math.convertVisionQuaternion(this.quaternion); //4dkk内使用的quaternion
|
|
|
+
|
|
|
+ this.quaternion2 = this.quaternion.clone();
|
|
|
+ this.quaternion = new Quaternion().multiplyQuaternions(this.quaternion, rot90); //全景图和Cube的水平采样起始坐标相差90度,cubeTex转90度
|
|
|
+
|
|
|
this.visibles = o.visibles;
|
|
|
this.rtkState = o.has_rtk ? o.use_rtk : null;
|
|
|
var height = 1.4; //相机高度
|
|
@@ -26769,9 +26781,8 @@
|
|
|
|
|
|
//let xy = this.transform.forward([this.longitude, this.latitude]);
|
|
|
//this.file = `https://4dkk.4dage.com/images/images${Potree.settings.number}/pan/high/${this.id}.jpg`
|
|
|
-
|
|
|
- this.neighbours = [];
|
|
|
}
|
|
|
+ this.neighbours = [];
|
|
|
this.rotation = new Euler().setFromQuaternion(this.quaternion);
|
|
|
this.build();
|
|
|
this.transformByPointcloud(); //初始化位移
|
|
@@ -30342,7 +30353,7 @@
|
|
|
var click = e => {
|
|
|
//不用"mouseup" 是因为 mouseup有drag object时也会触发
|
|
|
if (e.clickElement || Potree.settings.unableNavigate || this.flying || !e.isTouch && e.button != MOUSE.LEFT || e.drag && e.drag.object //拖拽结束时不算
|
|
|
- || Potree.settings.editType == 'pano' && viewer.modules.PanoEditor.activeViewName != 'mainView'
|
|
|
+ /* || Potree.settings.editType == 'pano' && viewer.modules.PanoEditor.entered */
|
|
|
//|| Potree.settings.editType == 'merge' && !e.intersectPoint || viewer.inputHandler.hoveredElements[0] && viewer.inputHandler.hoveredElements[0].isModel && e.intersectPoint.distance > viewer.inputHandler.hoveredElements[0].distance
|
|
|
|| Potree.settings.editType == 'merge' && !Potree.settings.mergeType2
|
|
|
//|| Potree.settings.mergeType2 && Potree.settings.displayMode == 'showPointCloud'
|
|
@@ -71858,7 +71869,7 @@
|
|
|
var images360, Alignment$1, SiteModel$1, suggestCircleMat;
|
|
|
var texLoader$c = new TextureLoader();
|
|
|
texLoader$c.crossOrigin = "anonymous";
|
|
|
- var rotQua = new Quaternion().setFromAxisAngle(new Vector3(0, 0, 1), Math.PI);
|
|
|
+ var rotQua = new Quaternion().setFromAxisAngle(new Vector3(0, 0, 1), Math.PI / 2 /* Math.PI */);
|
|
|
var lineMats$3 = {};
|
|
|
var circleMats = {};
|
|
|
var renderOrders$1 = {
|
|
@@ -71968,7 +71979,6 @@
|
|
|
viewer.scene.scene.add(this.panoMeshs);
|
|
|
this.lineMeshes.name = 'lineMeshes';
|
|
|
viewer.scene.scene.add(this.lineMeshes);
|
|
|
- Potree.settings.ifShowMarker = false;
|
|
|
{
|
|
|
this.transformControls = new TransformControls(viewer.mainViewport.camera, viewer.renderArea, {
|
|
|
dontHideWhenFaceCamera: true,
|
|
@@ -72024,42 +72034,9 @@
|
|
|
viewer.setEDLEnabled(true); //为了降一倍的绘制. 同时用描边增强立体感,弥补点云稀疏
|
|
|
viewer.setEDLRadius(3);
|
|
|
viewer.setEDLStrength(0.02);
|
|
|
- this.switchView('top');
|
|
|
- {
|
|
|
- //默认选择一个楼层
|
|
|
- var panoVisiReady, siteModelReady;
|
|
|
- var floorInit = () => {
|
|
|
- if (!panoVisiReady || !siteModelReady) return;
|
|
|
- setTimeout(() => {
|
|
|
- if (this.currentFloor == 'all') {
|
|
|
- //还未选择楼层的话
|
|
|
- var floor = SiteModel$1.entities.find(e => e.buildType == 'floor' && e.panos.length); //选择有漫游点的一层
|
|
|
- if (!floor) {
|
|
|
- floor = 'all'; //SiteModel.entities.find(e=>e.buildType == 'floor')
|
|
|
- console.log('没有一层有漫游点?!');
|
|
|
- }
|
|
|
- console.log('initDataDone');
|
|
|
- console.log('gotoFloor 1');
|
|
|
- this.gotoFloor(floor);
|
|
|
- }
|
|
|
- }, 1); //2d那边用了nextTick ,so setTimeout here
|
|
|
- };
|
|
|
- SiteModel$1.bus.addEventListener('initDataDone', () => {
|
|
|
- siteModelReady = true;
|
|
|
- floorInit();
|
|
|
- }, {
|
|
|
- once: true
|
|
|
- });
|
|
|
- this.addEventListener('panoVisiReady', () => {
|
|
|
- //2d初始化完成,才可以由3d修改pano显示 (因为在之前2d会给每个pano传来显示的消息,在这之前的修改都会别覆盖)
|
|
|
- panoVisiReady = true;
|
|
|
- floorInit();
|
|
|
- }, {
|
|
|
- once: true
|
|
|
- });
|
|
|
- }
|
|
|
Alignment$1.bus.addEventListener('switchHandle', this.updateCursor.bind(this));
|
|
|
viewer.addEventListener('global_click', e => {
|
|
|
+ if (this.entered) return;
|
|
|
if (e.button === MOUSE.RIGHT) {
|
|
|
//取消旋转和平移
|
|
|
//console.log('right click',e)
|
|
@@ -72124,35 +72101,63 @@
|
|
|
viewer.dispatchEvent('content_changed');
|
|
|
};
|
|
|
viewer.addEventListener('global_mousemove', e => {
|
|
|
- update(e);
|
|
|
+ if (this.entered) update(e);
|
|
|
});
|
|
|
|
|
|
//this.addEventListener('updateLinkGuideLine', update)
|
|
|
}
|
|
|
-
|
|
|
- /*
|
|
|
- viewer.inputHandler.addEventListener('keydown', (e)=>{
|
|
|
- if(e.event.key == "r" ){
|
|
|
- this.setTranMode('rotate')
|
|
|
- }else if(e.event.key == "t"){
|
|
|
- this.setTranMode('translate')
|
|
|
- }
|
|
|
- }) */
|
|
|
- /* {
|
|
|
- viewer.addEventListener('camera_changed', (e)=>{
|
|
|
- Common.intervalTool.isWaiting('updatePointLevels', ()=>{
|
|
|
- this.updatePointLevels()
|
|
|
- }, 1050)
|
|
|
- })
|
|
|
- setTimeout(()=>{
|
|
|
- this.updatePointLevels()
|
|
|
- }, viewer.scene.pointclouds.length*150) //等待差不多updat出了正确的visibleNode时
|
|
|
- } */
|
|
|
-
|
|
|
this.panoReposCallback = () => {
|
|
|
viewer.controls.setTarget(this.selectedPano.position); //3d时绕其为中心转动
|
|
|
};
|
|
|
});
|
|
|
+ this.leave();
|
|
|
+ this.inited = true;
|
|
|
+ }
|
|
|
+ enter() {
|
|
|
+ Potree.settings.display = 'showPointCloud';
|
|
|
+ Potree.settings.ifShowMarker = false;
|
|
|
+ Potree.Utils.updateVisible(this.panoMeshs, 'entered', true);
|
|
|
+ Potree.Utils.updateVisible(this.lineMeshes, 'entered', true);
|
|
|
+ Potree.settings.unableNavigate = true;
|
|
|
+ this.switchView('top');
|
|
|
+
|
|
|
+ //过后恢复
|
|
|
+ /* {//默认选择一个楼层
|
|
|
+ let panoVisiReady, siteModelReady;
|
|
|
+ let floorInit = ()=>{
|
|
|
+ if(!panoVisiReady || !siteModelReady || !this.entered )return
|
|
|
+ setTimeout(()=>{
|
|
|
+ if(this.currentFloor == 'all'){//还未选择楼层的话
|
|
|
+ let floor = SiteModel.entities.find(e=>e.buildType == 'floor' && e.panos.length) //选择有漫游点的一层
|
|
|
+ if(!floor){
|
|
|
+ floor = 'all' //SiteModel.entities.find(e=>e.buildType == 'floor')
|
|
|
+ console.log('没有一层有漫游点?!')
|
|
|
+ }
|
|
|
+ console.log('initDataDone')
|
|
|
+
|
|
|
+ console.log('gotoFloor 1')
|
|
|
+ this.gotoFloor(floor)
|
|
|
+ }
|
|
|
+ },1) //2d那边用了nextTick ,so setTimeout here
|
|
|
+ }
|
|
|
+
|
|
|
+ SiteModel.bus.addEventListener('initDataDone',()=>{
|
|
|
+ siteModelReady = true;
|
|
|
+ floorInit()
|
|
|
+ },{once:true})
|
|
|
+ this.addEventListener('panoVisiReady',()=>{//2d初始化完成,才可以由3d修改pano显示 (因为在之前2d会给每个pano传来显示的消息,在这之前的修改都会别覆盖)
|
|
|
+ panoVisiReady = true
|
|
|
+ floorInit()
|
|
|
+ },{once:true})
|
|
|
+ } */
|
|
|
+ }
|
|
|
+ leave() {
|
|
|
+ Potree.settings.display = 'showPanos';
|
|
|
+ Potree.settings.ifShowMarker = true;
|
|
|
+ Potree.Utils.updateVisible(this.panoMeshs, 'entered', false);
|
|
|
+ Potree.Utils.updateVisible(this.lineMeshes, 'entered', false);
|
|
|
+ Potree.settings.unableNavigate = false;
|
|
|
+ this.inited && this.switchView('mainView');
|
|
|
}
|
|
|
setTranMode(mode) {
|
|
|
//rotate or translate
|
|
@@ -73217,6 +73222,9 @@
|
|
|
|
|
|
如果未全部相连,不能保存
|
|
|
|
|
|
+
|
|
|
+ 点位编辑页加载的漫游点坐标朝向和4dkk与主页的都不一样,是单独的一套。
|
|
|
+
|
|
|
*/
|
|
|
|
|
|
var PanoEditor$1 = new PanoEditor();
|
|
@@ -78518,12 +78526,12 @@
|
|
|
SiteModel,
|
|
|
volumeComputer: new VolumeComputer() //暂时
|
|
|
};
|
|
|
- Potree.settings.useDepthTex = Potree.settings.mergeType2;
|
|
|
if (Potree.settings.editType == "pano") {
|
|
|
this.modules.PanoEditor = PanoEditor$1;
|
|
|
} else if (Potree.settings.editType == "merge") {
|
|
|
this.modules.MergeEditor = MergeEditor;
|
|
|
this.modules.CamAniEditor = CamAniEditor;
|
|
|
+ Potree.settings.useDepthTex = Potree.settings.mergeType2;
|
|
|
}
|
|
|
} else {
|
|
|
this.modules = {
|