|
|
@@ -160,10 +160,8 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
if(data.length>1)console.log('该场景有多个数据集只取第一个')
|
|
|
data = [data[0]] //只需要一个
|
|
|
Potree.datasetData = data
|
|
|
- viewer.transform = null
|
|
|
- var datasetLength = data.length
|
|
|
- var pointcloudLoaded = 0
|
|
|
- var panosLoaded = 0
|
|
|
+
|
|
|
+
|
|
|
var pointcloudLoadDone = function(){//点云cloud.js加载完毕后
|
|
|
viewer.updateModelBound()
|
|
|
let {boundSize, center} = viewer.bound
|
|
|
@@ -176,11 +174,6 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
|
|
|
|
|
|
if(!ifReload){
|
|
|
- /* viewer.scene.view.setView({
|
|
|
- position: center.clone().add(new THREE.Vector3(10,5,10)),
|
|
|
- target: center
|
|
|
- }) */
|
|
|
-
|
|
|
viewer.dispatchEvent({type:'loadPointCloudDone'})
|
|
|
|
|
|
if(!Potree.settings.UserPointDensity){
|
|
|
@@ -239,10 +232,8 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
|
|
|
}
|
|
|
|
|
|
- if(!Potree.settings.originDatasetId)Potree.settings.originDatasetId = data[0].id
|
|
|
- var originDataset = data.find(e=>e.id == Potree.settings.originDatasetId)
|
|
|
-
|
|
|
- {//拿初始数据集作为基准。它的位置是000
|
|
|
+
|
|
|
+ /* {//拿初始数据集作为基准。它的位置是000
|
|
|
var locationLonLat = originDataset.location.slice(0,2)
|
|
|
proj4.defs("NAVVIS:TMERC", "+proj=tmerc +ellps=WGS84 +lon_0=" + locationLonLat[0].toPrecision(15) + " +lat_0=" + locationLonLat[1].toPrecision(15));
|
|
|
proj4.defs("WGS84", "+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs");
|
|
|
@@ -259,7 +250,7 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
viewer.mapViewer && viewer.mapViewer.mapLayer.maps[0].updateProjection()
|
|
|
|
|
|
}
|
|
|
-
|
|
|
+ */
|
|
|
|
|
|
data.forEach((dataset,index)=>{
|
|
|
if(!ifReload){
|
|
|
@@ -282,7 +273,7 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
let material = pointcloud.material;
|
|
|
|
|
|
pointcloud.datasetData = dataset
|
|
|
-
|
|
|
+ Potree.Utils.setTileClass(pointcloud, pointcloudsList[curPointIndex].resolution || dataset?.sceneResolution)
|
|
|
material.minSize = config.minSize
|
|
|
material.maxSize = config.maxSize
|
|
|
material.pointSizeType = config.pointSizeType //Potree.PointSizeType[config.pointSizeType]//Potree.PointSizeType.ADAPTIVE;//FIXED
|
|
|
@@ -292,18 +283,14 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
pointcloud.color = pointcloud.material.color = dataset.color
|
|
|
pointcloud.dataset_id = dataset.id;//供漫游点找到属于的dataset点云
|
|
|
pointcloud.timeStamp = timeStamp
|
|
|
- transformPointcloud(pointcloud,dataset)
|
|
|
- scene.addPointCloud(pointcloud);
|
|
|
- pointcloudLoaded ++;
|
|
|
- if(pointcloudLoaded == datasetLength)pointcloudLoadDone()
|
|
|
+ //transformPointcloud(pointcloud,dataset)
|
|
|
+ scene.addPointCloud(pointcloud);
|
|
|
+ pointcloudLoadDone()
|
|
|
|
|
|
Potree.loadPanos(dataset.id, (data) => {
|
|
|
//console.log('loadPanos',dataset.sceneCode, dataset.id, data)
|
|
|
- viewer.images360.addPanoData(data, pointcloud )
|
|
|
- panosLoaded ++;
|
|
|
- if(panosLoaded == datasetLength){
|
|
|
- panosLoadDone()
|
|
|
- }
|
|
|
+ viewer.images360.addPanoData(data, pointcloud )
|
|
|
+ panosLoadDone()
|
|
|
})
|
|
|
})
|
|
|
}else{
|
|
|
@@ -471,7 +458,7 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
|
|
|
|
|
|
let objUrls = [
|
|
|
- Potree.resourcePath+'/models/obj/man1/1',
|
|
|
+ //Potree.resourcePath+'/models/obj/man1/1',
|
|
|
'https://4dkk.4dage.com/scene_view_data/KK-t-JyP3NbEwHAi/data/mesh/mesh',
|
|
|
Potree.resourcePath+'/models/obj/sphere',
|
|
|
Potree.resourcePath+'/models/obj/28M/GW1H',
|
|
|
@@ -481,6 +468,15 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
Potree.resourcePath+'/models/obj/53M/output_00',
|
|
|
], objIndex = 0
|
|
|
|
|
|
+ let pointcloudsList = [
|
|
|
+ Potree.settings.number,//4k
|
|
|
+ 'SG-t-VzzjhSgyaAd',//6k
|
|
|
+ {number:'SG-t-PMC5t3krozE', resolution:'2k'}//pretend 2k
|
|
|
+
|
|
|
+ ],curPointIndex = -1
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
//initializeTransformation(lonlat)
|
|
|
// // 1. 定义 CGCS2000 (EPSG:4490) 和 地心坐标系 (EPSG:4978)
|
|
|
// // EPSG:4490 是经纬度坐标系 3d-tiles就是使用这个坐标系
|
|
|
@@ -489,9 +485,8 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
proj4.defs("EPSG:4978", "+proj=geocent +datum=WGS84 +units=m +no_defs +type=crs" );
|
|
|
|
|
|
let lonlat = Potree.browser.urlHasValue('lonlat',true).split(',')
|
|
|
- lonlat = lonlat.length == 2 ? lonlat.map(e=>parseFloat(e)) : [113.60,22.36 ]
|
|
|
- //[83.0246,41.715012] /* */
|
|
|
- Potree.settings.useRectProj = Potree.browser.urlHasValue('rectProj')
|
|
|
+ lonlat = lonlat.length == 2 ? lonlat.map(e=>parseFloat(e)) : [113.60,22.36 ]
|
|
|
+ Potree.settings.useRectProj = Potree.browser.urlHasValue('rectProj')
|
|
|
Potree.setLonlat(...lonlat)
|
|
|
|
|
|
/* proj4.defs(
|
|
|
@@ -499,13 +494,42 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
`+proj=tmerc +lat_0=${lonlat[1]} +lon_0=${lonlat[0]} +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +units=m +no_defs`
|
|
|
); */
|
|
|
|
|
|
+ viewer.images360.addEventListener('endChangeMode',(e)=>{
|
|
|
+ //Potree.Utils.updateVisible(MergeEditor.transformControls, 'showPanos', e.mode == 'showPointCloud')
|
|
|
+ //Potree.Utils.updateVisible(MergeEditor.boxHelper, 'showPanos', e.mode == 'showPointCloud')
|
|
|
+
|
|
|
+ if(e.mode == 'showPanos'){
|
|
|
+ viewer.setControls( viewer.fpControls )
|
|
|
+ viewer.removeEventListener('camera_changed', camera_changed)
|
|
|
+ }else{
|
|
|
+ viewer.addEventListener('camera_changed', camera_changed)
|
|
|
+ }
|
|
|
+
|
|
|
+ /* viewer.objs.children.forEach((e)=>{changeMeshVisi(e)})
|
|
|
+
|
|
|
+ Potree.settings.canWalkThroughModel || viewer.images360.panos.forEach(pano => {
|
|
|
+ pano.setEnable(e.mode == 'showPanos' ? pano.pointcloud == viewer.images360.currentPano.model : true)
|
|
|
+ })
|
|
|
+ */
|
|
|
+
|
|
|
+ Potree.settings.unableNavigate = e.mode == 'showPointCloud'
|
|
|
+ })
|
|
|
|
|
|
|
|
|
|
|
|
+ let camera_changed = (e) => {
|
|
|
+ if (e.viewport.name == 'MainView' && e.changeInfo.positionChanged) {
|
|
|
+ //viewer.mainViewport.camera.position
|
|
|
+ viewer.mainViewport.view.radius = 0.1 //使pivot在面前一丢丢距离
|
|
|
+ viewer.setControls(viewer.orbitControls)
|
|
|
+ viewer.removeEventListener('camera_changed', camera_changed)
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
createCesiumMap()
|
|
|
|
|
|
let modelType, modelEditing
|
|
|
@@ -518,17 +542,10 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
MergeEditor.modelAdded(model)
|
|
|
if(!fixPose){
|
|
|
modelEditing = model;
|
|
|
-
|
|
|
- /* if(name == '3dTiles'){
|
|
|
- setTimeout(()=>{
|
|
|
- moveModel({pointer:{x:0,y:0}}) //3dTiles的移动会错乱,先默认放在当前视图中间吧
|
|
|
- confirmPos()
|
|
|
- },1)
|
|
|
- }else{ */
|
|
|
-
|
|
|
- viewer.addEventListener('global_mousemove', moveModel);
|
|
|
- viewer.addEventListener('global_click', confirmPos, 3);
|
|
|
- //}
|
|
|
+
|
|
|
+ viewer.addEventListener('global_mousemove', moveModel);
|
|
|
+ viewer.addEventListener('global_click', confirmPos, 3);
|
|
|
+
|
|
|
}else{
|
|
|
modelEditing = null
|
|
|
|
|
|
@@ -536,22 +553,9 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
let center = new THREE.Vector3().fromArray(model.runtime.getTileset().tileset.root.transform.slice(12,15))
|
|
|
|
|
|
let pos = Potree.math.fromCes(center)
|
|
|
- model.position.copy(pos)
|
|
|
-
|
|
|
-
|
|
|
- /*
|
|
|
- let pos2 = ecefToLngLat(center)
|
|
|
- //pos2 = viewer.transform.lonlatToLocal.forward(new THREE.Vector3(pos2.x,pos2.y,0))
|
|
|
- pos2 = proj4("EPSG:4326", "center", pos2),
|
|
|
- model.position.x = pos2.x, model.position.y = pos2.y
|
|
|
- //viewer.modules.MergeEditor.moveBoundCenterTo( model, new THREE.Vector3().fromArray(pos) )
|
|
|
- //因为bound中心在原点所以上面两句都可以 */
|
|
|
-
|
|
|
+ model.position.copy(pos)
|
|
|
model.hasLonLat = true
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -609,15 +613,16 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
|
|
|
viewer.scene.addPointCloud(e.pointcloud);
|
|
|
})
|
|
|
}else{
|
|
|
- Potree.loadDatasets(Potree.loadDatasetsCallback)
|
|
|
+ let o = pointcloudsList[++curPointIndex]
|
|
|
+ Potree.loadDatasets(Potree.loadDatasetsCallback, o.number || o )
|
|
|
viewer.addEventListener('allLoaded',()=>{
|
|
|
- let pointcloud = modelEditing = viewer.scene.pointclouds[0];
|
|
|
- pointcloud.matrixAutoUpdate = true
|
|
|
+ let pointcloud = modelEditing = viewer.scene.pointclouds[viewer.scene.pointclouds.length-1]
|
|
|
+ pointcloud.matrixAutoUpdate = true
|
|
|
pointcloud.initialPosition = pointcloud.position.clone()
|
|
|
pointcloud.pos1MatrixInvert = new THREE.Matrix4().setPosition(pointcloud.initialPosition).invert()
|
|
|
|
|
|
loadDone(pointcloud)
|
|
|
- })
|
|
|
+ },{once:true})
|
|
|
}
|
|
|
|
|
|
|