04-spring-arm-orbit-pivot.md 1.9 KB

Spring-arm orbit pivot

Type: grilling Status: resolved Labels: wayfinder:grilling Blocked by: None

进度:100%

已关闭。旋转中心 = 当前选中对象的地表点;未选中时回退到地面拾取点。取消选中不回退,平移才回退。

Question

右键轨道旋转的弹簧臂根部/旋转中心是什么?滚轮靠近或远离的也是同一个点。

候选:

  • 场景或城市原点
  • 屏幕中心对应的地面拾取点,并在右键按下时锁定
  • 当前选中监测点/设备;无选中时回退到地面拾取点
  • 固定看向沅陵兴趣点,平移只移动该目标

ADR 0008 已锁定:左键只平移,右键只绕中心旋转,滚轮只改弹簧臂长度。本票只决定中心是谁。

Answer

旋转中心采用「选中对象优先」模型:

  • 选中监测点或设备时,中心是该对象的地表高程点(对象高程 + 0)。
  • 未选中任何对象时,中心是地面拾取点:屏幕中心对应的椭球/地形交点。
  • 右键按下时锁定当时的中心,拖拽过程中不重新拾取。

中心变化时的相机行为:

  • 从无选中到选中监测点:镜头飞向该点位的定位视角(中心 + hpr 一起换,契约见 .scratch/cockpit-point-locate-and-device-link 票 03;取消选中不回退);选中非监测点对象或手动操作时仍只换中心、保持 heading 与 range。
  • 取消选中(关闭详情或点空白)时中心保留在刚才的对象上,不立即回退。
  • 只有在左键平移时才把中心回退/更新为地面拾取点。

调研已确认弹簧臂原语为 camera.lookAtTransform(中心东北天局部系, HeadingPitchRange),中心必须是局部地表点,所以「场景/城市原点」候选不成立。实现落在同一地图服务内,不使用 Tres OrbitControls,也不使用 vue-cesium 的鼠标绑定。