AI 把场景里所有网格都设成可点。客户点沙发弹出「玻璃隔断」,转一下视角就误选,手机上点台灯点了五次都没反应。
网页 3D · 交互与性能
点选物体Raycasting
3D 里的点选靠射线拾取:从相机穿过指针射出一条线,最先碰到的物体被选中。透明遮挡要排除,拖动要和点击分开,小目标要放大点击范围,还要给键盘一条替代路径。
在小客厅里点三样东西,找出 AI 第一版的三个点选毛病
画面是真实的 three.js 射线拾取:每次点击,都从相机穿过你点的位置射出一条线,下面的「射线报告」会列出它依次碰到了什么。先点书架,再隔着玻璃点沙发和台灯,然后按住拖动转视角、切到手机模式点台灯;遇到毛病就去旁边清单勾修复,再点一次。
这条射线依次碰到
还没有点击
用键盘选中:
任务:用鼠标或手指选中(0/4)
- ○选中书架它不在玻璃后面,先点它试试
- ○选中沙发隔着玻璃隔断点
- ○选中台灯小桌上那盏,也在玻璃后面
- ○手机模式下选中台灯切到「手机 · 手指」再点
正在按需加载 three.js……
知识点:一条射线,三个容易出错的地方
刚才射线报告里的顺序,就是 3D 点选的全部规则。
- 射线拾取(Raycasting):从相机穿过鼠标或手指的位置射出一条线,按距离排出它碰到的物体。
- 最先碰到的赢:透明玻璃、玻璃罩、看不见的辅助物体只要挡在前面,就会抢走点击,要让它们不参与点选。
- 点击和拖动要分开:同一个按下—松开,移动超过几像素就算转视角,否则每次转完都会误选。
- 小物体在手机上很难点中:给它加一个看不见的、更大的碰撞体,而不是要求用户点得更准。
- 3D 画布对读屏和键盘是一块图片:另外提供按钮或列表来选择物体,是无障碍的替代路径。
什么时候用、怎么验收
只要 3D 场景里的东西「能点」,就要把这几条写进需求。
- 信号:需求里有「点击模型显示信息」「点选零件换颜色」「点家具看详情」,或 AI 报告里出现 Raycaster、intersectObjects。
- 需求里写清:哪些物体能点,哪些(玻璃、罩子、地板)不参与;拖动超过 5px 不算点击;小物体放大点击范围;另给一组按钮能选中。
- 验收一:隔着透明物体点后面的东西,选中的必须是后面那个。
- 验收二:拖动转视角后松手,不能出现选中高亮。
- 验收三:真机上用手指点最小的那个物体,三次里至少点中两次;只用 Tab 键也能选中每一样东西。
正反例:同一个「点家具看详情」需求
差别只在需求里有没有写清点选规则。
同一个客厅,点到的就是看到的那个;转视角不误选;手机上台灯一点就中;不用鼠标的人也能按按钮选。
快速自测
3D 珠宝展示页:戒指放在一个透明玻璃罩里,用户反馈「点戒指总是弹出『展示罩』的介绍」。最可能的原因是什么?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。