1. fov - 视野角度(Field of View)
类型:角度值(度数,非弧度)
作用:控制垂直方向的视野范围,类似「镜头焦距」。
小值(如 20°):长焦镜头,视野窄(物体看起来大,适合特写)。
大值(如 90°):广角镜头,视野宽(物体看起来小,适合全景)。
常见值:70° 是默认推荐值,接近人眼舒适视角。
new PerspectiveCamera(20, ...); // 长焦,适合观察小物体细节
new PerspectiveCamera(120, ...); // 超广角,适合大场景或夸张透视
2. aspect - 宽高比
计算方式:画布宽度 / 画布高度(如 sizes.width / sizes.height)。
作用:避免画面拉伸或压缩,确保渲染比例正确。
错误案例:若画布宽高比为 16:9,但设置 aspect=1,正方体将显示为长方体。
动态更新:窗口 Resize 时需重新计算宽高比并更新相机:
window.addEventListener('resize', () => {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix(); // 必须调用!
});
3. near - 近平面
作用:相机前方最近可见距离,比这更近的物体会被裁剪(不可见)。
常见问题:若物体贴脸(如 position.y < near),会突然消失。
推荐值:0.1 或更小(根据场景尺寸调整)。
小场景(如胶囊体半径 1):near=0.1 足够。
大场景(如建筑):需适当增大(如 near=1),避免精度丢失。
4. far - 远平面
作用:相机前方最远可见距离,比这更远的物体会被裁剪。
性能影响:远平面越大,GPU 计算量越高(需渲染更远的物体)。
推荐值:刚好覆盖场景最大尺寸(如胶囊体总高度 5,设为 10 即可)。
极端错误:若 far < 物体距离,物体直接消失(比如胶囊体在 y=5,far=4 时不可见)。
5.常见错误与解决
(1)物体消失:
检查 near 和 far 是否覆盖物体的位置范围。
胶囊体底部在 y=-R,若相机 position.y 过低(如 y=0),可能导致 near > 距离。
(2)画面拉伸:
确保 aspect 始终等于画布宽高比,且调用 updateProjectionMatrix()。
(3)透视失真:
fov 过大(如 120°)会导致近大远小过于夸张,适合特效而非写实场景。
6.总结:(根据实际场景修改)
参数 | 含义 | 示例值(胶囊体场景) | 作用 |
---|---|---|---|
fov | 垂直视野角度 | 70° | 控制画面「宽窄」,影响透视感 |
aspect | 宽高比 | width/height | 防止画面变形 |
near | 近裁剪平面(世界单位) | 0.1 | 避免过近物体被裁剪(胶囊底部至少需 near < 相机到物体的最小距离 ) |
far | 远裁剪平面(世界单位) | 100 | 覆盖场景最大范围,平衡性能与可见性 |