作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在实现一个光线追踪器,它目前有一个正交投影。我想把它做成透视投影。我知道在正交中你从每个像素发出一条射线并检查交叉点。在透视投影中,射线的起始位置是恒定的,而不是从每个像素点开始。
所以我假设在透视投影中,光线的起始位置应该是相机的位置。问题是我认为我从来没有明确地放置过相机,所以我不知道将光线的起始位置更改为什么。
如何确定相机的放置位置?我尝试了 (0,0,0),但这只会给我留下空白图像,所以我认为它不正确。
最佳答案
在正交投影中,穿过每个像素的光线将具有相同的方向,就好像光线来自屏幕后面放置在 无限 距离处的相机。
对于透视投影,相机必须放置在屏幕后面有限 的距离处。每条光线都应该从相机发出并穿过屏幕的每个像素。屏幕和摄像头之间的距离取决于视角。
关于projection - 光线追踪相机 - 正交到透视投影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52457986/
我正在尝试使用 Sfml 编写 2D 游戏。对于那个游戏,我需要一个 Lightengine 和一些代码,这些代码可以为我提供玩家可见的世界区域。由于这两个问题非常吻合(实际上是相同的),我想同时解决
我是一名优秀的程序员,十分优秀!