AI 凭感觉设了相机,没写 resize 处理:桌子在 AI 的屏幕上刚好,你一拉宽窗口,桌上的球变成椭圆,远处的背景楼也被 far 裁掉了。
网页 3D · 搭一个场景
场景、相机与渲染器Scene / Camera / Renderer
画面 = 场景(放东西)+ 相机(从哪看、看多宽、看多远)+ 渲染器(画到 canvas)。fov 决定广角还是长焦,near / far 之外的东西会被裁掉,窗口变了要同步 aspect。
把 AI 给的相机调到「三样都完整入镜」
AI 给的相机是 fov 30、near 3.6、far 18:植物被切了一块,楼整个不见了。拖动下面的滑杆,主视图和右侧(窄屏在下方)俯视图里的黄色视锥会一起变;每样东西旁边和清单里会实时告诉你它是完整入镜、被 near 切掉、被 far 裁掉,还是出了画。最后打开「忘了更新 aspect」,看桌上的球怎样被拉成椭圆。
- 场景 Scene植物、桌子、楼 · 3 件
- 相机 PerspectiveCamerafov 30° · near 3.6 · far 18
- 渲染器 WebGLRenderer—
- 植物近处 · 约 3.5 米—
- 桌子中间 · 约 6 米—
- 楼远处 · 约 26 米—
- 画面比例球应该是圆的—
正在按需加载 3D 引擎……
知识点:相机决定画面里有什么
刚才每拖一次滑杆,视锥都换了形状,下面是它背后的规则。
- 三件套各管一件事:场景装着所有物体,相机决定从哪看、看多宽、看多远,渲染器把相机看到的画到 canvas 上。东西在场景里,不代表在画面里。
- 视角 fov 越大越广角:同一个位置能看到更多,物体显得更小、边缘更容易变形;越小越像长焦,容易让主体出画。
- near / far 是相机能看到的最近和最远距离:比 near 近、比 far 远的部分会被直接裁掉,常见症状是「模型一半被切掉」「远处的东西消失」。
- aspect 是画布的宽高比:窗口尺寸变化时要同步更新 aspect 和渲染尺寸,否则画面会被拉伸或压扁。
什么时候用、怎么验收
只要 AI 报告里出现 PerspectiveCamera、fov、near、far,或者你发现模型被切、画面变形,就回到这三件套检查。
- 信号:模型边缘缺了一块(多半是 near 太大或相机离太近)、远景突然消失(far 太小)、拉宽窗口后东西变扁变胖(没同步 aspect)。
- 需求里写清数字:「透视相机,fov 45°,near 0.1,far 100,主体完整入镜」,而不是「把相机摆好看一点」。
- near 不要随手设成 0 或极小值、far 也别无限大:两者差距太大,远处的面会闪烁打架。够用就好。
- 验收一:主体在桌面宽屏和手机竖屏都完整入镜,没有被切掉的边。
- 验收二:拖动浏览器窗口变宽变窄,圆的东西始终是圆的,画面不拉伸。
正反例:同一个「把桌子摆进镜头」
需求只差一句话,拉宽窗口后的画面完全不同。
数字可以对照验收;AI 在窗口尺寸变化时更新相机的 aspect 和渲染尺寸,拉宽拉窄球都是圆的,远景也在。
快速自测
你用 3D 展示一只手表,镜头拉近到表盘时,表盘前面一部分突然「被削掉」,能看到表的内部。最可能是哪一项?
继续查证
术语的技术定义和行为以这些一手或权威资料为准。
下一步学
和本知识点经常一起出现的概念。