|
@@ -43,7 +43,7 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
|
|
|
|
|
|
this.events = {
|
|
|
setSize:(e)=>{//如果出现横条状的异常,往往是viewportOffset出错 //地图不需要
|
|
|
- if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera */|| !e.viewport)return
|
|
|
+ if(!this.realUseDepth || !e.viewport)return
|
|
|
let viewport = e.viewport
|
|
|
let viewportOffset = viewport.offset || new THREE.Vector2()
|
|
|
|
|
@@ -53,12 +53,12 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
|
|
|
render:(e)=>{//before render 如果有大于两个viewport的话,不同viewport用不同的depthTex
|
|
|
this.updateDepthParams(e)
|
|
|
},
|
|
|
- cameraChange:(e)=>{
|
|
|
+ /* cameraChange:(e)=>{
|
|
|
if(e.changeInfo.projectionChanged){//resize时也会触发。虽然保守起见的话加上resize比较好//所以当时为何不用resize
|
|
|
//console.log('projectionChanged')
|
|
|
this.events.setSize(e)
|
|
|
- }
|
|
|
- }
|
|
|
+ }
|
|
|
+ } */
|
|
|
|
|
|
}
|
|
|
if(o.mapColorReplace){
|
|
@@ -96,19 +96,19 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
|
|
|
|
|
|
if(value){
|
|
|
viewer.addEventListener("render.begin", this.events.render)
|
|
|
- viewer.addEventListener('camera_changed', this.events.cameraChange)
|
|
|
- this.events.setSize( {viewport:viewer.mainViewport} )
|
|
|
+ //viewer.addEventListener('camera_changed', this.events.cameraChange)
|
|
|
+ viewer.addEventListener('resize', this.events.setSize)
|
|
|
this.updateDepthParams()
|
|
|
}else{
|
|
|
viewer.removeEventListener("render.begin", this.events.render)
|
|
|
- viewer.removeEventListener('camera_changed', this.events.cameraChange)
|
|
|
+ viewer.removeEventListener('resize', this.events.setSize)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
- setRealDepth(useDepth){//确实使用到depthTex
|
|
|
+ setRealDepth(useDepth, viewport){//确实使用到depthTex
|
|
|
if(this.realUseDepth != useDepth){
|
|
|
if(useDepth ){
|
|
|
this.defines.useDepth = ''
|
|
@@ -118,6 +118,8 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
|
|
|
this.realUseDepth = useDepth
|
|
|
if(this.autoDepthTest)this.depthWrite = this.depthTest = !useDepth //如果useDepth = false,使用原始的depthTest
|
|
|
this.needsUpdate = true
|
|
|
+ if(!viewport)viewport = viewer.mainViewport //暂时这么设置
|
|
|
+ useDepth && this.events.setSize({viewport})
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -179,7 +181,7 @@ export default class DepthBasicMaterial extends THREE.ShaderMaterial{
|
|
|
(Potree.settings.pointEnableRT || viewer.useEDL)
|
|
|
|
|
|
|
|
|
- this.setRealDepth(hasDepth)
|
|
|
+ this.setRealDepth(hasDepth, viewport)
|
|
|
|
|
|
if(hasDepth){
|
|
|
this.uniforms.depthTexture.value = viewer.getPRenderer().getRtEDL(viewport).depthTexture //其实只赋值一次就行
|