光线追踪教程(第 A 部分):棱镜与茶壶游乐场
在本教程中,你将使用 OghmaNano 的 Optical Workbench 来体验一个色彩丰富的 光线追踪场景,其中包含棱镜、光阑、探测器以及(在后续部分中)一个 CAD 茶壶。 目标不是构建一个真实的相机,而是为你提供一个用于探索主要功能的游乐场: 启动仿真、旋转对象、查看光束分布,并检查探测器“看到”的内容。
我们从一个预构建的 棱镜演示 开始。该场景已包含:
- 光路中的两个红色棱镜。
- 一个绿色光线源,将光子发射到系统中。
- 一个光阑,会阻挡远离中心孔的光线。
- 一个紫色探测器,会收集穿过它的所有光线。
当你运行仿真时,你将看到反射、折射与色散的效果,并且能够检查探测器效率以及 探测器所观察到内容的渲染图像。
步骤 1:创建新的光线追踪仿真
从 Windows 开始菜单启动 OghmaNano。在启动窗口中选择 New simulation。这会打开器件库窗口,如 ?? 所示。 双击 Ray tracing 文件夹(已高亮)以打开光线追踪示例列表, 如 ?? 所示。
双击 Prism demo,然后选择一个你具有写入权限的文件夹并保存该仿真。
为获得最佳性能,请保存到本地磁盘(例如 C:\),而不是
网络或云盘。
步骤 2:探索默认场景
加载示例后,将打开主 Optical Workbench 窗口,如 ?? 所示。 场景包含你在本教程中将反复使用的主要光学组件:
- 绿色箭头(左侧):一个光学光源,发射不同波长的光线。
- 两个红色棱镜:体光学元件,对光线进行折射与反射。
- 红色光阑板:带有中心开孔的板,允许部分光线通过,同时 阻挡其他光线。
- 紫色网格(上方):一个探测器,用于收集光线,类似相机中的 CCD。
使用鼠标在场景中观察。鼠标左键旋转视图, 鼠标右键平移场景。你可以使用鼠标滚轮进行缩放。 在窗口左侧你会看到标有 XY、YZ 和 XZ 的按钮。它们将相机预设为沿各平面正对观察, 这在重新定位对象或检查对准时很有用。
步骤 3:运行仿真
点击 Run simulation 按钮(蓝色播放图标)或按 F9。 OghmaNano 将光线从光源追踪,经由棱镜与光阑到达探测器。 当运行结束后,场景会类似于 ??。
彩色条带显示不同波长的光线如何在棱镜中沿不同路径传播。 这是对以下现象的简单演示:
- 斯涅尔定律(界面处的折射),
- 反射(边界处的反射),以及
- 色散——不同波长具有不同折射率, 从而形成可见的彩虹。(背景可参见 Wikipedia 的光学色散条目。)
斯涅尔定律与反射/透射
斯涅尔定律给出了平面界面处入射角与折射角之间的关系:
\( n_1 \sin\theta_1 = n_2 \sin\theta_2 \)
其中 \(n_1\) 与 \(n_2\) 分别是介质 1 与介质 2 的折射率, \(\theta_1\) 与 \(\theta_2\) 为相对于表面法线测量的角度。
在正入射时,界面处功率反射率 \(R\) 的一个简单表达式为
\( R = \left(\dfrac{n_1 - n_2}{n_1 + n_2}\right)^2 , \qquad T = 1 - R \)
其中 \(T\) 是透射的功率分数。OghmaNano 在追踪每条光线穿过棱镜与光阑时使用这些思想 (并结合完整的菲涅尔方程)。
步骤 4:检查探测器输出
要查看探测器记录的内容,请点击窗口顶部的 Output 选项卡。 你将看到光线追踪器写出的文件列表,类似于 ??。 目前最重要的文件是 detector0 文件夹,它存储了 紫色探测器的输出。
detector0 图标包含与主探测器相关的所有
结果:效率曲线、图像与 CSV 数据。
detector0 内,你会找到主探测器的输出文件,包括
detector_efficiency0.csv(效率随波长变化)以及 image
(探测器视场的渲染图)。
双击 detector0。然后双击
detector_efficiency0.csv,绘制探测器收集光的效率随波长变化的曲线,如
?? 所示。
RAY_image.csv 文件显示一幅渲染图,表示如果你的眼睛位于探测器平面会看到什么。
注意光束中心的“孔洞”,这是因为光阑阻挡了光线。
接下来,双击 RAY_image.csv 文件。OghmaNano 会从到达探测器的所有波长重建一幅彩色图像 (在此演示中通常约 20 个波长区间)。 通过光阑中心开孔的光线在探测器上形成明亮的彩色区域; 被光阑阻挡的光线则在光束分布中留下一个黑暗的孔洞。
如果你旋转 3D 场景并在视觉上跟踪光线,你可以追溯这个孔洞如何形成: 一些光线被光阑板反射,一些完全错过探测器,只有穿过开孔的光线 才会对 ?? 中的明亮区域做出贡献。
👉 下一步: 继续阅读 第 B 部分:从棱镜到透镜。