我的问题很烦人,因为我无法掌握如何解决它。
基本思想是,我创造了一个天空球体,成功地渲染和移动与相机的位置。天空球体的绘制是通过Z缓冲的打开完成的,然后再打开,天空的运动是通过摄像机位置值来转换其世界矩阵来完成的。
当我隐式移动相机天空穹顶真的很远的距离,假设1000000.0f单位在Deptz(Z)轴上,天球开始改变它的形状.更远的距离会变得更糟。
我通过打开线框来检查它是否与纹理渲染有关,我可以看到基本上球体的多边形正在发生变化。
有人有什么想法吗??谢谢。
发布于 2014-04-07 09:01:12
正如Trillian所建议的,你应该渲染一个相当小的天穹,它总是围绕着你的相机。这个过程很可能是这样的:
这样,天空将永远落后于其余的场景,即使它只是很小,你将永远不会有“走过”天空的问题。
发布于 2015-07-19 06:41:10
这是一个非数学家,非天文学家的答案。您的问题完全是并行问题。在我个人的绘画经验中,我经常遇到这个问题。想象一下艺术家,当视点在圆柱体外,在离底座一段距离的时候,绘制一幅柱面的线条。圆柱体的顶部看起来是一个椭圆。视点越靠近底座中心越近,圆柱形圆柱形顶部越圆。将视点移到圆柱体外,直到与圆柱体顶部完全相同的平面,然后圆柱体顶部出现一条直线。
所以你在天空中看到的是线框多边形不断变化的形状,因为你离穹顶更近,使得线框多边形中的(虚拟)内切圆以椭圆的形式出现,而你的多边形是不规则的而不是对称的。你在穹顶看到的不是一个错误,而是一个精确的渲染。祝贺你。你的程序成功了。唯一的困难是,我们的天空和你的天空穹顶之间的区别是,你把天空穹顶当作一个固体球体,从中心到每个物体都有固定的距离。一个真实的天空视图,一个真正的挑战就是根据每个物体在太空中的真实位置,将其编程成与“中心”不同的距离。试着用几十个物体--例如行星--与地球的距离已知,然后在太空中移动相机,即视点,注意星座形状、行星轨道等的变化。如果你让每个物体的距离足够大,那么你的相机就可以在不变形的情况下移动很多。如果你保持一个坚固的圆顶概念,但是相对于摄像机的运动距离,圆顶的直径是巨大的,这也是一样的。
这一评论是有益的,也是值得思考的。执行?这取决于像你这样的程序员和天文学家。祝你的项目好运。
https://stackoverflow.com/questions/22895756
复制相似问题