Arnold for C4D 15 【材質(zhì)(九)】User Date Shader

開講之前,先普及一點(diǎn)小知識贱鄙,有關(guān)數(shù)據(jù)類型劝贸。
下面講到的數(shù)據(jù)類型rgb部分很好理解,float/int/string會有些不好懂逗宁。

float 是浮點(diǎn)型(浮點(diǎn)數(shù))映九,能記錄小數(shù)點(diǎn),很多信息變量都是用這個(gè)記錄的瞎颗;
int 是integer件甥,整數(shù),你可以簡單理解為不含小數(shù)點(diǎn)哼拔;
vector 向量引有,其實(shí)就是三個(gè)float組成的(三個(gè)方向xyz);
string 字符串管挟,就是文本信息;
所以float to vector就是需要用三個(gè)float組裝一個(gè)vector轿曙。

User Date Shader也是個(gè)神奇的著色器。當(dāng)為多個(gè)模型添加同一種材質(zhì)時(shí)僻孝,利用User Date可以使這多個(gè)模型產(chǎn)生不一樣的變化,比如不一樣的顏色守谓、高光穿铆、漫反射等,也就是說斋荞,User Date可以允許一種材質(zhì)擁有多種變化荞雏。

圖中三個(gè)模型使用的是同一種材質(zhì)

User Date Shader中有5個(gè)節(jié)點(diǎn),控制不同元素:

下面我們來分別講解一下這幾個(gè)節(jié)點(diǎn)的用法。

節(jié)點(diǎn)中的 【int(integer)】/【rgb】/【rgba】/【string】凤优,指數(shù)據(jù)類型悦陋,不同數(shù)據(jù)類型能夠控制不同屬性,通過后面的實(shí)例運(yùn)用會比較好理解筑辨,前面的參數(shù)介紹了解即可(有些可能不太好理解俺驶,可自動(dòng)略過)。

User_data_float

Float [浮點(diǎn)數(shù)]棍辕,在計(jì)算機(jī)科學(xué)中暮现,浮點(diǎn)是一種對于實(shí)數(shù)的近似值數(shù)值表現(xiàn)法,這種運(yùn)算通常伴隨著因?yàn)闊o法精確表示而進(jìn)行的近似或舍入楚昭。
因此栖袋,此節(jié)點(diǎn)可以用來控制材質(zhì)的鏡面反射(高光)等模糊數(shù)據(jù)(即使不用整數(shù)也可以表示的數(shù)據(jù))。

User_date_float屬性菜單
  • 【Attribute】從當(dāng)前曲面著色點(diǎn)中讀取 float value[浮點(diǎn)值]抚太。
  • 【Default】具有指定名稱的用戶數(shù)據(jù)不可用時(shí)塘幅,自動(dòng)輸出一個(gè)可用值。
User_data_int

