|
@@ -647,26 +647,25 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
|
|
|
|
return deferred.promise()
|
|
return deferred.promise()
|
|
},
|
|
},
|
|
- getPose(modelId) {//获取当前点位和朝向
|
|
|
|
|
|
+ getPose({modelId,isFlyToTag}={}) {//获取当前点位和朝向
|
|
|
|
|
|
const camera = viewer.scene.getActiveCamera()
|
|
const camera = viewer.scene.getActiveCamera()
|
|
const target = viewer.scene.view.getPivot().clone()
|
|
const target = viewer.scene.view.getPivot().clone()
|
|
const position = viewer.scene.view.position.clone()
|
|
const position = viewer.scene.view.position.clone()
|
|
const pose = { position, target, displayMode:Potree.settings.displayMode }
|
|
const pose = { position, target, displayMode:Potree.settings.displayMode }
|
|
|
|
+
|
|
|
|
+
|
|
if(Potree.settings.displayMode == 'showPanos'){
|
|
if(Potree.settings.displayMode == 'showPanos'){
|
|
let model = viewer.images360.currentPano.pointcloud
|
|
let model = viewer.images360.currentPano.pointcloud
|
|
- pose.panoId = viewer.images360.currentPano.originID
|
|
|
|
- pose.model = model.result_
|
|
|
|
-
|
|
|
|
- pose.posInModel = Potree.Utils.datasetPosTransform({ toDataset: true, position: camera.position.clone(), object:model })
|
|
|
|
- pose.rotInModel = Potree.Utils.datasetRotTransform({ toDataset: true, quaternion: camera.quaternion.clone(), getQuaternion: true, pointcloud:model }).toArray() //拿第一个数据集
|
|
|
|
-
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- if(modelId){
|
|
|
|
- pose.modelId2 = modelId
|
|
|
|
- pose.posInModel2 = Potree.Utils.datasetPosTransform({ toDataset: true, position: camera.position.clone(), datasetId: modelId })
|
|
|
|
- pose.rotInModel2 = Potree.Utils.datasetRotTransform({ toDataset: true, quaternion: camera.quaternion.clone(), getQuaternion: true, datasetId: modelId }).toArray() //拿第一个数据集
|
|
|
|
|
|
+ if(!isFlyToTag || model.dataset_id == modelId){ //保存编辑热点时的视角,如果在全景模式,只有点位在所加模型上时才保存
|
|
|
|
+ pose.panoId = viewer.images360.currentPano.originID
|
|
|
|
+ //pose.model = model.result_ //无法被json化,好像没用到所以注释
|
|
|
|
+ pose.posInModel = Potree.Utils.datasetPosTransform({ toDataset: true, position: camera.position.clone(), object:model })
|
|
|
|
+ pose.rotInModel = Potree.Utils.datasetRotTransform({ toDataset: true, quaternion: camera.quaternion.clone(), getQuaternion: true, pointcloud:model }).toArray() //拿第一个数据集
|
|
|
|
+ }
|
|
|
|
+ }else if(isFlyToTag){
|
|
|
|
+ position.copy(Potree.Utils.datasetPosTransform({ toDataset: true, position: camera.position.clone(), datasetId: modelId, }))
|
|
|
|
+ target.copy(Potree.Utils.datasetPosTransform({ toDataset: true, position: target.clone(), datasetId: modelId, }))
|
|
}
|
|
}
|
|
|
|
|
|
//console.log('getPose',position, target)
|
|
//console.log('getPose',position, target)
|
|
@@ -679,41 +678,38 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
//飞到某个点
|
|
//飞到某个点
|
|
|
|
|
|
let deferred = $.Deferred()
|
|
let deferred = $.Deferred()
|
|
-
|
|
|
|
- if (o.modelId2 != void 0) {//飞到热点
|
|
|
|
- ['position', 'target'].forEach(e => {
|
|
|
|
- if (o[e]) {
|
|
|
|
- o[e] = Potree.Utils.datasetPosTransform({ fromDataset: true, datasetId: o.modelId2, position: o[e] })
|
|
|
|
|
|
+ let fly = ()=>{
|
|
|
|
+
|
|
|
|
+ if(o.panoId != void 0){
|
|
|
|
+ let model = o.model.model
|
|
|
|
+ let pano = model.panos.find(a=>a.originID == o.panoId)
|
|
|
|
+ if(pano){
|
|
|
|
+ o.rotInModel = new THREE.Quaternion().fromArray(o.rotInModel)
|
|
|
|
+ let quaternion = Potree.Utils.datasetRotTransform({ fromDataset: true, quaternion: o.rotInModel, getQuaternion: true, object:model})
|
|
|
|
+
|
|
|
|
+ o.model.flyInPano(pano, {quaternion, duration:0, callback(){
|
|
|
|
+ o.callback && o.callback()
|
|
|
|
+ deferred.resolve(true)
|
|
|
|
+ }})
|
|
|
|
+ return deferred.promise()
|
|
|
|
+
|
|
|
|
+ }else{
|
|
|
|
+ console.warn('没有找到漫游点',o)
|
|
|
|
+ }
|
|
|
|
+ }/* else if(requestInPano){
|
|
|
|
+ requestInPano.result_.flyOutPano()
|
|
|
|
+ } */else{
|
|
|
|
+ if (o.modelId != void 0) {
|
|
|
|
+ ['position', 'target'].forEach(e => {
|
|
|
|
+ if (o[e]) {
|
|
|
|
+ o[e] = Potree.Utils.datasetPosTransform({ fromDataset: true, datasetId: o.modelId, position: o[e] })
|
|
|
|
+ }
|
|
|
|
+ })
|
|
}
|
|
}
|
|
- })
|
|
|
|
- }else if(o.panoId != void 0){
|
|
|
|
- let model = o.model.model
|
|
|
|
- let pano = model.panos.find(a=>a.originID == o.panoId)
|
|
|
|
- if(pano){
|
|
|
|
- o.rotInModel = new THREE.Quaternion().fromArray(o.rotInModel)
|
|
|
|
- let quaternion = Potree.Utils.datasetRotTransform({ fromDataset: true, quaternion: o.rotInModel, getQuaternion: true, object:model})
|
|
|
|
-
|
|
|
|
- o.model.flyInPano(pano, {quaternion, duration:0, callback(){
|
|
|
|
- o.callback && o.callback()
|
|
|
|
- deferred.resolve(true)
|
|
|
|
- }})
|
|
|
|
- return deferred.promise()
|
|
|
|
-
|
|
|
|
- }else{
|
|
|
|
- console.warn('没有找到漫游点',o)
|
|
|
|
- }
|
|
|
|
- }/* else if(requestInPano){
|
|
|
|
- requestInPano.result_.flyOutPano()
|
|
|
|
- } */else{
|
|
|
|
- if (o.modelId != void 0) {
|
|
|
|
- ['position', 'target'].forEach(e => {
|
|
|
|
- if (o[e]) {
|
|
|
|
- o[e] = Potree.Utils.datasetPosTransform({ fromDataset: true, datasetId: o.modelId, position: o[e] })
|
|
|
|
- }
|
|
|
|
- })
|
|
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
|
|
if (o.distance || o.maxDis) {
|
|
if (o.distance || o.maxDis) {
|
|
//o.isFlyToTag = true
|
|
//o.isFlyToTag = true
|
|
@@ -724,6 +720,9 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
if(r){
|
|
if(r){
|
|
requestShowPano = true
|
|
requestShowPano = true
|
|
}else{
|
|
}else{
|
|
|
|
+ if(o.panoId != void 0 || o.modelId != void 0){
|
|
|
|
+ return fly() //使用保存的视角
|
|
|
|
+ }
|
|
Potree.settings.displayMode = 'showPointCloud'
|
|
Potree.settings.displayMode = 'showPointCloud'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -736,6 +735,8 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes, laserRoot, laserOS
|
|
})
|
|
})
|
|
return rusult.promise
|
|
return rusult.promise
|
|
|
|
|
|
|
|
+ }else{
|
|
|
|
+ fly()
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|