|
|
1
1
斯奈尔定律认为入射角和折射角的正弦之比等于边界两侧两种介质的折射率之比的倒数。
正如您所说的折射效果很好移动到球体中,您必须已经知道每个球体和场景的折射率。 我想说,创建一个折射率堆栈将是一个很好的方法来处理进入一堆嵌套的材料,因为你将不得不接触所有的折射率,你推到堆栈再次作为你搬出嵌套的球体集。 当你离开球体时,首先要确定折射率,你总是说sin(θ1)/sin(θ2)=[折射率2]/[折射率1]。因此,你需要你现在所处的材质的折射率和你将要移动的材质的折射率。 抱歉,如果我误解了你的问题,但我希望这有帮助! |
|
|
2
9
我有一个类似的光线跟踪器(用Python编写),遇到了同一个问题:为了正确地计算出物理,必须知道相交边界两边的折射率。这花了很长时间才优雅地解决,但最终我还是采用了这个解决方案/设计: 设计
场景会向列表中添加一个额外的对象:对象 场景边界 2) 对象——使几何对象(如球体)实现这些方法。 :
对于光学计算,物体也必须有折射率。 实例变量:
我们要解决的问题是:边界内外的折射率是多少?为此,我们遵循以下步骤: 1) 在整个场景中追踪光线:
请记住,这些是按距离射线原点的距离排序的。ipoints和ioobjects中的最后一项是光线与场景边界的交集。我们以后用这个! 2) n1只需找到包含的对象即可找到,例如:
4) 获取曲面法线以备以后使用:
您拥有计算正确的反射和折射所需的所有信息。即使光线在对象之外,这也足够通用,但偶尔我确实需要实现一些逻辑过滤,以使算法更健壮,但基本上就是这样! 反射和折射
折射(如上所述)需要n1和n2值:
最后,需要计算光线的反射系数 角
最后评论 这些都来自我的Python光学光线跟踪项目,该项目尚未发布(!),但您可以在此处查看一些详细信息: http://daniel.farrell.name/freebies/pvtrace . 我喜欢蟒蛇!这里列出了许多Python光线跟踪项目, http://groups.google.com/group/python-ray-tracing-community/web/list-of-python-statistical-ray-tracers . 最后,在你的例子中要小心分数折射率,方程会崩溃。 更新
http://github.com/danieljfarrell/pvtrace
|
|
|
Luecx · Java raytracer提高CPU使用率 8 年前 |
|
|
Luecx · 减少光线跟踪时的计算 8 年前 |
|
|
Aero · 光栅化或光线跟踪时,如何最好地使用场景图? 11 年前 |
|
|
Johnny Pauling · BSDF-需要一个示例[已关闭] 12 年前 |