Integer [整數(shù)]尿贫,在計(jì)算機(jī)科學(xué)中晌块,整數(shù)的概念指數(shù)學(xué)上整數(shù)的一個(gè)有限子集它也稱為整數(shù)數(shù)據(jù)類型,或簡稱整型數(shù)帅霜、整型匆背。通常是程序設(shè)計(jì)語言的一種基礎(chǔ)數(shù)據(jù)類型,例如java及C編程語言的int 數(shù)據(jù)類型然而這種基礎(chǔ)數(shù)據(jù)類型只能表示有限的整數(shù)身冀,其范圍受制于計(jì)算機(jī)的一個(gè)字組所包含的比特?cái)?shù)所能表示的組合總數(shù)钝尸。(維基百科抄的

比如幾個(gè)人/幾盞燈。搂根。珍促。就要用整數(shù)來表示,不能說有1.5個(gè)人剩愧。(記得小學(xué)應(yīng)用題猪叙,有道題算人數(shù),我居然算出了小數(shù)點(diǎn)仁卷,老師說我把人砍成兩半了穴翩。。锦积。)

User_date_int屬性菜單
  • 【Attribute】從當(dāng)前曲面著色點(diǎn)中讀取integer value[整數(shù)值]芒帕。
  • 【Default】具有指定名稱的用戶數(shù)據(jù)不可用時(shí),自動(dòng)輸出一個(gè)可用值丰介。
User_data_rgb

此節(jié)點(diǎn)可控制材質(zhì)的RGB色彩背蟆。

User_date_rgb屬性菜單
  • 【Attribute】從當(dāng)前曲面著色點(diǎn)中讀取RGB顏色鉴分。
  • 【Default】具有指定名稱的用戶數(shù)據(jù)不可用時(shí),自動(dòng)輸出一個(gè)可用值带膀。
User_data_rgba

此節(jié)點(diǎn)可控制材質(zhì)的RGB色彩以及透明度志珍。

User_date_rgba屬性菜單
  • 【Attribute】從當(dāng)前曲面著色點(diǎn)中讀取RGB顏色值以及Alpha值(透明度)。
  • 【Default】具有指定名稱的用戶數(shù)據(jù)不可用時(shí)垛叨,自動(dòng)輸出一個(gè)可用值伦糯。
User_data_string

emmmm....這個(gè)咋說呢....請看后面的實(shí)例吧。

User_date_string屬性菜單
  • 【Attribute】從當(dāng)前曲面著色點(diǎn)中讀取字符串点额。
  • 【Default】具有指定名稱的用戶數(shù)據(jù)不可用時(shí)舔株,自動(dòng)輸出一個(gè)可用值。

這幾個(gè)節(jié)點(diǎn)的屬性都很簡單还棱,翻來覆去就倆载慈,但是人家卻可以實(shí)現(xiàn)很炫酷的效果呢~。

舉幾個(gè)栗子:

NO.1

User_data_float + User_data_rgb

準(zhǔn)備好的場景中有三個(gè)模型珍手,賦予了同一種材質(zhì)办铡,此例子中要實(shí)現(xiàn)這三個(gè)模型產(chǎn)生不同顏色以及鏡面反射。

所用場景

① 新建一個(gè)標(biāo)準(zhǔn)材質(zhì)賦予場景中三個(gè)模型琳要;

② 打開標(biāo)準(zhǔn)材質(zhì)網(wǎng)絡(luò)編輯器寡具,新建 User_data_rgb 節(jié)點(diǎn),并連接到standard_surface>Main>Base>Color;默認(rèn)顏色為黑色稚补;

③ 為user_data_rgb的屬性[Attribute]輸入一個(gè)恰當(dāng)?shù)拿Q(可以任意輸入童叠,為了便于調(diào)用,最好使用有意義的名稱)课幕,此處我們要修改對象基本顏色厦坛,可命名為bcolor


④ 需要為場景中的模型添加同樣的User data——名稱為bcolor,數(shù)據(jù)類型為color乍惊。我們先來為場景中的球體添加:

選中該模型→打開Uaer data>Add User Data...→會自動(dòng)跳出Manage User Data對話框(如下圖)
Name:bcolor / Data Type:Color杜秸,點(diǎn)擊OK,確認(rèn)

⑤ 現(xiàn)在我們可以在球體模型的屬性欄中看到 User Data的屬性了润绎,將顏色修改成“原諒綠”(不喜歡原諒綠的可以改成別的 嘻嘻)撬碟,運(yùn)行 IPR Window就可以看到顏色變化了:

其余兩個(gè)模型依舊是黑色,這是由節(jié)點(diǎn)的默認(rèn)顏色定義的

⑥ 將設(shè)置好的User Data直接復(fù)制到另外兩個(gè)模型中:鼠標(biāo)放到 bcolor上(注意莉撇,是放到這個(gè)字上面呢蛤,不是色塊上,放到色塊上會調(diào)出其他屬性菜單)→ 右鍵>User Interface>Copy User Data Interface:

先來粘貼到玻璃杯:選中Glass模型→單擊User Data → 選擇Paste User Data Interface:

選中Paste User Data Interface之后稼钩,會自動(dòng)跳出Manage User Data對話框顾稀,單擊bclor,可以在右側(cè)的屬性欄中看到坝撑,數(shù)據(jù)已經(jīng)粘貼過來:

單擊OK静秆,完成復(fù)制;

重復(fù)一次巡李,將數(shù)據(jù)粘貼到另外一個(gè)模型中即可抚笔;

⑦ 現(xiàn)在就可以像調(diào)節(jié)球體模型顏色一樣,來調(diào)節(jié)其他兩個(gè)模型了侨拦,設(shè)置你喜歡的任意顏色殊橙,設(shè)置完成后,就可以在IPR Window中看到結(jié)果啦:

