返回知识库

网页 3D · 交互与性能

视角控制Orbit Controls

OrbitControls 负责拖拽旋转、滚轮缩放和平移。上线前要限制俯仰角和缩放距离、关掉平移、开启阻尼,并给用户一个「重置视角」。

给运动鞋查看器挑穿帮,再把限制交给 AI

这是 AI 第一版:真实的 OrbitControls,什么都没限制。先当一回挑剔的用户,把鞋子往上翻、一直放大、一直缩小、右键拖着走,视口里会冒出穿帮标签;然后在旁边清单逐项勾选,回去重做同样的操作,看它被拦住。

  1. 1 当挑剔的用户,找出 AI 第一版的穿帮(0/4)
  2. 2 在修改清单上逐项勾选(0/4)
  3. 3 重做刚才的操作,确认被拦住

正在按需加载 3D 引擎(three.js)…

鼠标:左键拖 = 旋转,滚轮 = 缩放,右键拖 = 平移。手机:单指转,双指捏合缩放、双指拖平移。按钮和拖拽受同一套限制。

已发现的穿帮(0/4)

  • ○ 未发现转到地板下面连点「压低」,或按住鼠标往上拖
  • ○ 未发现镜头穿进鞋里一直「放大」或滚轮往前
  • ○ 未发现缩成一个点一直「缩小」或滚轮往后
  • ○ 未发现把鞋拖出画面右键拖 / 双指拖,或点「平移」
给 AI 的修改清单

⟲ 重置视角按钮已放在视口下方:用户转迷路时的恢复路径,试按一次

正在按需加载 three.js 和 OrbitControls……

知识点:三种操作,各配一条限制

刚才视口里的每一种穿帮,都对应一条要写进需求的限制。

  • OrbitControls 给了三种操作:拖拽旋转、滚轮 / 双指缩放、右键 / 双指平移。AI 默认全开、不设边界。
  • 俯仰角(maxPolarAngle)决定最低能转到哪:产品放在地面上就限制到地面以上,否则会看到地板背面和模型底部。
  • 缩放距离(minDistance / maxDistance)要按模型大小定:最近不能穿进模型,最远不能让模型缩成一个点。
  • 产品查看器通常直接关平移;地图、户型这类确实要平移的,也要限制范围,不能拖到找不回来。
  • 阻尼让松手后缓缓停下,手感更像实物;「重置视角」是用户转迷路时的恢复路径,两者都应写进需求。

什么时候用、怎么验收

只要页面允许用户「拖着看」3D 物体,就要提限制,而不是只说「可以转」。

  • 信号:AI 报告里出现 OrbitControls、controls、camera.position,或者需求是 360° 看产品、看户型、看模型。
  • 需求里写清数字:俯仰角限制在地面以上,缩放距离 2–8(按模型尺寸换算),关闭平移,开启阻尼,加「重置视角」。
  • 验收一:用鼠标往上拖到底、滚轮推到底、拉到底、右键拖,四种操作都不出穿帮。
  • 验收二:手机真机上单指旋转、双指缩放;页面上下滑动时不会被 3D 区域「吃掉」滚动。
  • 不适用:只需要自动展示一圈的场景,直接让模型自转、不给用户控制,反而更省事。

正反例:同一个 3D 产品查看器

需求只差一段限制说明,客户看到的东西完全不同。

反例「让用户可以转着看模型」

AI 加了 OrbitControls 就交差。客户一拖转到地板下看到穿帮,放大穿进鞋里,右键一拖鞋子没了,只能刷新页面。

正例「开启阻尼,俯仰角限制在地面以上,缩放距离 2–8,关闭平移,加重置视角」

同样的拖拽,镜头贴着地面就停、放大到一定距离就停、拖不丢;转迷路了点一下就回到初始角度。

快速自测

客户反馈:「在手机上看你们的 3D 椅子,手指一滑椅子就跑到屏幕外面去了,找不回来。」最该让 AI 改什么?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。