摘要:在控制臺中輸入路徑。因此,下一步是通過參考文件檢查訪問畫筆的位置。上下文畫筆紋理對比度由于每個屬性都是按照我們在控制臺中組成數(shù)據(jù)路徑的方式給出的可以有多種方式來訪問相同的數(shù)據(jù),您選擇的方法通常取決于任務(wù)。
Blender參考API用法
Blender有許多互連數(shù)據(jù)類型,它們具有自動生成的引用api,它通常具有編寫腳本所需的信息,但可能難以使用。
本文檔旨在幫助您了解如何使用參考API。
參考API范圍參考API涵蓋bpy.types,存儲通過以下方式訪問的類型bpy.context- 用戶上下文 或bpy.data- 混合文件數(shù)據(jù)。
其他模塊,例如bge,bmesh并且aud沒有使用Blenders數(shù)據(jù)API,因此本文檔不適用于這些模塊。
數(shù)據(jù)訪問使用參考API的最常見情況是找出如何訪問混合文件中的數(shù)據(jù)。
在進(jìn)一步了解Blender中的ID數(shù)據(jù)塊之前,您經(jīng)常會找到與它們相關(guān)的屬性。
ID數(shù)據(jù)ID數(shù)據(jù)塊在Blender中用作頂級數(shù)據(jù)容器。
從用戶界面來看,這不是那么明顯,但在開發(fā)時,您需要了解ID數(shù)據(jù)塊。
ID數(shù)據(jù)類型包括場景,組,對象,網(wǎng)格,屏幕,世界,電樞,圖像和紋理。有關(guān)完整列表,請參閱子類bpy.types.ID
以下是ID數(shù)據(jù)塊共享的一些特征。
ID是混合文件數(shù)據(jù),因此加載新的混合文件會重新加載一組全新的數(shù)據(jù)塊。
ID可以在Python中訪問 bpy.data.*
每個數(shù)據(jù)塊都有一個唯一的.name屬性,顯示在界面中。
動畫數(shù)據(jù)存儲在ID中.animation_data。
ID是唯一可以在混合文件之間鏈接的數(shù)據(jù)類型。
可以通過Python添加/復(fù)制和刪除ID。
ID有自己的垃圾收集系統(tǒng),可以在保存時釋放未使用的ID。
當(dāng)數(shù)據(jù)塊具有對某些外部數(shù)據(jù)的引用時,這通常是ID數(shù)據(jù)塊。
讓我們從一個簡單的案例開始,說你不是一個python腳本來調(diào)整對象的位置。
首先在界面中找到此設(shè)置 Properties Window -> Object -> Transform -> Location
從按鈕,您可以右鍵單擊并選擇在線Python參考,這將鏈接到: bpy.types.Object.location
作為API參考,此鏈接通常提供的信息比工具提示少,但有些頁面包含示例(通常位于頁面頂部)。
此時你可能會說現(xiàn)在是什么?- 你知道你必須使用.location它的3個浮點(diǎn)數(shù)組,但你仍然想知道如何在腳本中訪問它。
所以下一步是找出訪問對象的位置,在頁面底部到References 部分,對于有很多引用的對象,但是訪問對象的最常見的地方之一是通過上下文。
在這一點(diǎn)上很容易被淹沒,因為Object在很多地方引用了它 - 修飾符,函數(shù),紋理和約束。
但是,如果要訪問用戶選擇的任何數(shù)據(jù),通常只需要檢查bpy.context引用。
即便如此,在這種情況下,如果您閱讀這些內(nèi)容還有相當(dāng)多的內(nèi)容 - 大多數(shù)都是模式特定的。如果您正在編寫僅在重量涂料模式下運(yùn)行的工具,那么使用weight_paint_object 是合適的。但是,要訪問用戶上次選擇的項目,請查找active成員,有權(quán)訪問用戶選擇的單個活動成員是Blender中的約定:例如。active_bone, active_pose_bone,active_node...在這種情況下,我們可以使用- active_object。
所以現(xiàn)在我們有足夠的信息來查找活動對象的位置。
bpy.context.active_object.location
您可以在python控制臺中鍵入它以查看結(jié)果。
訪問引用中對象的另一個常見位置是bpy.types.BlendData.objects。
注意 這不是列為bpy.data.objects,這是因為bpy.data是bpy.types.BlendData類的一個實(shí)例,所以文檔指向那里。
使用bpy.data.objects,這是一組對象,因此您需要訪問其中一個成員。
bpy.data.objects["Cube"].location嵌套屬性
前面的示例非常簡單,因為可以直接從上下文訪問location其屬性O(shè)bject。
以下是一些更復(fù)雜的例子:
# access a render layers samples bpy.context.scene.render.layers["RenderLayer"].samples # access to the current weight paint brush size bpy.context.tool_settings.weight_paint.brush.size # check if the window is fullscreen bpy.context.window.screen.show_fullscreen
正如您所看到的,有時您希望訪問嵌套的數(shù)據(jù),這種方式會導(dǎo)致您經(jīng)歷一些間接。
這些屬性被安排為匹配數(shù)據(jù)在內(nèi)部存儲的方式(在混合器C代碼中),這通常是合乎邏輯的,但并不總是與使用Blender期望的完全相同。
因此,這需要一些時間來學(xué)習(xí),它可以幫助您了解數(shù)據(jù)在Blender中的組合方式,這對于編寫腳本非常重要。
在開始編寫腳本時,您經(jīng)常會遇到無法確定如何訪問所需數(shù)據(jù)的問題。
有幾種方法可以做到這一點(diǎn)。
使用Python控制臺的自動完成來檢查屬性。 這可能會出類拔萃,但其優(yōu)勢在于您可以輕松查看屬性值并將其分配給交互式查看結(jié)果。
從用戶界面復(fù)制數(shù)據(jù)路徑。 進(jìn)一步解釋:ref:復(fù)制數(shù)據(jù)路徑
使用文檔來關(guān)注參考。 進(jìn)一步解釋:ref:間接數(shù)據(jù)訪問
Blender可以將Python字符串計算為屬性,該屬性顯示在工具提示中,如下所示。這節(jié)省了必須使用API??引用來單擊備份引用以查找數(shù)據(jù)的訪問位置。Python: ...
有一個用戶界面功能可以復(fù)制數(shù)據(jù)路徑,該路徑提供從bpy.types.ID數(shù)據(jù)塊到其屬性的路徑。
為了了解這是如何工作的,我們將獲得Subdivision-Surface修改器細(xì)分設(shè)置的路徑。
從默認(rèn)場景開始,選擇“ 修改器”選項卡,然后將“ 細(xì)分 - 曲面”修改器添加到多維數(shù)據(jù)集。
現(xiàn)在將鼠標(biāo)懸停在標(biāo)記為View的按鈕上,工具提示包括bpy.types.SubsurfModifier.levels 但我們想要從對象到此屬性的路徑。
請注意,復(fù)制的文本將不包含該bpy.data.collection["name"].組件,因為它假定您不會在每次訪問時進(jìn)行集合查找,并且通常您希望使用上下文而不是bpy.types.ID按名稱訪問每個實(shí)例。
在Python控制臺中輸入ID路徑bpy.context.active_object。包括尾隨點(diǎn),但不要點(diǎn)擊“輸入”。
現(xiàn)在,右鍵單擊該按鈕并選擇“ 復(fù)制數(shù)據(jù)路徑”,然后將結(jié)果粘貼到控制臺中。
所以現(xiàn)在你應(yīng)該得到答案:
bpy.context.active_object.modifiers["Subsurf"].levels
按“輸入”,您將獲得當(dāng)前值1.現(xiàn)在嘗試將值更改為2:
bpy.context.active_object.modifiers["Subsurf"].levels = 2
您可以在Subdivision-Surface修改器的UI和多維數(shù)據(jù)集中看到值更新。
間接數(shù)據(jù)訪問在這個例子中,我們將討論更多涉及的內(nèi)容,顯示訪問活動的雕刻畫筆紋理的步驟。
讓我們說我們想通過Python訪問畫筆的紋理,以調(diào)整它c(diǎn)ontrast的例子。
從默認(rèn)場景開始,從3D-View標(biāo)題啟用“Sculpt”模式。
從工具欄中展開“ 紋理”面板并添加新紋理。 注意紋理按鈕,它自己沒有非常有用的鏈接(你可以檢查工具提示)。
對比度設(shè)置未在雕刻工具欄中顯示,因此在屬性面板中查看紋理...
在屬性按鈕中,選擇“紋理”上下文。
選擇“畫筆”圖標(biāo)以顯示畫筆紋理。
展開“ 顏色”面板以找到“ 對比度”按鈕。
右鍵單擊對比按鈕,并選擇在線Python的引用 這需要你bpy.types.Texture.contrast
現(xiàn)在我們可以看到這contrast是紋理的屬性,接下來我們將檢查如何從畫筆訪問紋理。
檢查頁面底部的參考文獻(xiàn),有時會有很多參考文獻(xiàn),并且可能需要一些猜測才能找到合適的參考文獻(xiàn),但在這種情況下顯然是這樣Brush.texture。
現(xiàn)在我們知道可以從中訪問紋理, bpy.data.brushes["BrushName"].texture 但通常您不希望按名稱訪問畫筆,因此我們現(xiàn)在將看到訪問活動畫筆。
因此,下一步是通過參考文件檢查訪問畫筆的位置。在這種情況下,bpy.context.brush我們只需要它。
現(xiàn)在,您可以使用Python控制臺來形成訪問畫筆紋理對比所需的嵌套屬性,邏輯上我們現(xiàn)在知道了。
上下文 - >畫筆 - >紋理 - >對比度
由于每個屬性都是按照我們在python控制臺中組成數(shù)據(jù)路徑的方式給出的:
bpy.context.brush.texture.contrast
可以有多種方式來訪問相同的數(shù)據(jù),您選擇的方法通常取決于任務(wù)。
訪問相同設(shè)置的備用路徑是......
bpy.context.sculpt.brush.texture.contrast
或者直接訪問畫筆......
bpy.data.brushes["BrushName"].texture.contrast
如果您正在編寫用戶工具,則通常需要使用,bpy.context因為用戶通常希望該工具對他們選擇的內(nèi)容進(jìn)行操作。
對于自動化,您更有可能使用,bpy.data因為您希望能夠訪問特定數(shù)據(jù)并對其進(jìn)行操作,無論用戶當(dāng)前具有何種視圖集。
操作Blender中的大多數(shù)按鍵和按鈕都會調(diào)用一個操作符,該操作符也會暴露給python via bpy.ops,
要查看Python等效項,請將鼠標(biāo)懸停在按鈕上并查看工具提示,例如,如果沒有工具提示或缺少行,則此按鈕不使用運(yùn)算符,無法從Python訪問。Python: bpy.ops.render.render()Python:
如果要在腳本中使用它,可以Control-C在鼠標(biāo)懸停在按鈕上時將其復(fù)制到剪貼板。
您也可以右鍵單擊按鈕并查看在線Python參考,這主要顯示參數(shù)及其默認(rèn)值,但是用Python編寫的運(yùn)算符顯示其文件和行號,如果您有興趣檢查源代碼,這可能很有用。
注意 并非所有運(yùn)算符都可以從Python中有用地調(diào)用,有關(guān)詳細(xì)信息,請參閱使用運(yùn)算符。
信息視圖Blender記錄您運(yùn)行的運(yùn)算符并在信息空間中顯示它們。它位于文件菜單上方,可以向下拖動以顯示其內(nèi)容。
選擇Blender默認(rèn)的腳本屏幕以查看其輸出。您可以執(zhí)行某些操作并看到它們顯示 - 例如刪除頂點(diǎn)。
可以選擇每個條目(右鍵 - 鼠標(biāo) - 按鈕),然后復(fù)制Control-C,通常粘貼到文本編輯器或python控制臺中。
注意 并非所有操作員都注冊顯示,例如縮放視圖對于重復(fù)這樣做是沒有用的,因此將其排除在輸出之外。
要顯示運(yùn)行的每個運(yùn)算符,請參閱顯示所有運(yùn)算符
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42159.html
摘要:在交互式控制臺中運(yùn)行此操作時,您將看到視口更新。鍵入或粘貼到交互式控制臺中。用戶首選項加載項列表使用顯示有關(guān)每個加載項的信息。最后兩行僅用于測試這允許腳本直接在文本編輯器中運(yùn)行以測試更改。 Blender Python API概述 本文檔的目的是解釋Python和Blender如何組合在一起,涵蓋了一些在閱讀API參考和示例腳本時可能不明顯的功能。 Python in Blender ...
摘要:插件教程什么是插件插件只是一個帶有一些附加要求的模塊,因此可以在包含有用信息的列表中顯示它。安裝附加組件時,將在控制臺中打印源和目標(biāo)路徑?,F(xiàn)在嘗試將此腳本復(fù)制到并在默認(rèn)多維數(shù)據(jù)集上運(yùn)行它。 Blender插件教程 什么是插件?插件只是一個帶有一些附加要求的Python模塊,因此Blender可以在包含有用信息的列表中顯示它。 舉個例子,這是最簡單的插件: bl_info = {name...
摘要:為了讓數(shù)值計算的結(jié)果能夠有更好的渲染效果,這段時間一直在用這個開源軟件來處理計算結(jié)果。 為了讓數(shù)值計算的結(jié)果能夠有更好的渲染效果,這段時間一直在用Blender這個開源軟件來處理計算結(jié)果。 因為是處理大量數(shù)據(jù)的計算結(jié)果,所以不得不考慮用Python編寫腳本來實(shí)現(xiàn)批量處理,編寫過程中,Google幫我解決了大部分實(shí)現(xiàn)過程中的障礙,下面是完整的實(shí)現(xiàn)過程: 將計算結(jié)果的mesh文件導(dǎo)入到...
閱讀 2550·2021-11-24 10:20
閱讀 2398·2021-09-10 10:51
閱讀 3384·2021-09-06 15:02
閱讀 3121·2019-08-30 15:55
閱讀 2845·2019-08-29 18:34
閱讀 3085·2019-08-29 12:14
閱讀 1223·2019-08-26 13:53
閱讀 2936·2019-08-26 13:43