可以在材質(zhì)欄中看到狱从,真的只使用了這一個(gè)材質(zhì)膨蛮,童叟無欺

至此,你已經(jīng)學(xué)會了一個(gè)材質(zhì)多種顏色表現(xiàn)大法季研。

下面敞葛,我們來改變一下鏡面反射權(quán)重(Specular Weight):

接以上步驟:
①' 打開材質(zhì)網(wǎng)絡(luò)編輯器→新建user_data_float節(jié)點(diǎn)→連接到standard_surface>Main>Specular>Weight → Attribute:sweight:

②' 同改變顏色一樣,這里我們也要給模型賦予相同的用戶屬性:選中要添加的模型→屬性欄中選擇User Data>Add User Data(和上面添加用戶數(shù)據(jù)一樣樣的)与涡;

③' 自動(dòng)跳出Manage User Data對話框惹谐,修改:
Name:sweight [名稱:sweight] /
Data Tyupe:Float [數(shù)據(jù)類型:浮點(diǎn)] /
Interface:Float Slider [控制界面:浮點(diǎn)滑塊] /
Unit:Real [單位:實(shí)數(shù)] /
Step:0.05 [步幅:0.05] /
Max:1 [最大值:1]


這地方之所以這么改,是因?yàn)槲覀儸F(xiàn)在用它來控制Specular Weight驼卖,參數(shù)設(shè)置就要和Specular Weight的屬性保持一致氨肌,比如Specular Weight的最大值是1,因此將Default Value Max設(shè)置為1酌畜。

同上面復(fù)制方法一樣怎囚,將設(shè)置好的用戶數(shù)據(jù)復(fù)制給其他兩個(gè)模型。

現(xiàn)在我們就可以愉快的來控制模型的Specular Weight啦~


童叟無欺~~

User_data_rgbaUser_data_rgb 差不多桥胞,只是多了個(gè)alpha通道恳守,我就不過多演示了,大家可以多試一下埠戳,很簡單井誉。



NO.2

User_data_int

這個(gè)節(jié)點(diǎn)用的頻率很低,我自己也不常用整胃,這里稍微講一下颗圣,大家可以自由拓展更多用法。
本顆栗子屁使,我們將來展示如何用User_data_int控制Switch rgba [rgba開關(guān)]

所用節(jié)點(diǎn):flat / switch_raba / user_data_int

① 打開準(zhǔn)備好的場景在岂,場景很簡單,包含演示用的一個(gè)球體蛮寂,一個(gè)立方體蔽午,一個(gè)六面體;
② 新建一個(gè)標(biāo)準(zhǔn)材質(zhì) standard_surface酬蹋,并賦予給球體和立方體及老、六面體抽莱;
③ 打開標(biāo)準(zhǔn)材質(zhì)的網(wǎng)絡(luò)編輯器 Shader Network Editor,新建switch_rgba節(jié)點(diǎn)骄恶,連接到standard_surface>Main>Base>Clor;


④ 新建三個(gè)falt節(jié)點(diǎn)食铐,分別重命名為pink/orange/blue(自由命名,最好是有意義的僧鲁,否則幾季都忘了虐呻,此處我使用顏色來命名),將flat顏色修改為對應(yīng)顏色寞秃,分別連接到switch_rgba>Default>Input1/2/3:


⑤ 此時(shí)用Switch_rgba已經(jīng)可以控制變換設(shè)置好的flat顏色:

別著急 斟叼,這還不是我們的最終目的,請繼續(xù)往下看

⑥ 新建User_data_int節(jié)點(diǎn)春寿,連接到 switch_rgba>Default>Index,并將user_data_int節(jié)點(diǎn)的 Attribute命名為cswitch:


⑦ 為模型添加User Data朗涩,方法同上;點(diǎn)擊Add User Data之后自動(dòng)跳出Manage User Data對話框堂淡;

修改屬性:
Name:cswitch [名稱:cswitch] /
Data Tyupe:Integer [數(shù)據(jù)類型:整數(shù)] /
Interface:Quicktab Radio [控制界面:快速標(biāo)簽] /
Separator:Cycle Option:1馋缅;pink / 2;orange / 3绢淀;blue[分割器:循環(huán)選項(xiàng)]

