著者: Julia Zhang、HunjuYi、Mike Grove、Alexandra Culler
ダウンロード
はじめに
OpticStudioでヘッドアップディスプレイ(HUD)システムを設計するには、まずSpeosで初期設定を行うと便利です。Speosでは、HUDプロジェクター要素、ミラー、アイボックス、虚像距離を簡単に構成することができます。Speosでは、HUDプロジェクタ、ミラー、アイボックス、仮想像面を簡単に構成することができます。CADプラットフォームはグラフィカルなインタラクティブ性とユーザーフレンドリーな操作を備えており、光線と体積的な制約を視覚的に適用しやすくします。これにより、最初から車両内に適切にフィットし、フロントガラスやダッシュボードなどの自動車アセンブリに埋め込まれた光学エレメントを配置することができます。
この記事は、SpeosとOpticStudioを使ったHUD投影光学系の設定と最適化のワークフローを解説する全4回のシリーズのうちの第2回目です。
このパートでは、Python言語を使用してSpeosとOpticStudioの接続を構築するために必要な準備作業について説明します。接続には、スタンドアロン接続モードとインタラクティブ接続モードの両方が使用できます。SpeosのHUD設計をOpticStudioのシーケンシャルモードに変換するために必要なボイラープレート接続コードとスクリプトコードを提供します。
Head-up Display projection system: from Speos to OpticStudio - part1
SpeosからOpticStudioへの変換準備
私たちはSpeosを統合したCADプラットフォーム、SpaceClaimを使用しています。Speosを統合するCADプラットフォームは他にもあります。HUDシステムをSpeosからOpticStudioのシーケンシャルモードに自動的に変換するために、SpaceClaimスクリプトを使用します。SpaceClaimスクリプトは、自動化とカスタマイズを可能にする SpaceClaim CADプラットフォームに統合されたツールです。このスクリプトは自動操作を可能にし、SpeosからOpticStudioへの変換を調整します。スクリプト言語としてIronPythonを使用しているため、.NETフレームワーク上で実行できます。インタプリタが内蔵されており、Pythonスクリプトのコードを実行し、テストすることができます。
OpticStudioには、インタプリタは内蔵されていません。Pythonで Zemax OpticStudio API (ZOS-API) を使用するには、PyCharm のような統合開発環境 (IDE) とPythonモジュールPythonnetが必要です。Pythonnetは.NETランタイムとPythonを接続し、OpticStudioの機能でPythonコードを実行できるようにします。
「C:\Program Files \ANSYS Inc\v241\ scdm\Library\IronPython\Lib」にある「IronPython」ライブラリフォルダに移動します。「zosapi_interactive.py」と「zosapi_standalone.py」という2つの.pyファイルをこのフォルダにコピー&ペーストしてください。「モード」を参照してください:ZOS-APIを使用する際にサポートされている接続モードについては、この記事の「接続のさまざまな方法」セクションを参照してください。提供される2つの.pyファイルは、それぞれインタラクティブ接続とスタンドアロン接続に対応しています。
.pyファイルを貼り付けるデフォルトフォルダは、選択したAPIバージョンによって決まります。たとえば、APIを選択した場合: V241を選択した場合、.pyファイルはv241フォルダにあります。ファイルが他のフォルダに置かれている場合の接続コードへのアクセス方法については、このセクションの最後を参照してください。
図1.1: APIバージョンオプション
Pythonを使用してSpaceClaimでOpticStudioの機能を利用するには、まずモジュールをインポートし、SpaceClaimのPythonインタプリタで実行します。以下のコード行は、新しいレンズファイルを開き、SPESO1.zos として保存する方法を示しています。
図1.2: Speosでスタンドアロン接続を使用
コード実行中にコンソールに 「No module named zosapi_interactive/ zosapi_standalone 」のようなメッセージが表示された場合、システムパスにそのモジュールが見つからないことを意味しています。
図1.3: モジュールエラーなし
これを解決するには、現在のコードシステムのパスの場所を決定し、そのパス内に前述の接続.pyコードを配置します。現在のシステムパスを出力するには、以下のコード行を使用します。
import sys
for path in sys.path:
print(path)
たとえば、ダウンロードした2つの.pyファイルが「C:\users\julzhang\Downloads」フォルダにあり、SpaceClaimこのフォルダからこれらの.pyファイルにアクセスするために、Pythonスクリプトを使用する場合は、Pythonのシステムパスにパスを含めることができます。
import sys
sys.path.append(r’C:\Users\julzhang\Downloads’)
Pythonモジュールのインストールに関する注意事項: IronPythonは、Python標準ライブラリのサブセットをサポートしています。ただし、NETプラットフォームとPython C APIの違いにより、すべてのモジュールが完全に機能するわけではありません。特に、NumpyやScipyのようなよく使われるモジュールはサポートされていません。代わりに、.NETライブラリを使用することを推奨します。たとえば、MathNet.Numerics.dllはMathNet.Numericsライブラリのコンポーネントで、数値計算用に設計された.NETライブラリです。
参照DLLはAPIフォルダにすでに存在します。たとえば、この参照を追加するには、次のコード行を使用します:
import clr
clr.AddReferenceToFileAndPath(r′ C:\Program Files\ANSYS Inc\v241\Discovery\MathNet.Numerics.dll′ )
OpticStudioのシーケンシャルモード変換のためのSpeosスクリプトを実行
Pythonスクリプトを実行する前に、Designタブをチェックして、HOD解析が最新であることを確認します。そうでない場合は、右クリックして[Compute (完了)]を選択します。HOD名を確認して、正しい設計が変換されることを確認します。変換ではこの出力テキストファイルのデータが使用されるため、.txt出力レポートの準備ができていることを確認します。
図2.4: Speos設計タブ
特定のバージョンで使用される手法は一貫している必要があります。ユーザーは、カスタマイズされたHUD光学設計名を使用できます。ただし、スクリプトはこの構成のみを受け入れるため、HODはサブコンポーネントではなくルートコンポーネントの下に定義する必要があります。スクリプトは、DesignタブからHODデザインをインタラクティブに選択するようユーザーに求めます。これにより、スクリプトは選択したHOD設計に関連付けられた設定を読み込んで使用できます。添付された.scscriptファイルは、OpticStudioのインタラクティブ接続モードを使用しており、開いているOpticStudioユーザーインターフェースを介して変換プロセスを視覚的にモニタリングできます。
スクリプトを実行するには、まずOpticStudioインターフェイスを開き、[Programming (プログラミング) > Interactive Connection (インタラクティブ接続)]を選択して、Speosとの接続を開始します。次に、Speosで、 [Design (設計) > Record (レコード) > Script (スクリプト)] と進み、ダウンロードしたスクリプトファイルを開き、[Run Script (スクリプトの実行)] をクリックします。
図2.5: OpticStudioインタラクティブ接続
図2.6: Speosスクリプト実行
図2.7: 設計タブからHODを選択
図2.8: 変換されたOpticStudioのシーケンシャルファイル
コメント
サインインしてコメントを残してください。