- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不会针对这个问题发布任何代码,因为它需要太多的上下文,但我将从概念上解释我正在做什么。
我正在构建一个使用仿射变换的简单光线追踪器。我的意思是,我将来自相机坐标的所有光线与通用形状相交。这些形状都具有关联的仿射变换,并且光线在与场景对象相交之前首先乘以这些变换的倒数。
例如,假设我想要一个半径为 3 的球体,位于 (10,10,10)。我创建了球体并给它一个表示此变换的变换矩阵。
我在相机坐标中创建一条射线。我将射线乘以球体变换矩阵的逆矩阵,并将其与通用球体相交(在 (0,0,0) 处 r=1)。我在交点处获取沿着这条通用射线的距离,并使用它找到通用法线和沿着原始射线的点,并将它们保存到一个变换对象中(以及距离(t)和实际的转换)。
当需要计算出该交点的颜色时,我采用变换的反转置并将其乘以通用法线来找到法线。如果我使用逆变换射线交点的 t 值,则交点就是沿原始非变换射线的点。
问题是,当我这样做时,转换会产生奇怪的效果。主要效果是变换似乎将灯光一起从场景中拖出。如果我构建一堆图像并在每一帧中对球体应用稍大的旋转,则似乎会拖动场景中的灯光。这是一个例子
老实说,我不知道我在这里做错了什么,但我正在抓狂。我想不出发生这种情况的任何充分理由。任何帮助将不胜感激。
最佳答案
免责声明:我不是光线追踪方面的专家,而且我也误解了问题描述中的转置转置。
当您计算交点的法线时,您处于“变换后的坐标空间”中,特别是,对吧?所以法线也将位于该坐标空间中。稍后您只需将该向量转置到真实的交点,但法线仍会旋转。
假设您有一个通用球体,其在正 x 上为红色,在负 x 上为蓝色。让我们考虑相机位于 20,0,0 处,而 1 球体仅绕 y 轴 180 度(无转置)。那么光线 (1,0,0) 将是变换后的光线 -1,0,0 并将在 (-1,0,0) 和 t = 9 处从负 x 击中球体。法线应为 (-1 ,0,0)。当您将该法线转置为实际交点时,法线仍为 (-1,0,0)。因此,通过遵循该法线,您应该获得正确的颜色,而且还可以获得来自球体“背面”的光线。
关于graphics - 帮我用光线追踪器解决这个错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5647265/
嗨,我是第一次玩 Pig,我很好奇如何处理将一个字段拆分成多个其他字段。 我有一个包,A,如下图: grunt> Dump A; (text, text, Mon Mar 07 12:00:00 CD
如何添加架构中未定义的固定字段(例如日期或月份)?我运行了以下 pig 脚本以将固定日期添加到我的结果表中,并收到以下错误消息:Invalid field projection。方案中不存在投影字段
我是一名优秀的程序员,十分优秀!