前幾天後台有人問我二硫化鉬器件的畫法,其實主要就是MoS2分子結構的建模。在之前的3dsMax和C4D教程中我都出過(點擊查看:二硫化鉬-MAX建模;二硫化鉬-C4D建模),也有比較適合用來程序化建模的方法,參考C4D科研模型100例【例52】。剛好最近在學習Houdini,於是就建了個參數化的MoS2器件模型。
在設置參數之前我們先要思考,最終的模型需要怎樣調節。比如這裡我希望隨着基底長和寬的變化,二硫化鉬層的大小可以隨之自動調節。另外,兩側的電極寬度也會影響到二硫化鉬分子的分布。為了簡便起見,二硫化鉬單元尺寸是固定不變的,原子和化學鍵只給了固定的值,沒有額外添加調節的參數。最終可調節的參數只有底座的長(Length)、寬(Width)、高(Height),電極占整個長度的比例(Ratio)以及模型的倒角值(Round)。
這些參數可以在一個空白(Null)節點中添加,名稱可改為「CONTROLLER」。點擊設置中的「Edit Parameter Interface」選項,打開自定義參數設置窗口。
設置分三步,①先在左邊選擇參數的數據類型,本例中均為浮點數據(Float);②點擊向右的箭頭添加到參數列表中;③最右側設置參數的名稱(Name)、標籤(Label)以及其他信息如取值範圍(Range)等。注意標籤只是用於顯示,調用參數時用的是參數名稱。點擊【Apply】按鈕應用,確認後點擊【Accept】按鈕完成設置。
在創建過程中,每一步都需要考慮設置的參數是怎樣影響場景中的對象的。在筆記004中我已經介紹過怎麼讓參數進行關聯,除了複製粘貼的方法,如果你對Houdini的表達式很熟悉的話,也可以直接輸入ch("../CONTROLLER/length")。這裡的第一個點是返回上一級(obj),第二點是進入現在的層級(geo),斜槓後面跟的是節點名稱,再後面是參數名稱。還有一點要注意的是,Size的y值對應的是高度,z值對應的才是寬度。
關聯之後就可以用CONTROLLER節點中的長、寬、高參數來控制box的尺寸了。這裡為了讓box底面始終位於地平面上,我又加了個transorm節點,將translate的y值表示為bbox表達式。這裡的bbox跟Hip hop半點關係沒有,而是bounding box的縮寫,意為邊界框。bbox("../box1",D_YMIN)就是box1模型在y方向上的坐標最小值,這裡也就是box1高度的一半(負值),往上移動的話前面別忘了加個負號。當然,這一步你不移動也沒問題。
那我是怎樣知道bbox表達式的寫法呢?一是看教程,二是利用軟件的文本提示。比如我在輸入「bbox(」後就彈出了如下提示。開頭的float bbox (string, float)表示數據的類型,該表達式最終返回的是一個浮點數(float),括號裡面需要有一個字符串(string)和一個浮點數(float)。然後下面的USAGE是具體解釋,bbox(<surface_node>, <type>)。第一個字符串是節點,也就是「../」開頭的一串;第二個浮點數是D_XMIN、DYMIN,D_ZMIN……也就是邊界框相關的數值。照着寫的過程中多思考幾遍,不難理解。如果你寫錯了,節點旁邊會出現紅色的警示符號,這是學習Houdini過程中很正常的現象。在不斷解決錯誤的過程中,你的技術才能得到實質性的提高。
接下來是上面兩個電極的創建,這裡只需要創建一個,然後往一側移動至邊緣,用mirror節點鏡像對稱即可。至於transform應該移動多少,有中小學數學水平就可以解決,我就不再詳細列出了。注意電極的寬度(x方向)是length*ratio。merge之後添加polybevel節點整體進行邊倒角。
稍微複雜一些的是中間二硫化鉬的創建,這裡大致介紹下我的建模思路供大家參考。比較簡單的地方我會一筆帶過。首先從一個三角形開始,用的是circle節點,類型選擇polygon,半徑(radius)固定為0.5不變,邊數(division)為3。然後用polyextrude節點做內部插入,inset值剛好為半徑的一半0.25,最後添加fuse節點融合。
參照【例52】的思路,我要將三個角的點往下移動,然後參照XZ平面做鏡像對稱。所以先要用group節點將現有的點進行編組。這裡總共只有四個點,編號為0-3,我分別設置了兩組,直接用點的編號來設置。一組是@ptnum ==0-2,一組是@ptnum == 3(中心),前者對應硫(S)原子,後者對應鉬(Mo)原子。ptnum表示點的編號,前面加@是調用的寫法。==是數學中相等的意思。
後面transform的時候只需要標明group,就可以只影響組內的對象。
然後是鏡像、移動、複製(參照筆記005中的石墨烯),得到類似蜂窩狀的分布。
最後整體移至中心位置時又用到了bbox表達式,只是這裡的字符串應該是copy3節點("../copy3")了。本例中我用的複製方法不是很快捷,最後移動位置時會有些偏差,這裡translate的x值和z值我分別設的是-bbox("../copy3",D_XMAX)*0.5+0.125*sqrt(3)和-bbox("../copy3",D_ZMAX)*0.5+0.25,後面加的數值是基於單元尺寸的微調。
再次用fuse節點將位置相同的點融合在一起,然後就可以用copy to points節點在對應的點位置拷貝原子小球了。雖然經過了多次複製和融合,但最初的點的編組仍然保留了下來,所以拷貝時仍可選擇target points為group1或者group2。分別拷貝得到S原子和Mo原子。

至於化學鍵我原本是想用提取邊的方法來做,但沒搞定。所以用了個比較笨的辦法,先用add節點創建兩點的連線(兩點的坐標按照前面的參數來),然後旋轉複製三個,之後鏡像、多次複製得到陣列均用前面一樣的節點。

調整CONTROLLER節點的參數,檢查下模型的變化是否有問題,以及還有哪些地方可以優化。
【往期繪圖教程匯總】
C4D科研繪圖系列教程
C4D科研模型100例
Grasshopper科研繪圖系列
Diamond系列教程
Houdini學習筆記系列
3D科研繪圖往期教程精選
PPT繪圖系列
思斐邇(Sphere)——溝通科學與藝術的橋樑。
杭州思斐邇科技有限公司長期專注於科學可視化領域,專業提供科研圖像設計和科研動畫製作等服務。公司擁有一支專業的碩博團隊,涵蓋生物、化學、材料、美術設計等,具有深厚的科學和藝術底蘊。自2016年以來已為全球上百家高校和科研機構提供設計服務,包括中科院、MIT、Stanford、ETH Zurich、EPFL、清華、北大、Cornell等,蜚聲海內外。公司秉持以圖像詮釋思想,用技術創作藝術的宗旨,作品被Science、Nature、Cell、JACS、Angew等期刊選用,並受邀為其製作動畫。為了更好地服務科研工作者,公司還長期開設科研繪圖培訓課。更有國內最大的科研作圖教學公眾號「3D科研繪圖」和答疑社群,為大家提供詳細的教程和答疑諮詢。曾為浙江大學、復旦大學、武漢大學、同濟大學、上海科技大學、中科院大連化物所等單位提供專業作圖講座和培訓,線上線下總受眾數超十萬人。
鑽石舞台 發表在 痞客邦 留言(0) 人氣()