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

# Spring-arm orbit pivot

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

进度:100%

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

Question

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

候选:

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

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

Answer

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

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

中心变化时的相机行为:

  • 从无选中到选中某对象:镜头平滑飞向新中心,保持当前 heading 与 range,只换中心。
  • 取消选中(关闭详情或点空白)时中心保留在刚才的对象上,不立即回退。
  • 只有在左键平移时才把中心回退/更新为地面拾取点。

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