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

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

[SD]___SubstanceDesigner節(jié)點改造_DS_Tile_Random

2020-10-09 13:30 作者:Game藝視界  | 我要投稿

今天是2020年10月09日星期五? ??

?正文共:4880字 44圖?預計閱讀時間13分

作者

Daniel_Swing

先看最終效果

概要

我在Substance Designer中創(chuàng)建了一個圖塊生成器節(jié)點,該節(jié)點可以同時在X和Y軸上創(chuàng)建不同大小的圖塊,而無需相交形狀,并且可以半可靠地避免在畫布上形成直縫。


用戶可以自定義在兩個軸上生成的圖塊數(shù)量,并更改隨機種子以生成不同的圖案。

該節(jié)點由一系列像素處理器和功能組成,這些像素處理器和功能可渲染圖案,并根據(jù)圖形的隨機種子而得出不同的結果。

背景

在Substance Designer中按程序創(chuàng)建不規(guī)則瓷磚圖案(如凡爾賽圖案)和其他類似圖案并不容易。

Substance Designer 2020.1.3中沒有可在X和Y軸上同時創(chuàng)建不規(guī)則圖塊大小的本機節(jié)點或功能,同時還避免了在紋理畫布上相交的形狀或接縫的直線對齊。

該項目的另一個原因是,我可以稍微玩一下像素處理器節(jié)點,并從中學習一兩個東西。


目標

該項目的目標是為用戶創(chuàng)建一種方式,以使其在X和Y軸上生成具有不同大小的圖塊/形狀,沒有相交的形狀,在畫布上沒有任何直縫的多種不同圖塊樣式。盡可能快地輸入。

  • 在X和Y軸上均具有大小不同的圖塊的多個不同圖案。

  • 沒有相交的形狀,只有實心正方形和矩形。

  • 在紋理的畫布上或邊緣沒有直縫。

  • 用戶控制的自動化,無需強制手動輸入。

  • 快速計算。

方法

在此說明了節(jié)點的結構-并沒有太多確切的節(jié)點到節(jié)點交互的細節(jié),而是描述了每個序列的作用以及如何幫助實現(xiàn)最終目標。

DS_Tile_Random節(jié)點使用多個像素處理器。由于像素處理器無法引用自身或遞歸自身,因此必須將幾個不同的像素處理器一起排序,以逐步實現(xiàn)最終模式。


浮點數(shù)1,-1和0經(jīng)常使用,因此它們在主圖中成為全局常數(shù),而不是在每個像素處理器中都具有實例常數(shù)。

隨機顏色:

一切始于每個像素的隨機灰度顏色

對于每個像素,請創(chuàng)建一個介于0和1之間的隨機值,然后將其X&Y位置的總和的一半相加,然后除以一半-這將渲染一個畫布,其值隨機分布在0和1之間,且較高的值趨于頂部左和較亮的值趨于右下。

灰度顏色不會完全留給隨機性,因為完全隨機性會導致次優(yōu)結果。通過讓像素的位置也決定最終值,它可以最大程度地減少在彼此相鄰的幾個像素處生成完全相同的值的隨機情況的數(shù)量,這在以后的像素處理器中會產(chǎn)生問題。

平鋪:

對于每個像素,在位置1 / x,1 / y上對像素的顏色進行采樣,該像素是活動像素“最接近”的位置,向下取整。


通過僅在一個像素區(qū)域上從一個像素采樣灰度顏色,像素處理器將創(chuàng)建一個正方形網(wǎng)格。


紋理大小并非總是被正方形數(shù)平均除(例如2048x2048像素/ 9x9網(wǎng)格),因此并非所有正方形的大小都完全相同-在以后的步驟中記住這一點很重要,因為這會產(chǎn)生印象。

網(wǎng)格中采樣像素/正方形的數(shù)量由用戶在X和Y中的輸入決定。

