最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Blender Geometry Node 程序化建模入門

2023-02-22 02:16 作者:緊果唄  | 我要投稿

?? Geometry Node Editor

正反面材質 - 著色器設置
正反面材質 - 幾何節(jié)點修改器

幾何節(jié)點編輯器用于編輯由 *幾何節(jié)點修改器* 使用的節(jié)點編組。該節(jié)點編組可定義許多操作,以修改一個物體的幾何信息。這是非常特殊的一個修改器,是程序化幾何生成器。從實現(xiàn)上來看,幾何修改器作用于 GPU 渲染流水線的 Vertex Shder 編程階段,通過修改頂點數(shù)據(jù)產(chǎn)生各種幾何體。也作用于 Fragment Shader,給幾何體進行材質的處理。


使用幾何修改器,可以編輯以下內(nèi)容:

  • - Meshes

  • - Curves

  • - Point Clouds

  • - Volumes

  • - Instances

Spreadsheet 電子表格編輯器提供了數(shù)據(jù)圖表,節(jié)點所有幾何體的數(shù)據(jù),包括頂點、邊線、面片等數(shù)據(jù)。此外,幾何節(jié)點上提供了 Socket Inspection 和 Node Warnings 提示功能,通過鼠標懸停在端口,或者節(jié)點右上角的警告圖標,就會顯示相應的提示信息,幫助了解節(jié)點的工作狀態(tài)。


另外,還可以使用以下兩個覆蓋層,通過右上角 Node Editor Overlays 彈出菜單設置:

  • - Node Timings Overlay 顯示上一次計算節(jié)點組時節(jié)點執(zhí)行所需的時間。

  • - Named Attributes Overlay 顯示節(jié)點使用的命名屬性。

幾何修改器有任意輸入、輸出端,Node Group 管理,輸入輸出分別在其它幾何修改器中連接使用,引用其它幾何修改器時,通過 Group 節(jié)點分組下獲取相應引用節(jié)點。


在幾何節(jié)點編輯器中,任意節(jié)點相連成為一棵節(jié)點樹,或者稱為節(jié)點組??梢杂腥我獾墓?jié)點組,并且通過輸入、輸出組節(jié)點進行數(shù)據(jù)傳遞,并且輸出的屬性可供材質編輯器使用。在幾何修改器屬性面板中,給輸出屬性命名,Output Attributes 中指定名稱。然后,在材質著色器中使用 **Attribute** 節(jié)點,輸入幾何節(jié)點提供的屬性名,并選擇 Geometry 類型即可以使用屬性數(shù)據(jù)。


幾何修改器中設置的節(jié)點樹可以標記為資產(chǎn)以方便復用,在節(jié)點組的下拉選擇按鈕上使用右鍵彈出菜單操作。


注意,因為節(jié)點的端口在連接時,會自動根據(jù)連接時使用的數(shù)據(jù)類型確定端口的數(shù)據(jù)類型,如果后繼有變更,可以在側欄工具面板中管理設置,Sidebar - Group - Inputs/Outputs。


通過將字段端口連接到 Group Output,可以從節(jié)點樹中任何節(jié)點的字段輸出創(chuàng)建自定義屬性。必須在組節(jié)點的輸出屬性中指定屬性的域。注意,這不適用于實例化數(shù)據(jù),Instanced Data。比如,可以直接將 Curve 或 Mesh Primitive 中提供的基本幾何體連接到輸出節(jié)點的 Geometry,就會忽略輸入,生成所設置的幾何體。


首次在修改器中使用節(jié)點組時默認使用的屬性名稱在節(jié)點組輸出面板中定義。


幾何編輯器中,F(xiàn)iled 字段是函數(shù),可以處理任意的輸入得到一個輸出值。幾何節(jié)點按端口類型差別分為三種:

  • ?**Dataflow Nodes**:包含幾何體輸入/輸出的節(jié)點,包含圓圓端口 Circle;

  • ?**Function Nodes**: 執(zhí)行函數(shù)運算的節(jié)點,包含棱形輸入輸出端口 Diamond;

  • ?**Input Nodes**: 為其它節(jié)點提供數(shù)據(jù)的節(jié)點;

其中,連接虛線的帶點棱形表示 varying input,可以輸入多種數(shù)據(jù)類型。


一個常見的誤解是,同樣的 Filed 節(jié)點連接產(chǎn)生同樣的輸出!但實際不是,隨著場景數(shù)據(jù)的改變,節(jié)點在不同時間下輸出的值是可以不相同的。

nodes fields flow

屬性 Attributes 是一個通用術語,描述幾何數(shù)據(jù)塊中每個元素存儲的數(shù)據(jù)。是幾何節(jié)點中非常重要的概念。例如,每個頂點可以關聯(lián)數(shù)值或者向量,通過將值連接到輸出節(jié)點來更改屬性,節(jié)點也可以更改特定屬性的值。

屬性有多種形式及數(shù)據(jù)類型:

  • ?Named Attributes

  • ?Anonymous Attributes

  • ?Built-In Attributes

  • ?Custom Attributes


