修正Three.js

时间:2016-08-01 16:58:04

标签: javascript three.js perspectivecamera

我在Three.js的球体内部有一个平面,我正在渲染一个着色器,以便我可以在球体上获得效果。我还使用lookAt将平面与相机对齐。我遇到的问题是,如果相机太靠近球体,飞机似乎会收缩到球体中。我已经确定问题来自于相机的视角,因为当相机太靠近球体时,它的光线不再与飞机的边缘对齐。

这是一张可视化的图片:Perspective clipping

这里还有一个JSFiddle,它演示了这个:https://jsfiddle.net/k8tc8ex6/1/

我知道为什么这个问题出现了,我想知道的是一些可能的解决方案,我想要实现的是平面的边缘总是看起来接触球体的边缘渲染之后。

提前非常感谢!

1 个答案:

答案 0 :(得分:0)

如果我是对的,你正在努力完美地#34;将球体的中间部分放入透视摄像机的截头体中。透视图无法实现您想要实现的目标。正如您所说(演示),飞机将超出屏幕的边界,或者平面和屏幕的边缘会有间隙。

如果你非常想要完美地"将球体的中间部分放入屏幕,你有两个选择:

1-)切换到正交相机 2-)坚持使用透视摄像机,使你的FOV非常接近0,给远处的飞机留出一个很大的距离,这样你的透视摄像机实际上就可以作为一个正交摄像机。