Головна Приклади Знімки екрана Інструкція користувача Логотип Bluesky. YouTube ☰
OghmaNano Мультифізична платформа для моделювання оптоелектронних пристроїв і фотонних систем. ЗАВАНТАЖИТИ Короткий посібник зі швидкого старту

Як працює трасування променів в оптичних системах.

1. Вступ

OghmaNano showing 3D ray tracing through a Cooke Triplet lens
Повноцінне тривимірне трасування променів у OghmaNano. Промені випромінюються з джерела, поширюються крізь багатоелементну оптичну систему та фіксуються на площині детектора.
Light bending by refraction at material interfaces
Заломлення змінює напрямок променя, коли він проходить через межу між матеріалами з різними показниками заломлення. У повній оптичній системі багаторазове заломлення на багатьох поверхнях визначає кінцеве зображення та пропускну здатність.

Трасування променів в оптичних системах, по суті, являє собою багаторазове застосування геометричних законів оптики у тривимірному просторі. Промінь визначається положенням \(\mathbf{x}\), напрямком \(\mathbf{k}\), довжиною хвилі \(\lambda\) та оптичною потужністю \(P\). Під час поширення через сцену він взаємодіє з поверхнями шляхом заломлення, відбиття, поглинання та обрізання.

На кожній межі між середовищами напрямок променя визначається законом Снелліуса. У скалярній формі він виглядає так:

\[ n_1 \sin(\theta_1) = n_2 \sin(\theta_2) \]

У практичних моделюваннях трасування променів здійснюється у повному тривимірному просторі. Це вимагає векторного опису, де напрямок падаючого променя \(\mathbf{k}_i\), нормаль до поверхні \(\mathbf{n}\) і напрямок відбитого променя \(\mathbf{k}_t\) обчислюються явно. Один із поширених варіантів має такий вигляд:

\[ \mathbf{k}_t = \frac{n_1}{n_2}\mathbf{k}_i + \left(\frac{n_1}{n_2}\cos\theta_i - \cos\theta_t\right)\mathbf{n} \]

де \(\cos\theta_i = -\mathbf{k}_i \cdot \mathbf{n}\) і \(\cos\theta_t\) визначаються законом Снелліуса. Ця операція застосовується до кожної межі в системі, що дає змогу відстежувати шляхи променів крізь довільно складні системи лінз, плівок і структурованих поверхонь (див. ?? і ??).

Окрім зміни напрямку, кожна взаємодія призводить до перерозподілу оптичної потужності між відбитим і пропущеним променями. Цим процесом керують рівняння Френеля. Для неполяризованого світла їх можна представити у стислому вигляді:

\[ R = \left|\frac{n_1 \cos\theta_i - n_2 \cos\theta_t}{n_1 \cos\theta_i + n_2 \cos\theta_t}\right|^2, \quad T = 1 - R \]

У більш загальному сенсі можна використовувати коефіцієнти, що залежать від поляризації \(R_s, R_p\) і \(T_s, T_p\). Вони визначають, як оптична потужність розподіляється на кожній межі, і є важливими для прогнозування втрат, пропускної здатності та ефективності.

2. Найпростіший метод трасування променів.

Загалом, принцип трасування променів досить простий: простежуємо шлях променя, знаходимо наступну точку перетину, застосовуємо закон Снелліуса та рівняння Френеля і продовжуємо. Однак, під час моделювання реалістичних оптичних систем (наприклад, OLED-дисплеїв, лінз або випромінювання світла з пристроїв), часто необхідно простежувати сотні тисяч або мільйони променів. Основні витрати пов’язані не з фізичними розрахунками, а з проблемою пошуку: визначенням того, з яким об’єктом промінь перетнеться першим.