Cycle Option值對應(yīng)flat萤悴,“1;pink”指命名為pink的flat控制Input1接口

設(shè)置完成后皆的,將User Data復(fù)制給其他兩個(gè)模型覆履,就可以在模型的 User Data屬性中看到設(shè)置好的快速標(biāo)簽了:


⑧ 接下來是見證奇跡的時(shí)刻、费薄、硝全、、開始愉快的改變模型顏色吧~

我變~我變~我變變變~

以上楞抡,User_data_int 》》》》OVER



NO.3

User_data_string

此節(jié)點(diǎn)有一種大規(guī)模生化武器既視感 》》》》》

接下來伟众,我們將運(yùn)用User_data_string快速實(shí)現(xiàn)這個(gè)效果↓

請自動(dòng)忽略噪點(diǎn)

使用的場景也是很簡單的場景,準(zhǔn)備了10個(gè)球召廷,以及10張材質(zhì)貼圖↓

場景中包含10個(gè)編組的球體凳厢,已經(jīng)新建一個(gè)standard_surface,并賦予給了10個(gè)球體模型
準(zhǔn)備好的材質(zhì)貼圖,注意貼圖文件儲存路徑竞慢,后面會用到

接下來是展示技術(shù)的時(shí)刻:

① 打開standard_surface的Shader Network Editor先紫,新建Layer_rgba節(jié)點(diǎn),連接到standard_surface>Main>Base>Color;

② 新建utility節(jié)點(diǎn)筹煮,連接到 layer_rgba節(jié)點(diǎn)Main>Layer2>Input遮精,調(diào)整utility參數(shù),此處我們用utility控制球的底色败潦,因此設(shè)置如下:


③ 新建image節(jié)點(diǎn)本冲,連接到 layer_rgba節(jié)點(diǎn)Main>Layer1>Input准脂,image會自動(dòng)跳出載入貼圖對話框,選擇取消即可眼俊,此處我們要使用user_data_string來控制多張貼圖意狠;image各項(xiàng)參數(shù)保持默認(rèn)即可粟关;

④ 新建user_data_string節(jié)點(diǎn)疮胖,連接到 image節(jié)點(diǎn)Image attribute>Image name,并為string設(shè)置Attribute闷板,此處我使用的是 numtex

命名規(guī)則同前面例子澎灸,可以隨意命名,最好是有意義的名字

P.S.我在使用是user_data_string的時(shí)候遮晚,最初沒有設(shè)置Default的值性昭,就一直出現(xiàn)渲染錯(cuò)誤,剛開始以為是對象的user_data路徑或者名字含有特殊字符县遣,但是都不是糜颠,怎么修改都還是出現(xiàn)錯(cuò)誤提示: ERROR| [texturesys] Invalid image file"",后來給Default添加值以后萧求,就奇跡般的變好了其兴,在Arnold官方論壇問開發(fā)大神們,也沒能給出一個(gè)合理的解釋ㄟ( ▔, ▔ )ㄏ我猜這是個(gè)bug夸政,噓——
user_data其他節(jié)點(diǎn)都不用添加Default可以直接使用元旬。真是個(gè)神奇的節(jié)點(diǎn),反正守问。匀归。。如果你也遇到了同樣的問題耗帕,添加一個(gè)Default就好了穆端。

全部節(jié)點(diǎn)連接邏輯如下圖:


⑤ 接下來,可以暫時(shí)不用管節(jié)點(diǎn)了仿便,回到C4D主界面体啰,為10個(gè)球體對象分別添加user_data,添加方法同前面例子相同,參數(shù)設(shè)置如下:


添加成功之后探越,便可以在對象的屬性欄看到user_data:

numtex輸入框里輸入的是準(zhǔn)備好的貼圖路徑狡赐,路徑中不要出現(xiàn)中文,容易出現(xiàn)錯(cuò)誤

P.S. 貼圖路徑查找方法:在文件夾中選擇你要用的那張圖片钦幔,右鍵>屬性枕屉,在屬性對話框中直接復(fù)制路徑,注意鲤氢,此處復(fù)制的只有路徑搀擂,沒有該圖片名稱西潘,在user_data輸入的時(shí)候要自己加上圖片名稱,注意用 ‘ \ ’ 分割哨颂。

