從blender 2.7 移植到blender 2.8 的附加調整

2021-01-06 blender幫

在最新版本的 Blender 開發人員對 API 進行了許多更改,因此為早期 Blender 版本(2.7 及以下)編寫的所有腳本和加載項都停止工作。若要在新的 Blender 2.8 中運行加載項,您需要移植它們 — 更改其代碼以使用新的 Blender API 正常工作。

若要在 Blender 2.80 中啟用加載項,您必須對代碼進行以下更改:

Blender 2.7 使用 Python3.5.3 版本,Blender 2.8 使用 Python3.7.0 版本 。加載項開發人員應將系統中安裝的 Python 解釋器升級到適當的版本。

在初始化加載項部分,在 __init__.py 文件中或在"bl_info"字典中的加載項標頭中,必須指定 Blender 版本 2.80。所有開發人員都必須進行此更改。較低版本的加載項不會從 Blender 2.8 中啟動,並引發異常。

正確的代碼如下所示:

bl_info = {

'blender': (2, 80, 0)

}

如果加載項代碼中存在具有已定義屬性(參數)的運算符,則不應使用"+"符號描述其初始化,而應使用":"。這是由於 Python PEP8 規範,Blender 遵循該規範。這會影響所有開發人員。

如果未進行這些更改,Blender 在調用此類運算符時將引發錯誤:包含屬性的類應 該是注釋!

具有正確定義的運算符屬性的示例代碼:

class_prop: BoolProperty(

default=False

)

Blender 2.8 中的 T 面板不再用於託管用戶界面 (UI)。如果加載項中的 T 面板中存在接口,Blender 將引發錯誤:面板類,有類別

現在用戶界面位於 N 面板中,因此在用戶面板類中的"bl_region_type"參數中,您必 須指定"UI"值,而不是"TOOLS"。

正確的代碼示例:

class MyPanel(Panel):

bl_idname = 'panel.my_panel'

bl_label = 'MY_PANEL'

bl_space_type = 'VIEW_3D'

bl_region_type = 'UI'

bl_category = 'MY_PANEL'

def draw(self, context):

...

使用參數調用函數時,在 Blender 2.8 中不能指定未命名的參數。函數參數必須是:「argument_name = argument_value」這種形式。

如果在未指定命名參數的情況下調用函數,Blender 將引發錯誤:運算符 , 必需參數"..."是一個關鍵字參數!

指定示例的正確參數("文本="是必需的):

self.layout.label(text='Hello World!')

在 Blender 2.8 中,您無法再從"bpy.context.screen.場景"獲取活動場景。嘗試此類調用時,Blender 會引發錯誤:屬性區域:"屏幕"對象沒有屬性"場景"

現在,通過"窗口"對象啟用活動場景。

右活動場景訪問的示例:active_scene = bpy.context.window.scene

Blender 2.8 中的活動對象只能通過上下文訪問,無法再通過"場景.objects.active"訪問它。

嘗試通過場景對象訪問活動對象時,Blender 會引發錯誤:屬性 bpy_prop_collection對象沒有屬性"活動"

訪問活動網格:active_object = bpy.context.active_object

Blender 2.8 中的燈現在具有"光"類型,在 bpy.data 部分中,它們被放置在"燈光"列表中。

嘗試通過"bpy.data.lights"使用燈列表時,Blender 會引發錯誤:屬性:"BlendData",對象沒有屬性"燈"

正確訪問燈的示例:bpy.data.lights

# <bpy_collection[1], BlendDataLights>

