樹實操指南)
第一次打開VirtualLab時我最大的困惑不是“仿真怎么做”而是“我到底該把鼠標(biāo)放在哪”。它既不像機(jī)械設(shè)計軟件那樣直觀畫零件也不像MATLAB那樣寫幾行腳本就能跑出結(jié)果而是一套獨(dú)立的光學(xué)仿真IDE界面里塞滿了光路編輯器、系統(tǒng)樹、上下文面板、元件庫、消息窗口……給人的第一感覺是信息量巨大但入口又藏得很深。這篇內(nèi)容不打算把界面上每一個按鈕都羅列一遍。對于VirtualLab初學(xué)者來說真正需要理順的就三件事第一光路編輯器里怎么“擺”元件第二系統(tǒng)樹和屬性面板之間怎么“改”參數(shù)第三可視化窗口和消息窗口怎么“看”結(jié)果和錯誤。把這三條關(guān)系想清楚后面的任何案例操作都會順手很多。我用的版本是VirtualLab Fusion這類軟件界面在不同子版本之間會有微調(diào)但核心模塊和交互邏輯基本一致。下面所有內(nèi)容都基于“默認(rèn)初始布局”來聊方便你對著自己的軟件逐項找。1. 光路編輯器不是畫圖板先搞清楚“元件放哪、光線怎么走”1.1 啟動頁面與文檔概念啟動VirtualLab之后首先進(jìn)入的不是光路編輯器而是一個啟動頁面Start Page上面有新建光學(xué)系統(tǒng)、打開案例庫、最近打開文檔這些入口。很多新手會直接點(diǎn)“新建光學(xué)系統(tǒng)”然后進(jìn)入一個看似空白的網(wǎng)格界面實際上這才是真正的主戰(zhàn)場——光路編輯器Light Path Editor。但這里有個容易誤解的點(diǎn)啟動頁面里的“新建”不只是新建一個文件而是新建一個容納光學(xué)元件的容器。你要自己往容器里放進(jìn)光源、透鏡、光闌、探測器把它們按順序搭好才稱得上一個“光學(xué)系統(tǒng)模型”。Web上很多人把VirtualLab和Zemax做對比其實它們的交互哲學(xué)不太一樣。Zemax更強(qiáng)調(diào)“面”和“系統(tǒng)樹”VirtualLab則是“光路編輯器系統(tǒng)樹”雙核驅(qū)動光路編輯器負(fù)責(zé)擺物理對象系統(tǒng)樹負(fù)責(zé)管理邏輯層級。這決定了界面上“哪里能放東西、哪里能看屬性”是分開的。1.2 頂部標(biāo)簽頁是動態(tài)的不只是靜態(tài)菜單界面上方那條Ribbon功能區(qū)默認(rèn)包含“開始”“編輯”“視覺化”“傳播”“數(shù)字仿真”“設(shè)置”等標(biāo)簽頁。很多人第一次用的時候會犯一個錯想在“編輯”標(biāo)簽頁里找光源屬性結(jié)果翻半天找不到。原因是VirtualLab的功能區(qū)是上下文敏感的——你選中了什么對象就會出現(xiàn)什么工具組。舉個例子當(dāng)你什么都沒選中時“數(shù)字仿真”標(biāo)簽頁里能點(diǎn)的按鈕很少當(dāng)你雙擊選中一個探測器時頂欄會額外出現(xiàn)一行“探測器”相關(guān)的上下文選項卡里面才有你需要的“查看數(shù)據(jù)/導(dǎo)出數(shù)據(jù)/打開結(jié)果”入口。新手實操時遇到“按鈕是灰色的”或“找不到某功能”90%的原因不是軟件沒有這功能而是你當(dāng)前沒有選中正確類型的對象。這個和Photoshop左側(cè)工具欄有點(diǎn)像選中文字圖層和選中形狀圖層時選項是完全不同的。1.3 光路編輯器網(wǎng)格區(qū)域與第一個操作光路編輯器中間那塊帶正交網(wǎng)格的區(qū)域是整個模型空間的二維投影。默認(rèn)情況下它會顯示坐標(biāo)軸和網(wǎng)格線這個區(qū)域里你可以插入元件并拖動位置。建議你第一次上手時做這個操作從左側(cè)元件庫中把“光源Sources”目錄里的一個平面波Plane Wave元件拖拽到網(wǎng)格區(qū)域中央。放置之后屏幕上會出現(xiàn)一個帶方向箭頭的圖標(biāo)箭頭指向就是光的傳播方向。再拖一個“探測器Detectors—矩形探測器”放到它右邊大約100毫米的位置。光路編輯器最關(guān)鍵的一點(diǎn)是它不是靠連線來確定光路順序的而是靠元件在三維空間中的位置和方向順序。在跑仿真時程序會依據(jù)“光從光源出發(fā)沿著傳播方向貫穿各個元件”的物理邏輯來決定追跡順序。因此如果你把探測器擺在光源左邊仿真照樣能跑但結(jié)果會是反向的這種錯誤在界面上沒有任何提示。很多教程上來就講算法我反而主張先花10分鐘在這個編輯器里拖幾個元件、轉(zhuǎn)轉(zhuǎn)視角、按住滾輪拖一拖建立“三維空間里擺光學(xué)平臺”的感覺這是后續(xù)所有操作的基石。2. 左側(cè)元件庫與光學(xué)屬性大多數(shù)功能的入口都在這棵目錄樹里2.1 元件庫的分類邏輯VirtualLab的界面左側(cè)默認(rèn)是一系列垂直排列的面板最常用的就是“元件庫”Component Library。它本質(zhì)上是一棵可搜索的樹形目錄所有可用元件按類別組織在一起。里面內(nèi)容很多但初學(xué)者不需要全部掌握我建議優(yōu)先看這幾類目錄常見子類用途SourcesPlane Wave, Gaussian Wave, Hermite-Gauss Wave定義入射光源LensesIdeal Lens, Spherical Lens, Aspheric Lens聚焦、成像、光束變換AperturesCircular Aperture, Rectangular Aperture限制光束口徑DetectorsCamera Detector, Power Detector, CCD Detector接收并記錄光場Optical InterfacesPlane Interface, Spherical Interface面型與介質(zhì)分界Components各類復(fù)雜組合件現(xiàn)成的系統(tǒng)級模塊雙擊或拖拽某個條目就能把它插入到當(dāng)前光路編輯器中。我最常用的方式是拖拽因為可以順便調(diào)整大概的落點(diǎn)位置插入后再用屬性面板精確指定坐標(biāo)。2.2 “光學(xué)屬性瀏覽器”藏在哪在元件庫面板的附近往往還有一個“光學(xué)屬性”O(jiān)ptical Properties入口或者通過右鍵已有元件在彈出菜單里找到“光學(xué)屬性”相關(guān)項。它和元件庫是配套的用來查看和設(shè)定材料的折射率、消光系數(shù)、鍍膜數(shù)據(jù)等。很多新手的痛點(diǎn)在于拖入一個透鏡后它看起來只是一個面型沒有“厚度”“材料”這些概念。其實這些都在光學(xué)屬性里。你需要在透鏡的“屬性對話框”中指定前后表面的曲率半徑、厚度以及介質(zhì)類型。VirtualLab默認(rèn)會給一個通用材料但如果你做的是可見光系統(tǒng)最好在這里把材料改成BK7或指定波長下的折射率。一個很實用的習(xí)慣在項目開始時就把常用的光源、透鏡、探測器參數(shù)都設(shè)置好然后通過界面菜單把它們保存為模板。下次再畫光路時直接拖模板而不是每次重新敲參數(shù)。這樣既省時間還能避免“忘了改某個參數(shù)”導(dǎo)致的低級錯誤。2.3 元件庫搜索比肉眼翻樹快三倍如果元件特別多或者是某個很偏門的光柵模型不要一層層展開目錄直接在元件庫上方的搜索框里輸入關(guān)鍵詞比如輸入“Ideal Lens”結(jié)果會實時過濾。這個操作看起來沒什么技術(shù)含量但實際使用時效率提升非常明顯。我還想多說一句VirtualLab的元件庫不只是“元件”有些目錄還可以直接插入“操作對象”比如“可視化對象Visualization Objects”和“光路順序Light Path Sequence”。初學(xué)者看到這些容易懵我的建議是先無視它們屬于進(jìn)階工具。最開始只需要記住光源靠左放元件放中間探測器放末端順序別搞反。3. 系統(tǒng)樹和上下文面板界面里真正的“控制中樞”3.1 系統(tǒng)樹到底在管理什么如果光路編輯器是“臺面”那系統(tǒng)樹就是“抽屜柜”。VirtualLab界面左側(cè)通常還有一個“系統(tǒng)樹”System Tree面板它把當(dāng)前文檔里的所有對象按層級羅列出來包括光源、元件、探測器、可視化窗口、結(jié)果數(shù)據(jù)集等。為什么要特別強(qiáng)調(diào)這個面板因為光路編輯器里只能看到幾何對象而系統(tǒng)樹里能看到“邏輯對象”。比如你在光路編輯器中看到一個透鏡表面但系統(tǒng)樹里會顯示這個透鏡屬于哪個元件、包含幾個面、位于哪條光路序號。尤其是當(dāng)系統(tǒng)復(fù)雜到多個元件堆疊在一起時肉眼已經(jīng)無法區(qū)分系統(tǒng)樹是唯一能精確選擇對象的地方。鼠標(biāo)單擊系統(tǒng)樹里的任意節(jié)點(diǎn)對應(yīng)元件在光路編輯器中會高亮反過來在編輯器里選中對象系統(tǒng)樹也會同步展開對應(yīng)節(jié)點(diǎn)。這兩個區(qū)域是聯(lián)動的我強(qiáng)烈建議你養(yǎng)成“用系統(tǒng)樹選對象”的習(xí)慣而不是每次都去編輯器里點(diǎn)。3.2 上下文面板快速修改幾何參數(shù)的入口選中對象之后界面右側(cè)或底部會出現(xiàn)“上下文面板”Context Panel里面展示了這個對象的幾個核心參數(shù)比如光源的方向、位置透鏡的焦距、半直徑等。它的作用是“快速預(yù)覽和基本修改”不需要打開完整的屬性對話框就可以改位置和尺寸。但這恰恰是新手最容易踩坑的地方上下文面板里的字段是“有限子集”它并不展示全部參數(shù)。很多人在這里改了功率、波長但實際上光源的完整參數(shù)還需要雙擊元件在完整的屬性對話框里設(shè)置。如果你只依賴上下文面板很容易漏掉某些參數(shù)。我做仿真時的標(biāo)準(zhǔn)動作是先在系統(tǒng)樹里選中對象看一眼上下文面板了解基本情況需要詳細(xì)設(shè)置時雙擊對象打開屬性對話框把參數(shù)完整過一遍。這樣才能保證不遺漏重要的設(shè)置項。3.3 屬性對話框的分頁習(xí)慣雙擊任意元件后彈出的屬性對話框是VirtualLab界面的另一個主角。以光源為例它通常包含“常規(guī)信息”“位置與方向”“光束參數(shù)”“采樣設(shè)置”等分頁Tab每個分頁里又有若干參數(shù)組。關(guān)鍵參數(shù)的位置基本遵循一個規(guī)律物理定義在“光束參數(shù)”里幾何位置在“位置與方向”里結(jié)果精度在“采樣設(shè)置”里。比如高斯光源的束腰寬度、波長、功率都在“光束參數(shù)”分頁而它的空間位置和傾斜角度則歸“位置與方向”管。這個規(guī)律雖然簡單但能幫你節(jié)省大量找參數(shù)的時間。我在幫同事改模型時最常發(fā)生的就是“他在上下文面板里改了位置沒改波長結(jié)果怎么仿真都不對”。這種問題界面沒有任何報錯只有靠邏輯排查才能發(fā)現(xiàn)。4. 可視化窗口從“能看見”到“能看懂”的跨越4.1 默認(rèn)狀態(tài)下的視窗配置新建光學(xué)系統(tǒng)后主界面通常只顯示二維光路編輯器。但實際進(jìn)行仿真時你真正要盯著的窗口其實有三個2D光路編輯器、3D光路編輯器、以及可視化窗口Visualization Window。在不同版本中這些窗口可能以子窗口、選項卡或者??棵姘宓男问匠霈F(xiàn)。建議你在“視覺化”標(biāo)簽頁里手動打開3D光路視圖和一個“可視化”窗口。把它們的位置調(diào)整為左邊是2D光路編輯器右上為3D視圖右下為可視化窗口這樣仿真跑完就能同時看到光路結(jié)構(gòu)和探測器結(jié)果。我記得第一次跑完一個聚焦案例后可視化窗口里只顯示了一坨“請問這算聚焦了嗎”的模糊光斑。后來才明白可視化窗格里的顯示模式需要手動切換比如選擇“強(qiáng)度分布圖”“相位分布圖”或“對數(shù)坐標(biāo)光強(qiáng)圖”。默認(rèn)的線性強(qiáng)度圖在大動態(tài)范圍場景下幾乎看不出細(xì)節(jié)。4.2 視圖操作的自適應(yīng)技巧VirtualLab三個主要窗口的交互手感各不相同下面是我實際操作下來最順手的配置2D光路編輯器滾輪縮放按住鼠標(biāo)中鍵拖動平移雙擊空白處自動適配視圖。3D光路編輯器滾輪縮放按住鼠標(biāo)左鍵拖動旋轉(zhuǎn)視角右鍵拖動平移。如果不小心把視角轉(zhuǎn)暈了點(diǎn)擊工具欄上的“適應(yīng)視圖/放大全部”按鈕一鍵恢復(fù)??梢暬翱跐L輪縮放圖片按住左鍵拖動可以像看圖軟件一樣平移雙擊圖片可適配窗口。一個很常見的現(xiàn)象是你在3D視圖里轉(zhuǎn)了個角度然后發(fā)現(xiàn)光源和元件不共面了以為模型錯了。其實只是視角偏移導(dǎo)致的錯覺代碼與界面視圖并沒有問題。這時候用“適應(yīng)視圖”按鈕回到正視角問題就消失了。4.3 可視化窗口右上角的功能按鈕在可視化窗口的工具欄上有很多小而重要的圖標(biāo)它們的作用一般包括切換顯示數(shù)據(jù)類型強(qiáng)度、相位、振幅、相干等切換坐標(biāo)顯示方式線性、對數(shù)、dB查看圖例和色標(biāo)截圖導(dǎo)出圖像初期不需要全部搞明白但至少記住兩個常用操作一是把色標(biāo)范圍改成“自動適配當(dāng)前幀”否則導(dǎo)入不同數(shù)據(jù)集時顯示層次容易失真二是學(xué)會導(dǎo)出高清圖像在匯報或?qū)懳臋n輸出結(jié)果時一張干凈的可視化截圖比一堆參數(shù)表格有用得多。5. 消息窗口你不是在學(xué)軟件你是在學(xué)“讀懂報錯”5.1 消息窗口的布局與等級VirtualLab底部默認(rèn)有一條消息窗口Message Window用于輸出仿真過程信息和報錯提示。很多人直接忽略它這是很虧的。因為這類仿真軟件的報錯信息往往比“界面上哪沒點(diǎn)對”更本質(zhì)。消息窗口通常按嚴(yán)重程度分級常見三種Error錯誤、Warning警告、Information信息。我處理仿真問題時的第一步永遠(yuǎn)是看消息窗口里最后幾條Error或Warning。新手最容易犯的錯誤是“看到一屏紅字就慌”。實際上很多Error只是“某一次探測中采樣不足”或“某個面未命中”并不會導(dǎo)致程序崩潰只是一個提示。正確做法是點(diǎn)選某條錯誤信息軟件一般會高亮跳轉(zhuǎn)到對應(yīng)元件或參數(shù)位置順著它檢查一遍即可。5.2 消息窗口里最常見的三種提示以我的經(jīng)驗初學(xué)者遇到的仿真報錯集中在以下三類光源功率異常或未定義例如把功率設(shè)為0或負(fù)數(shù)仿真出來的結(jié)果全是黑的采樣率不足例如探測器的像素數(shù)太小高頻成分被混疊光斑上出現(xiàn)奇怪的花紋傳播順序錯誤光源沒有在路徑起點(diǎn)或者元件遮擋順序反了導(dǎo)致能量無法傳導(dǎo)遇到這些提示時不要直接死記“我該點(diǎn)哪個按鈕”而是把它當(dāng)成一次物理診斷。比如“采樣不足”的實質(zhì)是光場在傳播過程中高頻成分沒有被網(wǎng)格捕捉界面操作則是“增大探測器像素數(shù)并合理設(shè)置窗口尺寸”。5.3 右鍵復(fù)制消息文本這個小技巧幫過我很多次在消息窗口選中一條報錯后右鍵菜單里通常有“復(fù)制消息”或“復(fù)制完整文本”。當(dāng)界面提示過于簡略時把這段文本復(fù)制到搜索引擎或官方論壇里搜索往往能得到比界面幫助文檔更具體的解析。不要問為什么所有報錯都是英文縮寫或術(shù)語老牌物理仿真軟件的中文本地化一直有限專業(yè)術(shù)語太多直接搜英文原文反而準(zhǔn)確。久而久之你會發(fā)現(xiàn)自己讀英文光學(xué)術(shù)語的能力也跟著漲了這也算是學(xué)這個軟件的一個隱性收獲。6. 界面定制的幾個實際細(xì)節(jié)單位、模板、??坎季?.1 單位設(shè)置從第一次建模就定死VirtualLab界面的單位可以在“設(shè)置Settings—通用General”里調(diào)整。我強(qiáng)烈建議你在開始第一個正式項目前就把默認(rèn)單位確定下來不要中途更改。一般的習(xí)慣是長度單位用毫米mm波長單位用納米nm角度單位用度deg。因為光學(xué)設(shè)計領(lǐng)域的主流交互慣例就是這套。如果你把長度單位切成了米再用“束腰0.5mm”這種習(xí)慣去思考很容易出現(xiàn)10的六次方量級的數(shù)值誤差。具體操作在設(shè)置里找到“單位”相關(guān)內(nèi)容把長度、角度、波長、功率等全部按上述標(biāo)準(zhǔn)設(shè)定。設(shè)置完成后新文檔會繼承這套單位舊文檔的屬性對話框也會以這套單位來顯示。6.2 面板??颗c窗口布局VirtualLab的面板幾乎都可以拖拽和停靠。很多人不知道這一點(diǎn)于是被默認(rèn)布局束縛住總覺得“這個軟件界面太擠”。我的使用習(xí)慣是左側(cè)元件庫在上系統(tǒng)樹在下元件庫和系統(tǒng)樹可以并排或上下分欄中央3D光路視圖為主2D視圖作為輔助??吭趥?cè)邊右側(cè)上下文面板和屬性對話框底部消息窗口不同版本之間的??考?xì)節(jié)略有差別但原則是一致的把你最常交互的“系統(tǒng)樹”和“屬性對話框”放在不用移動鼠標(biāo)就能點(diǎn)到的地方。反正我調(diào)了這個布局之后建模效率至少提升了一倍。6.3 模板與默認(rèn)路徑前面提到保存元件模板其實VirtualLab還支持保存“文檔模板”。你可以把一個已經(jīng)搭好的、常用配置的光學(xué)系統(tǒng)例如標(biāo)準(zhǔn)照明光路另存為模板文件。下次新建系統(tǒng)時直接從模板創(chuàng)建界面會把光源、透鏡、探測器和所有參數(shù)全部帶出來。與此同時我建議在“設(shè)置”里把默認(rèn)工作目錄和結(jié)果輸出目錄設(shè)置到一個有規(guī)律的項目文件夾下不要散落在系統(tǒng)盤臨時目錄。尤其是仿真結(jié)果數(shù)據(jù)文件體積大且數(shù)量多如果不集中管理一個月后你自己都找不到哪份結(jié)果對應(yīng)哪個參數(shù)版本。這個和代碼工程管理是一個道理。7. 從界面走通第一個完整案例60秒建好一個聚焦系統(tǒng)7.1 一個最小可運(yùn)行模型的搭建步驟這里給你一個“最小可跑的界面操作序列”從頭到尾不涉及代碼純靠上面聊過的界面模塊完成在啟動頁面點(diǎn)“新建光學(xué)系統(tǒng)”。從左側(cè)元件庫中拖一個高斯波光源Gaussian Wave到光路編輯器中。雙擊光源在屬性對話框中設(shè)置波長 632.8 nm束腰半徑 0.5 mm光功率 1 mW確認(rèn)并關(guān)閉。從元件庫中拖一個理想透鏡Ideal Lens到光源右側(cè)大約50 mm處。雙擊透鏡設(shè)置焦距為 100 mm半直徑 5 mm。從元件庫中拖一個矩形探測器Rectangular Detector到透鏡右側(cè)約100 mm處。雙擊探測器設(shè)置像素 512 × 512尺寸 10 mm × 10 mm。點(diǎn)擊頂部“數(shù)字仿真”標(biāo)簽頁中的“執(zhí)行傳播”/“運(yùn)行仿真”按鈕。跑完仿真后在可視化窗口中選擇“強(qiáng)度分布”你應(yīng)該能看到一個接近中心對稱的聚焦光斑在3D光路視圖里可以看到光線從光源發(fā)出、經(jīng)過透鏡、匯聚到探測器附近。整個過程只要不涉及復(fù)雜的界面微調(diào)通常一分鐘內(nèi)就能完成。7.2 界面操作中最常見的三個卡點(diǎn)我在初學(xué)者答疑時重復(fù)回答最多的問題主要有三個為什么我點(diǎn)了“執(zhí)行”之后可視化窗口沒有反應(yīng)多半是忘記在“數(shù)字仿真”標(biāo)簽頁里選擇正確的傳播算法或者根本沒有選中任何需要傳播的元素序列。為什么我的探測器結(jié)果是一片純色多半是探測器的動態(tài)范圍設(shè)置問題或者光源功率被設(shè)成了0還有一種可能是可視化窗口顯示的不是強(qiáng)度數(shù)據(jù)而是相位數(shù)據(jù)。為什么我在光路編輯器里雙擊某個元件沒有彈出屬性對話框很可能是這個元件被“抑制”了在系統(tǒng)樹里被禁用。此時需要在系統(tǒng)樹中右鍵點(diǎn)擊該元件選擇“啟用”。7.3 界面操作的“秩序感”做完這個最小案例我建議你別急著馬上學(xué)下一個高級功能而是先把剛才使用過的界面模塊在腦中串一遍光路編輯器負(fù)責(zé)擺元件庫負(fù)責(zé)取系統(tǒng)樹負(fù)責(zé)選屬性對話框負(fù)責(zé)改可視化窗口負(fù)責(zé)看消息窗口負(fù)責(zé)報錯。這六件事構(gòu)成了VirtualLab界面操作的基本閉環(huán)。從我的教學(xué)經(jīng)驗來看初學(xué)者在這個階段最容易犯的錯誤就是“貪多”。今天聽到一個“光柵工具箱”很厲害就去試明天聽說“參數(shù)優(yōu)化”很好用就去點(diǎn)最后界面被打開了幾十個面板卻連一個基礎(chǔ)光路都搭不完整。把最小案例反復(fù)做三遍直到不需要思考就能找到每個面板的位置才是最高效的學(xué)習(xí)路徑。最后再分享一個小習(xí)慣我每打開一個新模型第一件事永遠(yuǎn)是按上面的順序檢查一遍“光源參數(shù)—元件屬性—探測器采樣”全部確認(rèn)無誤再點(diǎn)仿真。這套檢查流程在界面上花不了30秒?yún)s能在后面省下幾個小時排查“怎么結(jié)果這么奇怪”的時間。界面的價值不只是讓你能操作更是讓你形成一種穩(wěn)定的工作秩序。對VirtualLab這種仿真軟件而言秩序感比所謂的“聰明操作”重要得多。