最初,此節(jié)點以小分辨率紋理處理單個像素,其中一個像素為一個正方形。但這限制了圖塊的數(shù)量,因此創(chuàng)建了此功能。

膨脹磚:

對于每個像素,將活動像素的值與上方,右側和對角右上角的正方形中相鄰像素的對應像素的值進行比較,然后將活動像素的值更改為比較值中的最高值。

這意味著較亮的正方形將其顏色值分布到左,下和對角線的左下角,而較暗的正方形則從相鄰的正方形開始采用新的值。

這將開始創(chuàng)建更大的正方形和矩形形狀,以及一些不需要的L形和可能需要刪除的其他不規(guī)則形狀。

填充L形:

通過確定圖案中無沖突的L形,可以將它們拼湊成一個完整的正方形。

對于每個像素,比較周圍正方形的對應像素。如果三個連接的正方形共享相同的顏色但不與活動像素共享,則它們將形成L形。如果在活動像素的正方形附近有一個L形,則活動像素將采用L形的顏色,只要它不會創(chuàng)建新的L形即可。

切割L形:

通過識別剩余的L形,可以將它們切成尾部。一些L形彼此沖突或已經(jīng)具有完整的矩形,并且不能用先前的方法填充。

通過將活動像素的值與三個相鄰像素的對應像素進行比較,可以識別出這些L形。連接的正方形。如果活動像素與兩個相連的正方形共享顏色值,但不是三個都共享,則將其視為L形。

如果活動像素位于L形的一端,則它將采用第二個輸入模式的灰度顏色。

修復不規(guī)則

要刪除任何剩余的不規(guī)則形狀和不需要的形狀,請使用蠻力功能將所有非正方形或矩形形狀切掉。

與“填充L形”和“剪切L形”功能相似,“固定不規(guī)則”功能可識別形狀不是完整正方形或矩形的像素。

通過重復此函數(shù)三次,可以完全刪除大多數(shù)不需要的形狀。

一對單打

固定所有不希望的形狀后,圖案中會出現(xiàn)很多單個正方形,這也是不希望的結果。

通過識別單個正方形中的像素并讓它們?nèi)×硪粋€相鄰正方形的顏色,只要這不會產(chǎn)生任何新的L形,就可以減少單個正方形的數(shù)量。

進行兩次,一次用于確定垂直配對的優(yōu)先級,一次用于確定水平配對的優(yōu)先級。

中斷對齊:

在這一點上,圖案通常具有直接穿過紋理畫布的接縫。

“斷裂對齊”功能通過比較與活動像素的正方形相鄰的正方形中的多個對應像素來標識直縫。如果它們不與X或Y軸上的相鄰正方形共享任何顏色,則將其視為直縫。

查找直縫的比較次數(shù)取決于輸入的平鋪值。較高的平鋪值會在相應的軸上設置較多的比較,因為太低的閾值可能會導致替換直縫而不是實際破壞直縫。


如果函數(shù)找到一條直縫,則活動像素將取一個相鄰正方形對應像素的值,該像素將破壞該接縫。這會產(chǎn)生L形和其他不良形狀。

“ Break Alignment”功能在計算方面非常繁瑣,并且占用了大約一半的計算時間,這就是為什么如果直縫不會打擾用戶的情況下允許用戶將其關閉的原因。

還原:

由“斷裂對齊”功能創(chuàng)建的某些不良形狀很容易識別,并恢復為舊狀態(tài)。

這些形狀的標識方式與以前的固定功能類似。

最后修復:

一系列“填充L形”和“剪切L形”去除了大多數(shù)剩余的不良形狀。

清理:

如前所述,當紋理大小未均勻地除以一個或兩個軸上的平鋪數(shù)字(例如2048x2048 / 9x9)時,正方形的大小將不完全相等,這意味著將創(chuàng)建的所有函數(shù)都有一些印象在某些正方形的邊緣上可能會與大正方形或矩形相交的1或2像素粗線-需要將其刪除。