⑥ 將user_data值復(fù)制給剩下的9個(gè)對象喷市,numtex路徑對應(yīng)之前準(zhǔn)備好的10張數(shù)字貼圖路徑,例如Sphere.1對應(yīng)貼圖num-01.png威恼,就將numtex路徑改為num-01.png的路徑品姓,Sphere.2對應(yīng)貼圖num-02.png,Sphere.3對應(yīng)貼圖num-03.png....以此類推箫措,如果前面貼圖名稱設(shè)置的很統(tǒng)一缀蹄,就只需要修改路徑最后的數(shù)字即可:

⑦ 以上步驟都完成之后挑格,運(yùn)行IPR Window就可以看見大概的樣子了境钟;

⑧ 最后再調(diào)整貼圖UV漱挚,調(diào)整到自己覺得滿意的數(shù)值,就大功告成啦~

選擇貼圖工具弦牡,選中要調(diào)整的材質(zhì)友驮,調(diào)出貼圖屬性標(biāo)簽




敲黑板:
以上參數(shù),包括最終實(shí)現(xiàn)的這個(gè)效果驾锰,只是為了給大家演示user_data_string的用法卸留,大家可以自由嘗試各種效果,比如你可以嘗試怎么給一副象棋用user_data_string添加貼圖稻据,等等等艾猜。
請盡情發(fā)揮自己的想象力并多動(dòng)手實(shí)踐。



以上~
Good good study捻悯!Day day up匆赃!

版權(quán)所有,禁止私自轉(zhuǎn)載今缚。
轉(zhuǎn)載請私信算柳。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市姓言,隨后出現(xiàn)的幾起案子瞬项,更是在濱河造成了極大的恐慌,老刑警劉巖何荚,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件囱淋,死亡現(xiàn)場離奇詭異,居然都是意外死亡餐塘,警方通過查閱死者的電腦和手機(jī)妥衣,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人税手,你說我怎么就攤上這事蜂筹。” “怎么了芦倒?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵艺挪,是天一觀的道長。 經(jīng)常有香客問我兵扬,道長麻裳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任周霉,我火速辦了婚禮掂器,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘俱箱。我一直安慰自己,他們只是感情好灭必,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布狞谱。 她就那樣靜靜地躺著,像睡著了一般禁漓。 火紅的嫁衣襯著肌膚如雪跟衅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天播歼,我揣著相機(jī)與錄音伶跷,去河邊找鬼。 笑死秘狞,一個(gè)胖子當(dāng)著我的面吹牛叭莫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播烁试,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼雇初,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了减响?” 一聲冷哼從身側(cè)響起靖诗,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎支示,沒想到半個(gè)月后刊橘,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡颂鸿,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年促绵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡绞愚,死狀恐怖叙甸,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情位衩,我是刑警寧澤裆蒸,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站糖驴,受9級特大地震影響僚祷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜贮缕,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一辙谜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧感昼,春花似錦装哆、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至宵溅,卻和暖如春凌简,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背恃逻。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工雏搂, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寇损。 一個(gè)月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓凸郑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親润绵。 傳聞我的和親對象是個(gè)殘疾皇子线椰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Unity shader 官網(wǎng)文檔全方位學(xué)習(xí)(一)What?? Shader,看起來好高級的樣子尘盼,是的憨愉,這是Uni...
    狼之獨(dú)步閱讀 6,005評論 0 12
  • <轉(zhuǎn)>我也忘了轉(zhuǎn)自哪里,抱歉,感謝原作者 什么是Shader Shader(著色器)是一段能夠針對3D對象進(jìn)行操作...
    星易乾川閱讀 5,584評論 1 16
  • 這是一個(gè)真實(shí)的故事,故事名稱我們叫它做“一碗湯面”卿捎。 這個(gè)故事是17年前的12月31日配紫,也就是除夕夜,發(fā)生在日本札...
    何須灑酒閱讀 339評論 0 3
  • 最近植袍,佛系生活惧眠,突然就火了,感覺無欲無求似乎是一種很好的生活狀態(tài)于个,當(dāng)生活沒有目標(biāo)氛魁,沒有方向的時(shí)候,安逸于是從心...
    yyfyyf閱讀 302評論 0 0
  • 今日心得:突發(fā)奇想的拍照。感覺還是很有創(chuàng)意的
    然谷中醫(yī)閱讀 164評論 0 0