Shape Database チュートリアル(Part B):2D 画像とメッシュの生成
Part A では、 Shape database に新しいエントリを作成し、単純なフォトニック結晶スタイルのパターンから 最初のメッシュを構築しました。 このパートでは、それらの 2D 画像がそもそもどのように生成されるのか、そして それらがレイトレーシングやデバイスシミュレーションに有用な 3D 構造へ どのように変換されるのかに焦点を当てます。
Shape database は、単純な解析関数では記述しにくい 幾何形状 を対象としています:AFM 画像、粗い界面、複雑なタイリングやメッシュ、 さらにインポートされた CAD 部品です。これらはすべて、2D 画像から開始し、 それを 3D に押し出すことで一貫して扱われます。
1. 2D Image リボン
データベース内の任意のエントリ(例えば Part A の demo 形状)の
Shape editor を開き、2D Image リボンに切り替えてください。
??
に示すものと類似したツールバーが表示されるはずです。
各ボタンは Shape editor の右側パネルに新しいグレースケールの高さマップを生成します: ハニカム、フォトニック結晶(Generate Xtal と表示)、レンズ状プロファイル、 ガウシアンスポット、のこぎり波、チェッカーボードパターン、または Perlin ノイズ粗面です。 ボタンをクリックするたびに、現在の設定で画像が再生成されます。
各ジェネレータの下には小さな矢印もあります。これをクリックすると、そのパターン固有の Configure ウィンドウが開きます。以下でいくつか具体例を見ていきます。
合成画像だけに限定されるわけではありません。左側の Image ボタンを使うと、 実際の AFM データやその他のビットマップもインポートできます。離散化器は その画像を高さマップとして解釈します: 白ピクセルは最大高さ、黒ピクセルは最小高さ、そして中間の グレーは中間の高さを与えます。最良の結果を得るには、AFM データは 線形グレースケールのカラースケールへ変換されている必要があります;着色された「ヒートマップ」 パレットは、明るさがもはや単純な形で高さを表現しないため適していません。
最後に、右側の画像上でマウスを左クリックすると、ピクセルを黒く「塗る」ことで 材料を除去できます。これは、パターン全体を再生成することなく、 不要な領域を切り取ったりアパーチャをくり抜いたりする簡単な方法です。
2. 例:ハニカム接触パターン
ハニカム構造は、透明電極、柔軟な導電メッシュ、または 機械的支持体として有用です。生成するには、Generate Honeycomb をクリックします。 右側パネルが六角格子に更新されます。次に Build Mesh をクリックすると、そのパターンは ?? に示すような 3D 構造に押し出されます。
設定ウィンドウでは、x 方向および y 方向の特徴的な間隔を変更し、 下地グリッドに対するパターンのシフトを設定し、線幅を設定し、 パターンを回転できます。ここでの小さな調整でも、メッシュがデバイス構造に どのように収まるかに大きな違いを生むことがあるため、少し試してみる価値があります。
2D パターンに満足したら、再度 Build Mesh を押して 3D 表示を更新してください。メッシュが過度に複雑に見える場合は、Edit mesh をクリックして 三角形数を減らせます。目標は常に、形状を忠実に表現しつつ 最小限 の三角形を使うことです: 余分な三角形はすべてレイトレーシングのコストを増加させ、実際にはその低速化は通常、 線形ではなく超線形です。
3. 例:Perlin ノイズによる AFM 類似粗さ
実際の界面はしばしば粗く、簡単な光学実験のために同様の統計を持つ 「擬似 AFM」表面を生成できると便利です。OghmaNano は Perlin noise を使用します。これはコンピュータグラフィックスで一般的に用いられる 滑らかなランダム場であり、 (Wikipedia を参照)、 この挙動を模倣します。
2D Image リボンの Perlin noise をクリックしてください。グレースケールのノイズパターンが 右側パネルに現れます。ドロップダウン設定メニューからノイズパラメータを調整し、 望む種類の粗さが得られるまで再度アイコンをクリックして再生成できます。
パターンを選んだら、Build Mesh を押して 3D 表面を作成してください。 AFM 類似構造では、デフォルトのノード削減アルゴリズムよりも 規則的な メッシュを使う方が良い場合が多くあります。規則格子は 表面高さのより均一なサンプリングを与え、総三角形数を制御しやすくします。 これらの選択は Edit mesh ダイアログで切り替えることができ、 忠実度と速度の良い妥協点に達するまで異なる三角形分解能を試せます。
4. Filters による後処理
2D 画像が生成された後、さらに ?? に示す Filters リボンを使って それを加工できます。 これらのツールは、メッシュ化の前に右側の画像へ直接作用します。
Blur フィルタは鋭い段差や角を平滑化し、 Normalize オプションは高さ分布を制御された範囲へ再スケーリングし、 Threshold はグレースケールパターンを二値構造へ変換でき、 Boundary はパターンの周囲に実体境界を追加できます。これらはすべて 下地画像に対して作用するため、自由に組み合わせてから Build Mesh を押し、3D 表面への効果を確認できます。
具体例として、Saw wave ボタンで生成したのこぎり波パターンから始めてください。 メッシュ構築後には、 ?? に類似したものが見えるかもしれません。 ぼかしフィルタを適用するとエッジが柔らかくなり、 ?? に示すより滑らかな表面が得られます。
一般的な戦略は常に同じです:2D 画像を生成またはインポートし、 必要なフィルタを適用し、その後メッシュを再構築します。 それでも結果のメッシュがまだ重すぎると感じる場合は、 Edit mesh を使って、表面の主要な特徴を保ちながら 三角形数を減らしてください。
5. CAD ファイルのインポート(Wavefront OBJ)
画像ベースの形状に加えて、OghmaNano は Wavefront OBJ 形式を介して単純な CAD モデルをインポートできます (Wikipedia リンク)。 これは、外部 CAD パッケージで定義された 機械設計やレンズ形状をすでに持っている場合に便利です。
CAD モデルをインポートするには、Shape editor 左上の Import CAD file をクリックし、 OBJ ファイルを選択します。パーサは、主に頂点定義と面定義からなる プレーンテキスト版の形式をサポートします。その他の CAD 形式は現在 認識されません。
CAD 形状をインポートする際には、三角形数を制御下に保つことが 特に重要です。数万個の三角形を持つ高詳細な OBJ は、可視化にはまったく問題ないかもしれませんが、 レイトレーシングでは極めて低速になり、シミュレーション全体の 実行時間を容易に支配してしまいます。可能であれば、OghmaNano に持ち込む前に、 CAD ツール内でメッシュを簡略化または間引いてください。
6. 閉曲面に関する注意
形状が 2D 画像から来たものであれ、インポートされた CAD ファイルから来たものであれ、 OghmaNano で使用されるすべての形状は 閉曲面 として扱われます。非形式的に言えば、曲面が閉じているとは、 穴や隙間なしに体積を完全に囲んでいることを意味します。メッシュの用語では、 メッシュ内のすべての辺はちょうど 2 つの三角形に属している必要があります。
この要件が必要な理由は、光学ソルバーが光線が構造の 「内側」にあるのか「外側」にあるのかを曖昧さなく知る必要があるからです。 メッシュに開いた辺、欠損面、あるいは自己交差がある場合、 光線が隙間から漏れたり、不定義領域に閉じ込められたりする可能性があります。 これは数値アーティファクトを引き起こし、場合によってはレイトレーサーを失敗させることすらあります。
2D 画像から生成されたメッシュは、構成上常に閉じています:底面と側壁が 自動的に追加されるためです。しかし CAD インポートは、元ファイルの品質にのみ依存します。 CAD 由来の形状で問題が起きた場合は、CAD ビューアで そのオブジェクトが本当に密閉シェルを形成しているかどうかを確認し、 必要であれば修復してから OghmaNano で使用する価値があります。