|
@@ -3553,40 +3553,40 @@ export class Viewer extends ViewerBase{
|
|
target.copy(object.getCenter())
|
|
target.copy(object.getCenter())
|
|
|
|
|
|
|
|
|
|
-
|
|
|
|
- //试试改变位置(方向),直视测量线。能避免倾斜角度造成的非常不居中、以及看不到面的情况
|
|
|
|
- if(object.points.length>2/* && window.focusMeasureFaceToIt */){
|
|
|
|
-
|
|
|
|
- let facePlane = object.facePlane || new THREE.Plane().setFromCoplanarPoints(...object.points.slice(0,3) )
|
|
|
|
- let normal = facePlane.normal.clone()
|
|
|
|
- let angle = this.scene.view.direction.angleTo(normal)
|
|
|
|
- let minDiff = THREE.Math.degToRad(60)
|
|
|
|
- //console.log('angle',angle)
|
|
|
|
- if(angle>minDiff && angle<Math.PI-minDiff){//当几乎正对时就不执行
|
|
|
|
- if(angle<Math.PI/2){ //在背面
|
|
|
|
- normal.negate()
|
|
|
|
- }
|
|
|
|
- let dir = new THREE.Vector3().subVectors(camera.position, target).normalize()
|
|
|
|
- let newDir = new THREE.Vector3().addVectors(dir,normal)//两个角度的中间
|
|
|
|
- cameraPos.copy(target.clone().add(newDir))
|
|
|
|
- }
|
|
|
|
- }else if(object.points.length == 2){ //线段
|
|
|
|
- let lineDir = new THREE.Vector3().subVectors(object.points[0],object.points[1]).normalize()
|
|
|
|
- let angle = this.scene.view.direction.angleTo(lineDir)
|
|
|
|
- let maxDiff = Math.PI*0.25// 45度
|
|
|
|
- if(angle<maxDiff || angle>Math.PI-maxDiff){//当几乎正对时就不执行
|
|
|
|
- if(angle>Math.PI/2){ //令dir和lineDir成钝角
|
|
|
|
- lineDir.negate()
|
|
|
|
|
|
+ if(!o.dontChangeCamDir){
|
|
|
|
+ //试试改变位置(方向),直视测量线。能避免倾斜角度造成的非常不居中、以及看不到面的情况
|
|
|
|
+ if(object.points.length>2/* && window.focusMeasureFaceToIt */){
|
|
|
|
+
|
|
|
|
+ let facePlane = object.facePlane || new THREE.Plane().setFromCoplanarPoints(...object.points.slice(0,3) )
|
|
|
|
+ let normal = facePlane.normal.clone()
|
|
|
|
+ let angle = this.scene.view.direction.angleTo(normal)
|
|
|
|
+ let minDiff = THREE.Math.degToRad(60)
|
|
|
|
+ //console.log('angle',angle)
|
|
|
|
+ if(angle>minDiff && angle<Math.PI-minDiff){//当几乎正对时就不执行
|
|
|
|
+ if(angle<Math.PI/2){ //在背面
|
|
|
|
+ normal.negate()
|
|
|
|
+ }
|
|
|
|
+ let dir = new THREE.Vector3().subVectors(camera.position, target).normalize()
|
|
|
|
+ let newDir = new THREE.Vector3().addVectors(dir,normal)//两个角度的中间
|
|
|
|
+ cameraPos.copy(target.clone().add(newDir))
|
|
|
|
+ }
|
|
|
|
+ }else if(object.points.length == 2){ //线段
|
|
|
|
+ let lineDir = new THREE.Vector3().subVectors(object.points[0],object.points[1]).normalize()
|
|
|
|
+ let angle = this.scene.view.direction.angleTo(lineDir)
|
|
|
|
+ let maxDiff = Math.PI*0.25// 45度
|
|
|
|
+ if(angle<maxDiff || angle>Math.PI-maxDiff){//当几乎正对时就不执行
|
|
|
|
+ if(angle>Math.PI/2){ //令dir和lineDir成钝角
|
|
|
|
+ lineDir.negate()
|
|
|
|
+ }
|
|
|
|
+ let dir = new THREE.Vector3().subVectors(camera.position, target).normalize()
|
|
|
|
+ let mid = new THREE.Vector3().addVectors(lineDir, dir).normalize() //中间法向量(如果刚好dir和lineDir反向,那得到的为零向量,就不移动了,但一般不会酱紫吧)
|
|
|
|
+ let newDir = new THREE.Vector3().addVectors(dir, mid)
|
|
|
|
+ cameraPos.copy(target.clone().add(newDir))
|
|
}
|
|
}
|
|
- let dir = new THREE.Vector3().subVectors(camera.position, target).normalize()
|
|
|
|
- let mid = new THREE.Vector3().addVectors(lineDir, dir).normalize() //中间法向量(如果刚好dir和lineDir反向,那得到的为零向量,就不移动了,但一般不会酱紫吧)
|
|
|
|
- let newDir = new THREE.Vector3().addVectors(dir, mid)
|
|
|
|
- cameraPos.copy(target.clone().add(newDir))
|
|
|
|
|
|
+ }else{
|
|
|
|
+ console.error('measure 没有facePlane points点数还不为2?')
|
|
}
|
|
}
|
|
- }else{
|
|
|
|
- console.error('measure 没有facePlane points点数还不为2?')
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
|
|
+ }
|
|
|
|
|
|
position = getPosWithFullBound(object.points, null, target, cameraPos )
|
|
position = getPosWithFullBound(object.points, null, target, cameraPos )
|
|
|
|
|
|
@@ -3821,7 +3821,8 @@ export class Viewer extends ViewerBase{
|
|
}, duration)
|
|
}, duration)
|
|
|
|
|
|
}else if(camera.type == "OrthographicCamera"){
|
|
}else if(camera.type == "OrthographicCamera"){
|
|
- viewer.scene.view.moveOrthoCamera(this.mainViewport, { endPosition:position, target ,
|
|
|
|
|
|
+ viewer.scene.view.moveOrthoCamera(this.mainViewport, { endPosition:position,
|
|
|
|
+ target: o.dontChangeCamDir?null:target,
|
|
boundSize,
|
|
boundSize,
|
|
endYaw:o.endYaw, endPitch:o.endPitch,
|
|
endYaw:o.endYaw, endPitch:o.endPitch,
|
|
callback:()=>{
|
|
callback:()=>{
|