我正在使用Libgdx和Box2Dlights编写类似于Box2Dlights的游戏。我有一个平面世界,上面有一些广告牌上的东西。因此使用了透视相机。法向与屏的夹角为45°。其中一些物体向四面八方发射光(篝火)。因此,RayHandler类用于处理这些问题。设置组合矩阵的RayHandler的方法需要视口的宽度和高度。当视图的透视相机被传递给这个方法时,呈现的光一旦中心离开屏幕就消失了。只有当光线完全离开屏幕(而不仅仅是中心)时,才能实现光的消失,这样用户就不会看到消失的那一刻?谢谢。
更新:
方法rayHandler.setCombinedMatrix(camera);需要rayHandler.setCombinedMatrix(camera);我用的相机是perspective.这就是为什么我不可能使用rayHandler.setCombinedMatrix(camera)。留给我的唯一选择是使用setCombinedMatrix(Matrix4 combined, float x, float y, float viewPortWidth, float viewPortHeight)。我可以在这里传递PerspectiveCamera的组合矩阵及其位置和视口,但是它没有给出想要的结果,因为它仍然给出了一个不正确的视口(可能是因为它没有考虑到相机在3D空间中并且是倾斜的)。
发布于 2016-08-26 06:18:04
由于您没有提供任何代码,只是一些可能帮助您的背景:光线处理程序使用筛选来实现安全的性能:它不会呈现屏幕上的灯光。的输入计算屏幕边界。
rayHandler.setCombinedMatrix(camera);您必须在render()方法中在rayHandler.updateAndRender()之前调用它,从而保持最新的状态。
https://stackoverflow.com/questions/39156059
复制相似问题