当前位置:   article > 正文

Three Js 疑难问题 之 防止选择的3D Object,视角一直变化的问题_threejs 视角突变

threejs 视角突变

在3D可视化视图中,选择3D对象,查看3D对象是很常见的功能。

同时,双击查3D对象,让其高亮也是很常见的功能。但是在这个过程,如果不断选择同一3D 对象,摄像机跟3D对象的视角一直发生变化。如此,这样的摄像机的效果就很差。

下面解决3D 视角在双击情况下,不去变化视角的方案:

  1. selectObject = objId => {
  2. this._clearSelection()
  3. this._setSelectMaterial(objId)
  4. if (this.systemObj) {
  5. this.systemObj.material = this.systemobjMaterial
  6. }
  7. this.objects.forEach(o => {
  8. if (o.name === objId.toString()) {
  9. this.systemObj = o
  10. }
  11. })
  12. this.systemobjMaterial = this.systemObj.material
  13. this.systemObj.material = this.selectMaterial
  14. // // 计算相机据计算所有元素的中心的距离
  15. // let offset =
  16. // this.systemObj.geometry.boundingSphere.radius /
  17. // Math.sin((Math.PI / 180.0) * this.camera.fov * 0.5)
  18. // 计算相机的位置
  19. // let vector = this.camera.position.clone()
  20. // let dir = vector.normalize()
  21. // dir.multiplyScalar(offset)
  22. // let newPos = new Vector3()
  23. // newPos.addVectors(this.systemObj.geometry.boundingSphere.center, dir)
  24. let vector = this.camera.position.clone()
  25. const boundingBox = this.systemObj.geometry.boundingBox
  26. const center = boundingBox.getCenter(new Vector3())
  27. const size = boundingBox.getSize(new Vector3)
  28. const radius = .5 * Math.sqrt(size.x * size.x + size.y * size.y + size.z * size.z)
  29. const oldcoi = this.systemObj.geometry.boundingSphere.center
  30. const eye = vector.clone().sub(oldcoi).normalize()
  31. const fitToViewDistance = radius / Math.tan(MathUtils.degToRad(.5 * this.camera.fov))
  32. eye.multiplyScalar(fitToViewDistance)
  33. const position = center.clone().add(eye)
  34. const target = center
  35. //设置相机的位置
  36. this.camera.position.set(position.x, position.y, position.z)
  37. this.camera.up = new Vector3(0, 1, 0)
  38. this.camera.lookAt(target)
  39. this.controls.target = target // 保证相机对准中心后,鼠标的控制点也对应着中心
  40. }

objId,是网格的ID。方便查找熟悉的。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/135153
推荐阅读
相关标签
  

闽ICP备14008679号