屬性域 Attribute Domains 是指屬性對應的幾何元素類型。了解屬性的域很重要,它定義了如何在節(jié)點和著色中進行插值和使用。


可以使用電子表格編輯器來確定屬性的域,Spreadsheet 列表中顯示的是幾何節(jié)點當前輸出的數(shù)據(jù)。


各種屬性域參考如下:

  • ?**Point domain** 關聯(lián)空間中一個位置的屬性,有以下三種:

    • ?Vertices of a mesh

    • ?Points of a point cloud

    • ?Curve control points

  • ?**Edge domain** 關聯(lián)面片的邊線的屬性。

  • ?**Face domain** 關聯(lián)網(wǎng)格的面片的屬性。

  • ?**Face Corner domain** 關聯(lián)網(wǎng)格面片角位的屬性,如 UV 映射屬性。

  • ?**Spline domain** 關聯(lián)一組樣條控制點的屬性。

  • ?**Instance domain** 幾何實例數(shù)據(jù)屬性,只用于幾何節(jié)點。

不同域的屬性會自動插值轉換。例如 Position Node 連接到 Set Material Node 節(jié)點的選擇輸入端口,屬性值從 Point 域插值到 Face 域。域轉換通常取平均值,但布爾數(shù)據(jù)類型屬性具有特殊的插值規(guī)則,比如Point 域到 Edge,當邊線兩個頂點都選中時,則轉換結果等于選中邊線。


除了存儲網(wǎng)格或曲線等真實數(shù)據(jù)外,幾何體可以存儲實例,所謂實例 Instance 即引用原始數(shù)據(jù),而不是復制出新的實際數(shù)據(jù)。這些實例本身可以引用更多幾何體、對象或集合。實例化目的是在結果中包含更多的幾何圖形,而避免復制實際數(shù)據(jù)。這是因為與復制數(shù)據(jù)時相比,Cycles 這樣的渲染器的可以更好地處理只是位置上有差別的相同幾何數(shù)據(jù)。


簡單的應用示范,ID Marker,給一個 Cube 各個頂點添加 ID 序號標記顯示:

  • ?首先,創(chuàng)建一個 String to Curve,將字母作為序號字符串輸入到 String 屬性中使用;

  • ?通過 Instance on Point 將序列字符串實例化到幾何體的頂點上。

  • ?連接輸入節(jié)點 Geometry 到 Points;

  • ?連接字符串曲線節(jié)點 Curve Instance 到 Instance;

  • ?連接幾何體頂點序號屬性到 Pick Instance,可以使用 **Index Node** 或 **ID Node**;

  • ?因為字符串生成的曲線會按序號出現(xiàn)偏移位置,可以通過 Set Postion 將每個字符歸位。

ID Marker
ID Marker Shader

Pick Instance 輸入為 0 表示不做選擇,即選擇所有,可以使用 **Math** 節(jié)點進行數(shù)學運算處理。


書本紙張雙面貼圖演示:

  • ?創(chuàng)建 UV 貼圖,勾選 Tile 啟用拼貼貼圖;

  • ?也可以通過側欄工具創(chuàng)建 Image - Source - UDIM Tiles,并對 1001 貼圖執(zhí)行 Fill Tile;

  • ?在 UDIM Tiles 列表中,點擊 + 號添加分塊,指定 Count 為紙張的數(shù)量,即創(chuàng)建相應的貼圖拼塊數(shù)量;

  • ?在 Image 面板中點擊 Pick Image 右側的貼圖選選擇按鈕,從文件瀏覽器中選擇圖像文件;

  • ?著色器中連接紋理坐標、Mapping、Image Texture 使用紋理貼圖,通過調整 UV 坐標就可以使用 UDIM。

  • ?添加輸入節(jié)點 Geometry 獲取幾何數(shù)據(jù),使用 Backfacing 用來做正反面判斷,分別對應 0.0 和 1.0。

  • ?正面放偶數(shù)序號的貼圖,反而放奇數(shù)號的貼圖,需要在幾何節(jié)點編輯器提供相應的數(shù)據(jù)來驅動紋理坐標。

幾何節(jié)點編輯器中設置:

  • ?添加一個 Mesh - Grid 節(jié)點用于定義紙張的基本網(wǎng)格;

  • ?因為有多張紙,需要使用實例化 Instance on Points

  • ?為了將紙張實例化在一行、一列或一疊的形態(tài),可以使用 Mesh Line 節(jié)點給實例節(jié)點提供 Points 輸入;

  • ?為了給實例出來的網(wǎng)格設置不同的紙張貼圖,需要對其進行 Realise 真實化,這樣可以能進行材質設置;

  • ?注意,實例 Realize 之后會產(chǎn)生 Face Corner 屬性 uv_map,原本幾何體的坐標數(shù)據(jù)為 UVMAP

  • ?為了著色器能夠正確使用紙張的正反面貼圖,需要將網(wǎng)格體的 ID 輸出,索引屬性也可以;

  • ?在 Realize 后使用 Capture Attribute 捕捉幾何數(shù)據(jù),Value 連接一個 ID 屬性節(jié)點;

  • ?將捕捉到的 ID 屬性數(shù)據(jù)值連接到輸出節(jié)點,并在幾何修改器屬性面板中為其指定一個名稱,如 faceid。

