Houdini學習筆記007
今天我們來聊一聊對象的屬性(Attribute)。
屬性是學習Houdini過程中繞不過去的一個概念,就像我們每個人都有名字、性別、年齡、身高、職業(yè)等一樣,Houdini中的對象屬性也賦予了對象獨有的特征。當然,基本的屬性是通用的,比如坐標、顏色等。這些常用屬性在Houdini中有專門的符號名稱來指代,例如P表示坐標、N表示法線、Cd表示顏色,等等。
在使用過程中,如果需要調(diào)用屬性或者對屬性進行重新設置,了解這些基本名稱就非常有必要。例如我們創(chuàng)建一個“sphere”節(jié)點,在節(jié)點上點擊“i”(Node information)就可以顯示節(jié)點的信息(或者按鼠標中鍵可即時查看)。在節(jié)點信息中,節(jié)點所包含的屬性都會列出,比如這里的“1 Point Attrs?P?3flt (Pos)”就表示點的坐標信息,“3flt”的意思是屬性的類型是浮點矢量(3階)。

屬性的查看一般習慣借助于“Geometry Spreadsheet”窗口,可以在任何一個窗口名稱處單擊鼠標右鍵,選擇“Inspectors>Geometry Spreadsheet”選項。或者直接按快捷鍵【Alt+8】。按照學習筆記005的內(nèi)容可以將該窗口保存為默認設置。

如果想知道Houdini中的幾何對象都有哪些屬性,可以單擊【Help】菜單中的“Contents”選項,打開幫助窗口。搜索“attribute”可以找到Geometry attributes,即幾何體屬性。

每個屬性的符號名稱、數(shù)據(jù)類型以及詳細的解釋都可以找到。

屬性可以添加給對象的點(point)、頂點(vertex)、面(primitive)或整體(detail)。這里需要注意的是點和頂點的區(qū)別,如下圖所示。點即一般意義上的模型結(jié)構(gòu)點,只要是連接在一起就屬于同一個頂點。但頂點則是相對于每個面而言的,所以頂點的數(shù)量通常都多于點的數(shù)量。

一般節(jié)點默認的自帶屬性只有點的坐標,只在需要用到其他屬性時我們才會添加相應的節(jié)點。比如用“normal”節(jié)點添加法線,在其Construct(構(gòu)造)參數(shù)下,“Add Normals to”選擇Points即表示將法線添加給點。于是在“Geometry Spreadsheet”窗口我們就可以看到點的屬性中多出了N[x]、N[y]和N[z]的選項。

在“normal”節(jié)點的信息中,我們也可以看到Point Attrs中多出了“?N?3flt (Nml)”,即法線屬性。點擊“N”可以在視圖中看到法線,再次點擊則隱藏顯示。法線除了添加給點之外,也可以添加給頂點或面,大家可以自己比較其區(qū)別。

更一般的,可以用“attribute create”節(jié)點來給對象創(chuàng)建任何可能的屬性。比如原來的點只有位置、編號、法線等信息,現(xiàn)在我可以讓它擁有奇偶性、隨機值、配位數(shù)(可連接邊的數(shù)量)等原本沒有的屬性。例如在下圖的“attribute create”節(jié)點中,添加名為“pscale”(pscale是預設的屬性名稱,表示尺寸縮放值,軟件可直接識別調(diào)用。如果是自己設置的其他名稱,還需要告訴軟件調(diào)用的方式)的屬性名稱,將其“Value”設置為“rand($PT)”,意為根據(jù)點的編號產(chǎn)生0~1之間的隨機數(shù)。然后就可以在“Geometry Spreadsheet”窗口看到點屬性中多出了pscale的選項,每個點的隨機數(shù)值都不相同。

在此基礎上,用“copy to points”節(jié)點在每個點的位置處拷貝一個球體,就可以自動繼承點的pscale屬性,得到隨機大小的拷貝結(jié)果。

屬性的創(chuàng)建是不受限制的,如果再用一個“attribute create”節(jié)點來設置點的顏色,屬性名稱為Cd。由于顏色是由R、G、B三個數(shù)值表示,所以類型“Type”應該為vector,“Value”中前三個數(shù)值均用隨機數(shù)值表示。注意rand($PT+1.1)中在$PT后加上1.1是為了讓隨機種子數(shù)有差異,否則每次得到的隨機數(shù)是相同的。

更高級的屬性設置還會用到“attribute wrangle”節(jié)點,?屬于VEX表達式內(nèi)容,對初學者不做要求。今天就寫這么多,感謝各位的閱讀,下回見!