對于每個像素,比較所有相鄰像素和幾步之遙的像素。如果比較的像素共享顏色,則活動像素將假定它位于該顏色的正方形中間,并采用該比較的顏色。

分別針對X和Y軸執(zhí)行此操作。

之前:

重新校準網(wǎng)格:

最后,通過運行對初始顏色值進行采樣并創(chuàng)建正方形網(wǎng)格的功能,生成器將修復在去除像素細線時可能發(fā)生的所有最后一個像素偏移,從而創(chuàng)建出完美的網(wǎng)格圖案。

如果用戶愿意,可以關閉此選項。

結果

生成的模式讓人想起凡爾賽模式,但是凡爾賽模式遵循一組規(guī)則,我的圖塊生成器將呈現(xiàn)更多隨機結果。

  • 在X和Y軸上均具有大小不同的圖塊的多個不同圖案。

節(jié)點會自動同時同時在X和Y軸上生成具有不同大小的圖塊的圖案。更改隨機種子會完全改變模式。

  • 沒有相交的形狀,只有實心正方形和矩形。

L形或其他不良形狀的確會出現(xiàn)在最終圖案中,但很少出現(xiàn),并且僅出現(xiàn)在具有特定平鋪值的特定種子上。

  • 用戶控制的自動化,無需強制手動輸入。

用戶可以通過輸入X和Y拼貼編號來定制圖案。用戶可以更改節(jié)點的隨機種子,這將完全更改生成的模式。

  • 紋理畫布上沒有直縫。

即使使用“斷裂對齊”功能,節(jié)點也難以避免出現(xiàn)直縫,尤其是在較低的平鋪值上。在4x4分辨率下,350個第一隨機種子中沒有一個提供有效結果。

以下是隨機種子0和60之間的所有(有效)結果,這些種子不包含貫穿紋理畫布的直縫,且平鋪值分別為5x5、6x6、7x7、8x8、9x9和10x10。最左邊的結果沒有抵消直縫的功能,中間的結果沒有使用[redacted]功能,最右邊的沒有“ Break Alignment”功能。

與沒有功能相比,“突破對齊”功能證明可以增加有效隨機種子的數(shù)量。事實證明,[已編輯]函數(shù)的可靠性比沒有函數(shù)低,因此已將其從圖形中刪除。

  • 快速計算。

該節(jié)點具有相對較快的計算時間,在2k分辨率下不到100ms的計算時間。用戶可以禁用“中斷對齊”功能以減少計算時間。


討論區(qū)

為了對結果進行匯總,該節(jié)點可以實現(xiàn)其設定的目標,但有一定的誤差,還有很大的改進空間。


節(jié)點的最強方面是,只需更改隨機種子即可非常輕松地生成多種模式-這是可能的,因為該方法使用基于初始隨機輸入的確定性函數(shù)。


節(jié)點難以避免以較低的平鋪值穿過畫布的直縫是該方法的最大缺陷-這可能可以通過使用替代排序或特定于低平鋪值的函數(shù)來解決,從而創(chuàng)建一個更可靠的方法。

較早使用的替代功能之一是在Expanding Tiles功能之前創(chuàng)建類似于人字形的圖案,以在早期消除任何直縫。但事實證明,此功能起反作用,結果可靠性較差,因此被刪除。


這種方法的另一個缺陷是用戶對最終結果的控制非常有限。

最終模式非常依賴于初始隨機種子,并且將不會始終提供所需的結果,有時會完全無效或從美學上來說是令人討厭的。除了更改隨機種子或平鋪值之外,用戶沒有太多補救措施。


我希望這些方法可以為用戶提供對生成的圖案的更多控制,例如瓷磚放置,圖案方向,最小和最大形狀尺寸,形狀大小分布,擴展亞方形大小隨機性,傾斜的邊緣以及利用紋理輸入。


進一步定制