注意,捕捉節(jié)點要設置為 **float** 類型和 **face** 屬性域,并且要保持和 Group Outputs 設置一致。否則在著色器中不能正確獲取屬性數(shù)據(jù),盡管捕捉節(jié)點中可以設置為 integer 數(shù)據(jù)類型,但輸出端口一定要設置為 float 類型。


使用 Transfer Attribute 節(jié)點也可以將面片 ID 輸出給著色器使用,但需要注意,其映射方式和屬性域的設置,與 Surface 輸入不匹配則不能正確獲取到面片 ID 值??梢允褂?Spreadsheet 數(shù)據(jù)表查看相應屬性域中是否有相應的數(shù)據(jù)輸出。


著色器使用 Attribute 讀取 uv_map 作為紋理貼圖坐標,以正確處理實例產(chǎn)生的幾何體貼圖。注意,UDIM 各個貼圖 UV 空間依次為 (0-1, 1-2, 2-3),遞增關系。在處理 UV 坐標時,只需要修改對應的分量即可,使用 Vector 合并節(jié)點。再與初始 UV 值相加,得到正確 UV 坐標。


面片 ID 從 0 開始計數(shù),為了將貼圖與正反面對應,可以按以下思路處理:

  • ?使用 Math Multiply 將 ID 加倍,這時,每個面片的正面顯示的是同為奇數(shù)偶數(shù)頁的貼圖;

  • ?使用 Backfacing 值,將其乘 -1 并且與上一步產(chǎn)生的值疊加起來,即可以實現(xiàn)兩面不同貼圖;

  • ?注意:渲染可能從背面開始,此時應該將乘數(shù) -1 改為 1。

新版本使用 Store Named Attribute 將屬性值保存為 2D Vector 類型以及 Face Corner 屬性域,并且命名為 uv。然后,在著色器中就可以通過紋理坐標讀取,并且輸出 UV,不需要再通過屬性節(jié)點。舊版本雖然可以覆蓋掉 UVMap,但是只能使用 3D Vector,所以并不能正確存儲 UV 坐標屬性值。


要自動創(chuàng)建貼圖并加載貼圖到相應的位置,需要按以下兩種規(guī)則之一命令貼圖文件,每行最多 10 張圖:

<UDIM>: A 4-digit notation calculated as 1001 + u-tile + v-tile * 10.

<UVTILE>: A notation defined as u(u-tile + 1)_v(v-tile + 1).

例如,

monster.<UDIM>.png? ?will load/save files like monster.1021.png etc.

monster.<UVTILE>.png will load/save files like monster.u1_v3.png etc.


使用以下 PowerShell 腳本可以對 JPG 文件進行序列化命名:


幾何編輯器提供的節(jié)點類型非常豐富,涉及曲線、網(wǎng)格、材質等各個方面,總體可以將它們分成三類型,使用它們進行程序化建模:


功能處理類型:

  • 01.?Input Nodes 幾何節(jié)點輸入;

  • 02. Utilities Nodes 工具類節(jié)點;

  • 03. Vector Nodes 向量運算處理;

  • 04. Volume?Nodes 體積處理;

  • 05. Instances Nodes 實例處理節(jié)點;

  • 06. Output Nodes 幾何節(jié)點輸出;

幾何體、網(wǎng)格、曲面處理類型:

  • 01. Geometry Nodes 幾何處理節(jié)點;

  • 02. Point Nodes

  • 03. Curve Nodes

  • 04. Curve Primitive Nodes 基本曲線節(jié)點;

  • 05. Curve Topology Nodes 曲線拓撲節(jié)點;

  • 06. Mesh Nodes

  • 07. Mesh Primitive Nodes 基本網(wǎng)格幾何體;

  • 08. Mesh Topology Nodes 網(wǎng)格拓撲節(jié)點;

紋理處理類型:

  • 01. Color Nodes 顏色處理;

  • 02. Material Nodes 材質處理節(jié)點;

  • 03. Text Nodes 字符串、文本紋理處理;

  • 04. Texture Nodes 紋理生成;

  • 05. UV Nodes 貼圖坐標處理;

幾何節(jié)點中不支持創(chuàng)建材質,需要先創(chuàng)建好材質,再通過 **Material** 節(jié)點獲取相應的材質,以及使用材質處理節(jié)點對使用不同材質的面片進行處理。


參考


Blender Geometry Node 程序化建模入門的評論 (共 條)

分享到微博請遵守國家法律
永川市| 镇远县| 醴陵市| 永济市| 金坛市| 普兰店市| 和田市| 彰化县| 游戏| 贵港市| 德令哈市| 台中县| 迁西县| 望江县| 彝良县| 清徐县| 和林格尔县| 福贡县| 高碑店市| 青川县| 清流县| 肥西县| 江永县| 崇阳县| 渝中区| 外汇| 南雄市| 同德县| 平原县| 城步| 刚察县| 甘肃省| 鹰潭市| 新邵县| 永嘉县| 岳阳县| 辛集市| 乌拉特后旗| 那曲县| 襄城县| 昌都县|