相關焦點

  • blender2.8用集合替換之前版本的圖層功能,python腳本代碼更新
    在場景添加一個blender吉祥物猴頭obj=bpy.data.objects['Suzanne']blender2.8版本之後,集合取代了原來的圖層功能,成為新加對象的管理區。以前2.7版本運行代碼如下:bpy.context.scene.objects.link(obj) 用在2.8版本就會報錯# (2.7) Links object to active scene在blender 2.8 中,等效功能是將對象添加到場景中使用的集合,或將它們直接添加到附加到場景本身的主集合中bpy.context.scene.collection.objects.link
  • 在Blender 2.8 Python API 中選擇對象代碼大調整
    自從Blender 2.8更新後,對python腳本調整了原有設置選擇物體代碼,根據 Blender 2.8 Python API 更改網格(對象)可以使用 getters 和設置器進行選擇。嘗試通過調用blender2.79代碼「bpy.context.active_object.select」屬性檢查網格的選定狀態時,Blender 會引發錯誤:AttributeError: 'Object' object has no attribute 'select'要檢查是否在 Blender 2.8 中選擇了對象,請使用獲取器:bpy.context.active_object.select_get
  • 如何設置PyCharm2020,連接到blender進行代碼編寫
    沒有明確的方式將 IDE 連接到允許快速工作流程的blender建議本文檔展示了一個blender2.9-pycharm2020 開發代碼工作流程,你會發現,方便處理你好多的麻煩。/to/blender/executable 替換為 路徑/到/path/to/pypredef_gen.py,替換為該文件的路徑步驟 10 將創建一些文件夾,像這樣:現在,已經有了預先定義,創建新的 pycharm 項目 - 這將是你的附加程序。
  • Blender 2019
    1.3D掃描可以直連3D掃描儀,掃描後導入blender2.視頻序列編輯器更好的類似PR的動畫剪輯器
  • Blender2.9新功能
    Blender基金會發布了blender2.90,這是今年blender2.9更新開源3D圖形和合成軟體的第一個版本。整合了Blender 2.8中的主要功能,引入了真正的多解析度雕刻工作流和更智能的硬表面建模,並改進了流體和布料模擬。
  • blender2.9 python3實用腳本合集
    更改所有材料的設置您想要更改材質設置,但不僅能作用單個材質,而且對於文件中的所有材質:# 導入blender模塊import bpy#枚舉所有材質for item in bpy.data.materials:#設置 "use_shadeless"item.use_shadeless = True
  • 使用Blender2.9 python 腳本複製多個對象
    blender python 腳本在 Blender2.79 到 2.8 之間發生了巨大的變化,2.8之後變更了代碼使用方式,原來2.79腳本不起作用,如果你是2.8之後才開始學習blender python 腳本,儘量參考BlenderPythonAPI2.8之後,建議直接用BlenderPythonAPI2.9
  • 如何在 Blender 2.8 Python API 中將對象網格設置為活動
    若要在 Blender 2.8 Python API 中將網格(對象)設置為活動,context.view_layer使用「網格」的active屬性而不是2.8之前上下文的場景context.scene。
  • blender把兩個模型拼接到一塊的截圖操作過程
    今天講解了blender把兩個模型拼接到一塊的操作過程,相信通過學習blender把兩個模型拼接到一塊的操作步驟,大家對blender軟體一定會有更多的了解的!Blender軟體版本:2.79a 官方正式版圖形圖像立即查看1、打開blender默認一個立方體。
  • 開源之系統:Ubuntu20.04下安裝Blender,別裝Blender2.82a版本
    而這個是刻意強調的,就是在Ubuntu作業系統裡不要安裝Blender2.82版本。一方面這個不穩定,另一方面,這個版本在Ubuntu系統裡,無法設置簡體中文(繁體中文也一樣)。也就是你只能用默認的英文來設計東西。在Ubuntu這樣的Linux作業系統裡安裝軟體,除了在終端裡命令式安裝外,還可以到官方網站下載壓縮包。
  • Blender 2.90正式發布
    Blender 2.90正式發布Blender脫胎換骨的2.8版本終於迎來結束,全新的2.9時代開啟,2.9比2.8有很大的提升和改進。隨著各種超級金主的加入,Blender的爸爸現在已經不愁錢了,20名全職開發人員在全力開發中,本來還在想著2.83自己是會用很久的,沒想到測試RTX顯卡期間使用了2.90Beta後就秒速叛變了(哈哈,實在回不去了)。
  • blender怎麼製作蜂巢網格圖形 渲染畫網格數值設置方法步驟
    blender是一款3D建模工具,功能齊全,不過有不少用戶對它的操作不是很熟練。下面小編就來給各位小夥伴帶來blender怎麼製作蜂巢網格的教程詳情。感興趣的小夥伴們隨小編一起來看看吧。  蜂窩式網格的步驟:  1.首先打開blender軟體,我們新建一個圓柱體。
  • blender python更新燈類型的檢查
    自從blender2.8後,燈光已經沒有LAMP類別,所有燈光最高類別採用LIGHT,系統大致分為了4個子類:POINT,SPOT,AREA,SUN在3d視窗中隨意選擇一個燈光,輸入代碼l=bpy.context.object
  • Blender 2.91 發布
    Blender 2.91 已正式發布,這是該項目於2020年發布的第四個也是今年最後一個主要版本,更新重點是增強其作為跨平臺、開源 3D 建模軟體的用戶體驗和可用性。
  • 訪問Blender 2.8 Python API 中的軸心點「pivot_point」類型
    blender的軸心點和遊標只是空間坐標系的一個點坐標,當然這個坐標點還有自身的坐標軸,隨著2.8版本的升級,軸心點pivot_point已經調到tool_settings內。Blender 2.7 pivot_point"屬性bpy.context.area.spaces[0].pivot_point# 'BOUNDING_BOX_CENTER':在 Blender 2.8 API 中移動到:bpy.context.scene.tool_settings.transform_pivot_point
  • blender2.9 python3 如何檢查Blender版本號
    平時有三個方法能查到所用的blender的版本號啟動圖畫關於Blender軟體右下角當然可以通過 Python API 獲取當前的 Blender 版本號,我們需要執行以下命令:bpy.app.version#
  • 用上一個函數就能讓對象選擇腳本支持blender2.7和2.8兩個版本
    對象選擇,一個小功能但經常使用到的操作,blender2.8 版本後獲取和設置對象的選擇狀態已更改。選定一個對象,以前你曾經能夠通過獲取選擇狀態,然後通過更改它。Cube"]selected = cube.selectcube.selection = Trueselected = cube.select_get()cube.select_set(True)要支持 2.7x
  • BLENDER2.9 PYTHON 適合初學者:一些有用的循環
    學 python和 bpy API需要花費一些時間,你可以很容易地理解 blender python API,只要你按TAB鍵它是自動完成代碼關鍵詞的,所以你可以在 blender python控制臺中找到可用的選項。
  • blender python處理矩陣乘法變更符號
    用blender腳本編寫器編寫任何矩陣乘法,乘法* 語法仍然有效,這個只能作為 2.8 中嘗試普通乘法,而不是 2.7 中的矩陣乘法。如果你用在矩陣乘法會報出有趣的錯誤,因為這並不一定會拋出一個錯誤,a * ba @ b想要支持 2.7 和 2.8 的相同矩陣乘法樣式?
  • Blender在linux下性能超windowsliang'bei!?
    v=cpE2B2QSsa0cggeek頻道做了一項評測,測試了十五個場景不同的運算類型在windows和linux下的對比,結果令人大跌眼鏡。版本為 2.80Barbershop場景打開耗時Win10: 8.1秒   Linux:3.8秒