我在Three.js的球体内部有一个平面,我正在渲染一个着色器,以便我可以在球体上获得效果。我还使用lookAt
将平面与相机对齐。我遇到的问题是,如果相机太靠近球体,飞机似乎会收缩到球体中。我已经确定问题来自于相机的视角,因为当相机太靠近球体时,它的光线不再与飞机的边缘对齐。
这是一张可视化的图片:Perspective clipping
这里还有一个JSFiddle,它演示了这个:https://jsfiddle.net/k8tc8ex6/1/
我知道为什么这个问题出现了,我想知道的是一些可能的解决方案,我想要实现的是平面的边缘总是看起来接触球体的边缘在渲染之后。
提前非常感谢!
答案 0 :(得分:0)
如果我是对的,你正在努力完美地#34;将球体的中间部分放入透视摄像机的截头体中。透视图无法实现您想要实现的目标。正如您所说(演示),飞机将超出屏幕的边界,或者平面和屏幕的边缘会有间隙。
如果你非常想要完美地"将球体的中间部分放入屏幕,你有两个选择:
1-)切换到正交相机 2-)坚持使用透视摄像机,使你的FOV非常接近0,给远处的飞机留出一个很大的距离,这样你的透视摄像机实际上就可以作为一个正交摄像机。