У дискретизованій сцені поверхні зазвичай представляються у вигляді трикутної сітки. Найпростіша реалізація передбачатиме перевірку променя на перетин з кожним трикутником у сцені. Для променя \(\mathbf{r}(t) = \mathbf{o} + t\mathbf{d}\) і трикутника, визначеного вершинами \(\mathbf{v}_0, \mathbf{v}_1, \mathbf{v}_2\), перетин можна записати у барицентричній формі:

\[ \mathbf{o} + t\mathbf{d} = \mathbf{v}_0 + u(\mathbf{v}_1 - \mathbf{v}_0) + v(\mathbf{v}_2 - \mathbf{v}_0), \quad u,v \ge 0,\; u+v \le 1 \]

Розв’язуючи рівняння для \(t,u,v\) (наприклад, за допомогою алгоритму Мьоллера–Трамбора), визначається, чи перетинає промінь трикутник. Метод повного перебору потребує \(\mathcal{O}(N)\) обчислень для кожного променя та \(N\) трикутників, що швидко стає надмірно затратним з обчислювальної точки зору.

3. Прискорене трасування променів

Bounding volume hierarchy (BVH) showing a ray intersecting bounding boxes before testing individual triangles
Ієрархія обмежувальних об’ємів (BVH) прискорює трасування променів, об’єднуючи геометричні об’єкти в ієрархічно вкладені обмежувальні об’єми. Спочатку промінь перевіряється на перетин із великими обмежувальними об’ємами; лише якщо промінь перетинає об’єм, алгоритм переходить до менших об’ємів і, зрештою, перевіряє окремі трикутники. Цілі ділянки сцени можна пропустити, якщо їхні обмежувальні об’єми не перетинаються з променем.

Щоб вирішити цю проблему, сцена поділяється за допомогою просторових структур прискорення, таких як ієрархії обмежувальних об’ємів (BVH). Геометрія рекурсивно поділяється на обмежувальні прямокутники, орієнтовані за осями координат (AABBs), утворюючи деревоподібну структуру. Кожен вузол містить обмежувальний об’єм, що охоплює підмножину трикутників. Потім трасування променів відбувається ієрархічно: спочатку відбувається перетин з обмежувальним прямокутником, і лише якщо промінь його перетинає, відбувається перехід до дочірніх вузлів.

Це спрощує процес перевірки перетинів від \(\mathcal{O}(N)\) до \(\mathcal{O}(\log N)\) на практиці, значно прискорюючи моделювання. Схематичне зображення структури BVH наведено в ??.

Додаткові оптимізації включають багатопотоковість для обробки даних на різних ядрах процесора, відсіювання трикутників, які знаходяться поза зоною видимості променя, та об’єднання обчислень для різних довжин хвиль. Проте основна проблема залишається проблемою пошуку: ефективне визначення першої поверхні, з якою перетинається промінь.

4. Що це означає для вас як для користувача? (тобто, як я можу прискорити роботу моєї моделі/симуляції)

Під час визначення оптичної сцени на продуктивність значною мірою впливає кількість геометричних примітивів. Необхідно прагнути до мінімізації кількості трикутників, зберігаючи при цьому фізичну точність. Наприклад, під час імпорту CAD-моделей слід видаляти зайві деталі (наприклад, болти, різьбу, дрібні механічні елементи).

Кожен додатковий трикутник збільшує обчислювальні витрати на визначення перетину променя та геометричної фігури. Ці витрати ще більше зростають під час моделювання декількох довжин хвиль або великої кількості променів. Тому, на відміну від звичайних процесів у системах автоматизованого проєктування (CAD), для ефективного оптичного моделювання необхідна ретельно спрощена геометрія, яка враховує лише ті елементи, що мають значення для оптики.

Отже, трасування променів в оптичних системах передбачає: багаторазове застосування закону Снелліуса в тривимірному просторі, розрахунок відбиття та проходження променів за Френелем, а також ефективний пошук у геометричній моделі сцени. У сукупності ці елементи становлять основу фізично обґрунтованого оптичного моделювання в OghmaNano.