最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解

 更新時間:2022年08月07日 15:43:53   作者:ShaderJoy  
這篇文章主要為大家介紹了Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

前言

Blender 并不是唯一一款允許你為場景編程和自動化任務(wù)的3D軟件; 隨著每一個新版本的推出,Blender 正逐漸成為一個可靠的 CG 制作一體化解決方案,從使用油脂鉛筆的故事板到基于節(jié)點的合成。

事實上,你可以使用 Python 腳本和一些額外的包來批處理你的對象實例化,程序化地生成東西,配置你的渲染設(shè)置,甚至獲得你當(dāng)前項目的自定義統(tǒng)計數(shù)據(jù),這是非常棒的功能! 這是一種減輕繁瑣任務(wù)負(fù)擔(dān)的方式,同時也能讓開發(fā)者參與到這個創(chuàng)造性工具社區(qū)中,而不僅僅是美術(shù)人員。

正文

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

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

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

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

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

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

  • 使用 bpy.data 子模塊創(chuàng)建一個新的著色器資源
  • “編輯” 這個著色器,就像我們使用著色器節(jié)點編輯器一樣: 我們將刪除一些節(jié)點,添加其他節(jié)點,設(shè)置它們的屬性并將它們鏈接在一起
  • 對新創(chuàng)建材質(zhì)的引用進(jìn)行檢索
  • 最后,將其添加到我們對象的材質(zhì)數(shù)據(jù)(即槽)中

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

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

我們的想法

  • 從基本節(jié)點模板開始,清除所有初始節(jié)點
  • 然后,可以添加我們的 發(fā)光 節(jié)點和 輸出 節(jié)點,通過更新其輸入字段的值來配置 發(fā)光 節(jié)點
  • 并在兩個節(jié)點之間創(chuàng)建一個鏈接

具體代碼與注釋

創(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)在很容易使用這個方法來創(chuàng)建我們的材質(zhì)資源,并將它們應(yīng)用到我們的對象上。

例如,我們將需要一個白色的發(fā)光材質(zhì)為光環(huán),一個黃色的發(fā)光材質(zhì)為太陽,為每個行星創(chuàng)建一個隨機顏色的發(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)前場景中的所有對象,然后運行以上腳本,你會看到它們現(xiàn)在有了漂亮的發(fā)光材質(zhì)!

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

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

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

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

以上就是Blender Python編程創(chuàng)建發(fā)光材質(zhì)示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Blender Python創(chuàng)建發(fā)光材質(zhì)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 下載給定網(wǎng)頁上圖片的方法

    下載給定網(wǎng)頁上圖片的方法

    這篇文章主要介紹了下載給定網(wǎng)頁上圖片的方法,需要的朋友可以參考下
    2014-02-02
  • Python實現(xiàn)簡單的俄羅斯方塊游戲

    Python實現(xiàn)簡單的俄羅斯方塊游戲

    這篇文章主要為大家詳細(xì)介紹了Python實現(xiàn)簡單的俄羅斯方塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 詳解python實現(xiàn)讀取郵件數(shù)據(jù)并下載附件的實例

    詳解python實現(xiàn)讀取郵件數(shù)據(jù)并下載附件的實例

    這篇文章主要介紹了詳解python讀取郵件數(shù)據(jù)并下載附件的實例的相關(guān)資料,這里提供實現(xiàn)實例,幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下
    2017-08-08
  • Python使用FastParquet庫處理Parquet文件的方法

    Python使用FastParquet庫處理Parquet文件的方法

    在大數(shù)據(jù)時代,數(shù)據(jù)存儲和處理的效率至關(guān)重要,Parquet作為一種列式存儲格式,因其高效的壓縮和編碼方案,成為大數(shù)據(jù)處理中的熱門選擇,本文將深入探討FastParquet庫的使用,幫助讀者掌握如何利用這一工具高效處理Parquet文件,需要的朋友可以參考下
    2025-02-02
  • Python對接支付寶支付自實現(xiàn)功能

    Python對接支付寶支付自實現(xiàn)功能

    這篇文章主要介紹了Python對接支付寶支付自實現(xiàn)功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-10-10
  • Python戀愛小助手之必拿下

    Python戀愛小助手之必拿下

    小編有個好兄弟最近在追妹子,跟妹子打得火熱!就差臨門一腳了,這一jio我?guī)兔ρa上去了!他問有沒有什么酷炫的表白方式,想要一次成功,表白的方式有許多種今天小編來給大家?guī)韮蓚€不得不同意的表白代碼
    2021-10-10
  • Python中用try-except-finally處理異常問題

    Python中用try-except-finally處理異常問題

    這篇文章主要介紹了Python中用try-except-finally處理異常問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • Python設(shè)計模式之代理模式實例詳解

    Python設(shè)計模式之代理模式實例詳解

    這篇文章主要介紹了Python設(shè)計模式之代理模式,結(jié)合實例形式較為詳細(xì)的分析了代理模式的概念、原理及Python定義、使用代理模式相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • python局部賦值的規(guī)則

    python局部賦值的規(guī)則

    Python提出如下假設(shè):如果在函數(shù)體內(nèi)的任何地方對變量賦值,則Python將名稱添加到局部命名空間中。
    2013-03-03
  • python多線程同步售票系統(tǒng)

    python多線程同步售票系統(tǒng)

    這篇文章主要介紹了python多線程同步售票系統(tǒng),文章基于python的相關(guān)資料展開詳細(xì)的多線程同步售票系統(tǒng)介紹,感興趣的小伙伴可以參考一下
    2022-05-05

最新評論

武清区| 怀化市| 沁阳市| 麻阳| 银川市| 博湖县| 中超| 喜德县| 慈利县| 东辽县| 霍城县| 鹤峰县| 四子王旗| 黑河市| 巍山| 黎平县| 扶沟县| 临夏县| 盐边县| 兴文县| 濮阳县| 武定县| 呼伦贝尔市| 康乐县| 孝义市| 连江县| 堆龙德庆县| 钦州市| 凯里市| 平泉县| 江西省| 宁南县| 万宁市| 台北县| 天长市| 株洲市| 东兰县| 郯城县| 温宿县| 鲁甸县| 张北县|