盡管DS_Tile_Random節(jié)點本身并不能提供很多可定制性,但是可以使用Flood-fill節(jié)點添加其中的一些可定制性。例如,插入隨機的子正方形大小,傾斜的圖塊邊緣或將生成的形狀更改為正方形以外的形狀。

為避免每次希望向圖塊模式添加更多自定義時在每個圖形中構造此星座的情況,我創(chuàng)建了一個伴隨節(jié)點DS_Tile_Random_Customizer。

它是一個單獨的節(jié)點,而不是DS_Tile_Random基本節(jié)點的一部分,以保持基本節(jié)點盡可能快和整潔。如果它們相同,則每個DS_Tile_Random節(jié)點都將帶有一個內(nèi)置的Flood-fill節(jié)點(比用戶自己整個DS_Tile_Random節(jié)點花費更多的時間進行計算),即使用戶不想使用Flood-fill。功能。

分離節(jié)點還意味著DS_Tile_Random_Customizer可以在其他上下文中使用,而不僅可以與DS_Tile_Random一起使用。

熱門提示:如果要減少計算時間,請嘗試降低DS_Tile_Random_Customizer的分辨率,因為它不會在很大程度上影響視覺效果。

該節(jié)點接受“圖案”輸入,例如DS_Tile_Random節(jié)點生成的輸入,以及可選的“比例貼圖”,“傾斜貼圖”和“灰度”輸入。DS_Tile_Random_Customizer具有9個參數(shù),其中許多模擬可以在本機節(jié)點中找到的參數(shù):

尺寸參數(shù):

大小-允許用戶分別控制X和Y上每個圖塊的大小。

大小隨機-允許用戶分別在X和Y中的每個圖塊之間添加隨機大小差異。

比例尺-允許用戶控制每個圖塊的統(tǒng)一比例尺。

比例隨機-允許用戶在每個圖塊之間添加隨機比例差異。

比例貼圖乘數(shù)-允許用戶自定義比例貼圖輸入對每個圖塊的比例的影響。


傾斜參數(shù):

傾斜角度-允許用戶自定義所有圖塊的全局角度/通過降低尺寸參數(shù)創(chuàng)建的插圖的全局角度。

傾斜變化-允許用戶自定義每個圖塊之間的傾斜角度變化。

傾斜輸入倍增器-允許用戶自定義“傾斜貼圖輸入”對每個圖塊的傾斜角度的影響。


顏色參數(shù):

灰度輸入-允許用戶自定義灰度輸入對每個圖塊中灰度顏色的影響。

Input Pattern Grayscale(輸入圖案灰度)-允許用戶對原始圖案輸入的影響進行最小化,以改變每個圖塊中的灰度顏色。

這是一個有趣的項目,如果我經(jīng)常返回該項目并為每個節(jié)點添加更多功能,我不會感到驚訝。

學分:

我要特別感謝Bruno Afonseca,Jonas Olesen和Vincent Gault免費地在Substance Share上共享許多技術節(jié)點和工作流程-這在項目開始之初就對我有很大幫助。如果想學習,請查看他們的東西!

轉載地址:

https://polycount.com/discussion/222331/ds-tile-random

獲取方式 公眾號后臺

后臺回復-----Tile

本期分享就到這里??我們下期見

感謝關注 ?更多精彩






[SD]___SubstanceDesigner節(jié)點改造_DS_Tile_Random的評論 (共 條)

分享到微博請遵守國家法律
进贤县| 小金县| 陆丰市| 桦南县| 普安县| 客服| 大新县| 连云港市| 改则县| 沙湾县| 烟台市| 五莲县| 颍上县| 翁源县| 广东省| 黎川县| 青龙| 甘洛县| 宁陵县| 白玉县| 玉树县| 鸡西市| 凌源市| 阜新市| 会东县| 辉南县| 邵武市| 乌苏市| 大英县| 库伦旗| 共和县| 黄大仙区| 阜平县| 墨竹工卡县| 台州市| 灌南县| 南投市| 三穗县| 德令哈市| 江北区| 天峻县|