溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Blender?Python編程如何創(chuàng)建發(fā)光材質(zhì)

發(fā)布時(shí)間:2022-08-08 10:59:42 來源:億速云 閱讀:181 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要介紹了Blender Python編程如何創(chuàng)建發(fā)光材質(zhì)的相關(guān)知識(shí),內(nèi)容詳細(xì)易懂,操作簡(jiǎn)單快捷,具有一定借鑒價(jià)值,相信大家閱讀完這篇Blender Python編程如何創(chuàng)建發(fā)光材質(zhì)文章都會(huì)有所收獲,下面我們一起來看看吧。

正文

在 Blender 中,著色器通常是通過基于節(jié)點(diǎn)的圖形編輯器(可以在 “Shading” 選項(xiàng)卡中找到)來編輯的,它可以讓你根據(jù)想要構(gòu)建或多或少?gòu)?fù)雜的著色流程來鏈接和組合盡可能多的內(nèi)置節(jié)點(diǎn)。然而,在本文中,我們將制作一個(gè)超級(jí)簡(jiǎn)單的著色器,只有一個(gè)節(jié)點(diǎn),所以我們將在 Python 腳本 ???? 中做所有的事情。

創(chuàng)建完材質(zhì)之后會(huì)使用那些著色器,并應(yīng)用到你的 3D 幾何物體上。一個(gè)物體可能有幾個(gè) 材質(zhì)槽,例如,它可以為幾何的不同部分使用不同的著色器,但我們今天不會(huì)討論這種復(fù)雜的情況,我們將只考慮 每個(gè)物體一個(gè)材質(zhì)槽 的情形。

發(fā)光材質(zhì) 為例。你可以把它想象成一個(gè)有強(qiáng)度(strength 參數(shù))和顏色的大燈泡。它將使你的 3D 對(duì)象發(fā)光(所以你的對(duì)象將成為你場(chǎng)景中的光源,將與其余的網(wǎng)格交互!) ????

PS: 選擇 Shader 類型對(duì)于這個(gè)項(xiàng)目,我使用的 EEVEE 引擎,其也可以與著色器節(jié)點(diǎn)工作,即使它與 Cycles 引擎并不是所有節(jié)點(diǎn)類型都相同。

在 Python 腳本中創(chuàng)建一個(gè)著色器

為了完全通過腳本創(chuàng)建和分配一個(gè)著色器,我們必須:

  • 使用 bpy.data 子模塊創(chuàng)建一個(gè)新的著色器資源

  • “編輯” 這個(gè)著色器,就像我們使用著色器節(jié)點(diǎn)編輯器一樣: 我們將刪除一些節(jié)點(diǎn),添加其他節(jié)點(diǎn),設(shè)置它們的屬性并將它們鏈接在一起

  • 對(duì)新創(chuàng)建材質(zhì)的引用進(jìn)行檢索

  • 最后,將其添加到我們對(duì)象的材質(zhì)數(shù)據(jù)(即槽)中

讓我們一步一步來做這件事。我們將從創(chuàng)建一個(gè)名為 create_emission_shader() 的新函數(shù)開始

它將接收一些 強(qiáng)度Strength) 和 顏色Color) 參數(shù),并使用這些參數(shù)來設(shè)置一個(gè)基本的 2 節(jié)點(diǎn)圖,其中有一個(gè)發(fā)光Emission)節(jié)點(diǎn)和一個(gè)輸出Output)節(jié)點(diǎn)。

我們的想法

  • 從基本節(jié)點(diǎn)模板開始,清除所有初始節(jié)點(diǎn)

  • 然后,可以添加我們的 發(fā)光 節(jié)點(diǎn)和 輸出 節(jié)點(diǎn),通過更新其輸入字段的值來配置 發(fā)光 節(jié)點(diǎn)

  • 并在兩個(gè)節(jié)點(diǎn)之間創(chuàng)建一個(gè)鏈接

具體代碼與注釋

創(chuàng)建發(fā)光材質(zhì)

def create_emission_shader(color, strength, mat_name):
    # create a new material resource (with its
    # associated shader)
    mat = bpy.data.materials.new(mat_name)
    # enable the node-graph edition mode
    mat.use_nodes = True
    # clear all starter nodes
    nodes = mat.node_tree.nodes
    nodes.clear()
    # add the Emission node
    node_emission = nodes.new(type="ShaderNodeEmission")
    # (input[0] is the color)
    node_emission.inputs[0].default_value = color
    # (input[1] is the strength)
    node_emission.inputs[1].default_value = strength
    # add the Output node
    node_output = nodes.new(type="ShaderNodeOutputMaterial")
    # link the two nodes
    links = mat.node_tree.links
    link = links.new(node_emission.outputs[0], node_output.inputs[0])
    # return the material reference
    return mat

現(xiàn)在很容易使用這個(gè)方法來創(chuàng)建我們的材質(zhì)資源,并將它們應(yīng)用到我們的對(duì)象上。

例如,我們將需要一個(gè)白色的發(fā)光材質(zhì)為光環(huán),一個(gè)黃色的發(fā)光材質(zhì)為太陽,為每個(gè)行星創(chuàng)建一個(gè)隨機(jī)顏色的發(fā)光材質(zhì)(盡管我將添加更多的藍(lán)色,以更好的整體顏色平衡 ????):

具體調(diào)用代碼

# ...
N_PLANETS = 6
ring_mat = create_emission_shader(
    (1, 1, 1, 1), 1, "RingMat"
)
for n in range(N_PLANETS):
    # ...
    planet = create_sphere(r, d, "Planet-{:02d}".format(n))
    planet.data.materials.append(
        create_emission_shader(
            (random(), random(), 1, 1),
            2,
            "PlanetMat-{:02d}".format(n)
        )
    )
    # add the radius ring display
    ring = create_torus(d, "Radius-{:02d}".format(n))
    ring.data.materials.append(ring_mat)
# add the sun sphere
sun = create_sphere(12, 0, "Sun")
sun.data.materials.append(
    create_emission_shader(
        (1, 0.66, 0.08, 1), 10, "SunMat"
    )
)

如果你在 3D 視圖中將陰影模式改為 “rendering”,并刪除當(dāng)前場(chǎng)景中的所有對(duì)象,然后運(yùn)行以上腳本,你會(huì)看到它們現(xiàn)在有了漂亮的發(fā)光材質(zhì)!

  • 應(yīng)用材質(zhì)前

Blender?Python編程如何創(chuàng)建發(fā)光材質(zhì)

  • 應(yīng)用材質(zhì)后

Blender?Python編程如何創(chuàng)建發(fā)光材質(zhì)

注意,在運(yùn)行腳本后,你甚至可以進(jìn)入 “Shading” 選項(xiàng)卡,選擇一個(gè)帶有著色器的對(duì)象并查看其著色器圖。

它看起來像預(yù)期的那樣: 兩個(gè)節(jié)點(diǎn),一個(gè) Emission 和一個(gè) Output,兩者之間的鏈接,以及一些StrengthColor 屬性的自定義值。

關(guān)于“Blender Python編程如何創(chuàng)建發(fā)光材質(zhì)”這篇文章的內(nèi)容就介紹到這里,感謝各位的閱讀!相信大家對(duì)“Blender Python編程如何創(chuàng)建發(fā)光材質(zhì)”知識(shí)都有一定的了解,大家如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI