首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DirectX 11,天穹顶边移动边形状

DirectX 11,天穹顶边移动边形状
EN

Stack Overflow用户
提问于 2014-04-06 15:05:12
回答 2查看 541关注 0票数 0

我的问题很烦人,因为我无法掌握如何解决它。

基本思想是,我创造了一个天空球体,成功地渲染和移动与相机的位置。天空球体的绘制是通过Z缓冲的打开完成的,然后再打开,天空的运动是通过摄像机位置值来转换其世界矩阵来完成的。

当我隐式移动相机天空穹顶真的很远的距离,假设1000000.0f单位在Deptz(Z)轴上,天球开始改变它的形状.更远的距离会变得更糟。

我通过打开线框来检查它是否与纹理渲染有关,我可以看到基本上球体的多边形正在发生变化。

有人有什么想法吗??谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-07 09:01:12

正如Trillian所建议的,你应该渲染一个相当小的天穹,它总是围绕着你的相机。这个过程很可能是这样的:

  1. 清除您的颜色和深度缓冲区
  2. 禁用深度缓冲区写入
  3. 用摄像机的旋转而不是平移作为视图矩阵来渲染天空穹顶
  4. 重新启用深度缓冲区写入
  5. 把剩下的场景渲染出来

这样,天空将永远落后于其余的场景,即使它只是很小,你将永远不会有“走过”天空的问题。

票数 0
EN

Stack Overflow用户

发布于 2015-07-19 06:41:10

这是一个非数学家,非天文学家的答案。您的问题完全是并行问题。在我个人的绘画经验中,我经常遇到这个问题。想象一下艺术家,当视点在圆柱体外,在离底座一段距离的时候,绘制一幅柱面的线条。圆柱体的顶部看起来是一个椭圆。视点越靠近底座中心越近,圆柱形圆柱形顶部越圆。将视点移到圆柱体外,直到与圆柱体顶部完全相同的平面,然后圆柱体顶部出现一条直线。

所以你在天空中看到的是线框多边形不断变化的形状,因为你离穹顶更近,使得线框多边形中的(虚拟)内切圆以椭圆的形式出现,而你的多边形是不规则的而不是对称的。你在穹顶看到的不是一个错误,而是一个精确的渲染。祝贺你。你的程序成功了。唯一的困难是,我们的天空和你的天空穹顶之间的区别是,你把天空穹顶当作一个固体球体,从中心到每个物体都有固定的距离。一个真实的天空视图,一个真正的挑战就是根据每个物体在太空中的真实位置,将其编程成与“中心”不同的距离。试着用几十个物体--例如行星--与地球的距离已知,然后在太空中移动相机,即视点,注意星座形状、行星轨道等的变化。如果你让每个物体的距离足够大,那么你的相机就可以在不变形的情况下移动很多。如果你保持一个坚固的圆顶概念,但是相对于摄像机的运动距离,圆顶的直径是巨大的,这也是一样的。

这一评论是有益的,也是值得思考的。执行?这取决于像你这样的程序员和天文学家。祝你的项目好运。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22895756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档