|
@@ -77,18 +77,6 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
|
|
|
//lonlat = [113.595236803415,22.3665168584444]//[113.600356,22.364093]
|
|
|
Potree.setLonlat(lonlat[0], lonlat[1])
|
|
|
}
|
|
|
- if(Potree.settings.canWalkThroughModel){
|
|
|
- let lastPano
|
|
|
- viewer.images360.addEventListener('flyToPano',(e)=>{//漫游到另一个模型就要选中这个模型
|
|
|
- let model = e.toPano.pano.pointcloud
|
|
|
- if(lastPano?.pointcloud != model && model != MergeEditor.selected){
|
|
|
- MergeEditor.selectModel(model)
|
|
|
- model.result_.flyInPano(e.toPano.pano, {dontFly:true}) //切换模型显示,因为flyInPano有事件怕乱所以统一用这个函数
|
|
|
- }
|
|
|
- lastPano = e.toPano.pano
|
|
|
- })
|
|
|
-
|
|
|
- }
|
|
|
|
|
|
|
|
|
viewer.addEventListener('camera_changed', e => {
|
|
@@ -149,11 +137,67 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
+
|
|
|
+ //-------------------------------------
|
|
|
+ let changeMeshVisi = (object, show) => {
|
|
|
+ if(show == void 0) show = Potree.settings.displayMode == 'showPointCloud' || object == viewer.images360.currentPano.pointcloud && Potree.settings.modelSkybox || object.showInPano //showInPano: 装饰物,一直显示
|
|
|
+ Potree.Utils.updateVisible(object, 'showPanos', show)
|
|
|
+ }
|
|
|
+
|
|
|
+ if(Potree.settings.canWalkThroughModel){
|
|
|
+ let lastModel
|
|
|
+ viewer.images360.addEventListener('flyToPano',(e)=>{//开始漫游 漫游到另一个模型就要选中这个模型?
|
|
|
+ let model = e.toPano.pano.pointcloud
|
|
|
+ if(lastModel != model){
|
|
|
+ changeMeshVisi(model, true)
|
|
|
+ //MergeEditor.selectModel(model)
|
|
|
+ //model.result_.flyInPano(e.toPano.pano, {dontFly:true}) //切换模型显示,因为flyInPano有事件怕乱所以统一用这个函数
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+ viewer.images360.addEventListener('flyToPanoDone',(e)=>{
|
|
|
+ if(!e.makeIt)return
|
|
|
+ let model = viewer.images360.currentPano.pointcloud
|
|
|
+ if(lastModel != model){
|
|
|
+ lastModel?.isModel && changeMeshVisi(lastModel, false)
|
|
|
+ }
|
|
|
+ lastModel = model
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
viewer.images360.addEventListener('endChangeMode',(e)=>{
|
|
|
sceneBus.emit('modeChange', e.mode == 'showPanos' ? 'pano' : 'fuse')
|
|
|
- })
|
|
|
+
|
|
|
+ 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)
|
|
|
+ })
|
|
|
+ })
|
|
|
|
|
|
|
|
|
+ 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)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let requestInPano = false
|
|
|
+ //-------------------------------------
|
|
|
/* viewer.inputHandler.addEventListener('keydown', (e)=>{
|
|
|
if(e.event.key == "e" ){
|
|
|
MergeEditor.transformControls.mode = 'rotate'
|
|
@@ -351,15 +395,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- 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)
|
|
|
- }
|
|
|
- }
|
|
|
- let requestInPano = false
|
|
|
+
|
|
|
|
|
|
|
|
|
|
|
@@ -736,6 +772,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
|
|
|
let done = (model_) => {
|
|
|
model = model_
|
|
|
model.result_ = result
|
|
|
+ model.props = props
|
|
|
result.model = model
|
|
|
if (!props.isFirstLoad) {
|
|
|
model.visible = false//先不显示,防止卡顿
|
|
@@ -825,29 +862,7 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
|
|
|
flyInPano(pano, {dontFly, quaternion, duration}={}) {// 飞入全景图
|
|
|
requestInPano = model
|
|
|
pano = pano || viewer.images360.findNearestPano(null, model.panos)
|
|
|
- if (pano) {
|
|
|
- viewer.removeEventListener('camera_changed', camera_changed)
|
|
|
- Potree.settings.canWalkThroughModel || viewer.images360.panos.forEach(pano => {
|
|
|
- pano.setEnable(pano.pointcloud == model)
|
|
|
- })
|
|
|
- viewer.setControls(viewer.fpControls)
|
|
|
- //MergeEditor.transformControls.detach(model)
|
|
|
- Potree.Utils.updateVisible(MergeEditor.transformControls, 'showPanos', false)
|
|
|
- Potree.Utils.updateVisible(MergeEditor.boxHelper, 'showPanos', false)
|
|
|
-
|
|
|
- let changeVisi = (object) => {
|
|
|
- Potree.Utils.updateVisible(object, 'showPanos', object == model && Potree.settings.modelSkybox || object.showInPano)
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- let eventName = Potree.settings.displayMode != 'showPanos' ? 'endChangeMode' : 'flyToPanoDone'
|
|
|
- viewer.images360.addEventListener(eventName, (e) => {
|
|
|
- if (Potree.settings.displayMode == 'showPanos' && requestInPano == model) {
|
|
|
- //Potree.Utils.updateVisible(viewer.objs, 'showPanos', false)
|
|
|
- viewer.objs.children.forEach(changeVisi)
|
|
|
- }
|
|
|
- }, { once: true })
|
|
|
-
|
|
|
+ if (pano) {
|
|
|
dontFly || viewer.images360.flyToPano({ pano, canCancelLast: true, quaternion, duration})
|
|
|
Potree.settings.displayMode = 'showPanos'
|
|
|
|
|
@@ -856,24 +871,15 @@ export const enter = ({ dom, mapDom, isLocal, lonlat, scenes }) => {
|
|
|
},
|
|
|
flyOutPano() {// 飞出全景图(就是切换到正常融合视角)
|
|
|
requestInPano = false
|
|
|
- let panoPos = viewer.images360.position.clone()
|
|
|
- //Potree.Utils.updateVisible(viewer.objs, 'showPanos', true)
|
|
|
- let changeVisi = (object) => {
|
|
|
- Potree.Utils.updateVisible(object, 'showPanos', true)
|
|
|
- }
|
|
|
- viewer.objs.children.forEach(changeVisi)
|
|
|
- Potree.settings.canWalkThroughModel || viewer.images360.panos.forEach(pano => {
|
|
|
- pano.setEnable(true)
|
|
|
- })
|
|
|
- Potree.Utils.updateVisible(MergeEditor.transformControls, 'showPanos', true)
|
|
|
- setTimeout(() => {//在下一帧再变,因为3dtiles需要更新一下才会显示tiles
|
|
|
+ Potree.settings.displayMode = 'showPointCloud'
|
|
|
+ /* setTimeout(() => {//在下一帧再变,因为3dtiles需要更新一下才会显示tiles
|
|
|
if (!requestInPano) {
|
|
|
Potree.settings.displayMode = 'showPointCloud'
|
|
|
Potree.Utils.updateVisible(MergeEditor.boxHelper, 'showPanos', true)
|
|
|
}
|
|
|
- }, 50)
|
|
|
+ }, 50) */
|
|
|
|
|
|
- viewer.addEventListener('camera_changed', camera_changed)
|
|
|
+
|
|
|
},
|
|
|
|
|
|
|