WaveDudeNextは、ユーザーがキャンバス上に光源や光学部品を配置することで、波動が「揺れ動く場(field)」および「時間平均された強度(intensity)」としてどのように伝播するかを観察できる視覚的プラットフォームを提供します。Alexander Gräfによって開発されたこのツールは、研究者や趣味の愛好家が、回折や干渉といった複雑な現象が2D平面上で動的に展開する様子を確認することを可能にします。

コアメカニクスと視覚化

シミュレータは、波動の物理現象を2つの同時ビューで提供します。一つは波動が正負に揺れ動く様子を示す「field(場)」、もう一つは時間平均された波動のエネルギーを表す「intensity(強度)」です。このデュアルビューにより、ユーザーは波動の瞬間的な状態と、累積的なエネルギー分布を区別することができます。

プロジェクトツリー、オブジェクトのプロパティ、および波動の場と強度の並列ビューを表示するWaveDudeNextのソフトウェアインターフェース。
WaveDudeNextのインターフェースは、プロジェクトツリー、オブジェクトのプロパティ、および波動の場と強度の同時ビューを表示します。github.com

この画像はWaveDudeNextシミュレータの主要なインターフェースを例示しており、プロジェクト管理ツールと波動物理のデュアルビュー表示を示しています。

特定のデータを収集するために、このツールには特定の点または線に沿った場または強度の値を記録するプローブが含まれています。これらのプローブは、シミュレーション上に重ね合わせることができる線形または対数軸のグラフを生成し、特定の座標における波動の挙動を正確に測定することを可能にします。

「キャンバスに光源と光学部品を配置し、シミュレーションを実行しながら、波動が場そのものとして、またそれらが積み重なる強度としてどのように伝播するかを観察します。」

— GitHub - graealex/WaveDudeNext: Interactive 2D wave optics simulator. Turn any image into a refractive scene, add source

拡張された光学部品とシーン作成

WaveDudeNextは、画面上のハンドルを使用して形状を調整したり移動したりできる、さまざまな複雑な光学部品を導入しています。これらには、球形レンズ、ミラー、曲線に沿ったファイバーのほか、グレーディエントインデックスレンズ、ゾーンプレート、ブラッグ反射鏡などの特殊な要素が含まれます。

タイムラインと波動伝播のビューを含む例のプロジェクトを示すWaveDudeNextシミュレータのスクリーンショット。
タイムラインと波動伝播の視覚化を含む例のプロジェクトを示すWaveDudeNextシミュレータのスクリーンショット。github.com

このスクリーンショットは、タイムラインや並列の場と強度のビューを含む、ソフトウェアの機能の具体的な例を提供します。

ユニークな機能として、ユーザーは任意の画像を屈折シーンに変換できます。特定のカラーマッピング(屈折率は赤、放射源は緑、吸収は青)を使用することで、ソフトウェアは画像をプロジェクトに埋め込み、ファイルが編集されるたびにシミュレーションを自動的に更新します。

パフォーマンスとエクスポート機能

シミュレーションは、利用可能な場合はGPUで実行され、そうでない場合はCPUにフォールバックします。異なるハードウェア間での使いやすさを確保するため、ソフトウェアはマシンの性能に適したプレビュー品質を自動的に選択しますが、エクスポートされるすべてのファイルはフル品質を維持します。

分析やプレゼンテーションのために、このツールは、ビデオ用のMP4、AVI、QuickTime、および生データ用のPNG、JPEG、OpenEXRを含む幅広いエクスポート形式をサポートしています。OpenEXRファイルは、NumPy、MATLAB、またはOctaveなどの外部ツールで使用するための生値を運ぶために特別に設計されています。

技術的な制限と要件

シミュレータは高精度なプレビューを提供しますが、メモリ使用量は大きくなる可能性があります。1500枚のフルHDフレームの実行では、740MBから11.6GBのスペースを占有する場合があります。これを管理するため、ソフトウェアには、実行中に利用可能なメモリを超えた場合にディスクに書き出すフレームキャッシュが含まれています。

ソフトウェアは現在Windows 10および11に限定されています。.NET 10 Desktop Runtimeを必要とする「小規模」な実行ファイルを提供していますが、ユーザーのインストールプロセスを簡素化するために、ランタイムを含むより大きなスタンドアロンバージョンも提供しています。