blender python處理矩陣乘法變更符號

2020-12-12 blender幫

如果對矩陣對象執行任何乘法,要注意一件事情,Python 的最新版本(當然還有包含Blender內置Python版本)為適當的矩陣乘法實現了新的表示方法。

用blender腳本編寫器編寫任何矩陣乘法,乘法* 語法仍然有效,這個只能作為 2.8 中嘗試普通乘法,而不是 2.7 中的矩陣乘法。如果你用在矩陣乘法會報出有趣的錯誤,因為這並不一定會拋出一個錯誤,a * ba @ b

想要支持 2.7 和 2.8 的相同矩陣乘法樣式?首先,這似乎是一個類似的挑戰,採用前面幾節中提到的欄位注釋。

較舊的 python 版本無法識別 @ 語法,並將引發分析錯誤!對於所有blender 2.7 版本,都是如此。

解決這種情況的一個方法是將矩陣點乘法稱為函數,而不是使用 @ 語法。

import bpy

import operator

# to get function names for operators like @, +, -

def matmul(a, b):

if hasattr(bpy.app, "version") and bpy.app.version >= (2, 80):

return operator.matmul(a, b)

# the same as writing

a @ b

else: return a * b

用這個方法可以避免基於blender分支版本, 因為這個代碼是能用在 2.7和2.8 。

相關焦點

  • blender python類別
    Blender python 使用面向對象的方法處理其數據。對象類包含泛型屬性,如對象的位置。然後,它使用它的數據屬性來使用特定於對象類型的類來存儲對象特定數據,每個數據類型都是 ID 的子類bpy.data.objects是 Object類實例的列表。
  • 淺談blender2.8 python 腳本相對之前版本的變化
    因blender2.8版本後的python腳本有更多的小變化,如重命名的面板,屬性,運算符等。內容太多下面沒有辦法列表出來,先說一部分我親自遇到的例子。hasattr() 函數用於判斷blender對象是否包含對應的屬性,用這個作為條件分別運行2.7和2.8的代碼空物體大小:obj.empty_draw_size 變更成 obj.empty_display_size空物體類型:obj.empty_draw_type 變更成 obj.empty_display_type
  • blender python入門系列教程一:認識bpy.data.objects
    啟動blender軟體,如果沒有變更系統設置,默認3d視窗就有一個燈,一個相機和一個立方體。直接選用Scripting界面,在python控制臺,直接輸入bpy.data.objects,系統返回<bpy_collection[3], BlendDataObjects> 中文翻譯:bpy集合[3],blender數據對象輸入:bpy.data.objects
  • pycharm2020如何配置blender2.9 API開發環境
    pycharm安裝完成後,直接打開pycharm2020點擊文件菜單,選擇新建項目新項目面板中,默認已經選擇了 python設置,在這裡主要選擇了 existing interpreter,因為我們主要關注 blender python,不需要在線下載 python
  • 用代碼了解數學符號
    似乎任何熱衷於機器學習、數據科學的人都相信,總有一天,他們將研究透徹python庫,暢享裡面的數學知識。大量論文集將展現在你面前,詳細說明其原理。對核心數學的理解越深入,你就越可能獲得靈感,創造新方法。對於多年來鑽研數學或從事機器數學學習的人來說,將上面這個方程式詳細地解析為含義和代碼並不難。
  • Python求解特徵向量和拉普拉斯矩陣
    學過線性代數和深度學習先關的一定知道特徵向量和拉普拉斯矩陣,這兩者是很多模型的基礎,有著很重要的地位,那用python要怎麼實現呢?numpy和scipy兩個庫中模塊中都提供了線性代數的庫linalg,scipy更全面些。
  • 使用Visual studio code 作為外部 IDE 編寫 Blender2.9 腳本
    從官方網站下載 Python 解釋器分發: www.python.org/downloads/下載與 Blender 中使用的版本相同的 Python 解釋器版本。blender2.90 b的 Python版本為3.7.7下載後,安裝 Python 解釋器。
  • blender2.9通過python腳本從合成窗口中刪除節點
    如果有在blender內做過後期處理就會用到合成窗口,合成窗口和材質編輯窗口一樣,都是節點樹結構,所以有好多屬性和函數都差不多bpy.context.scene.node_treebpy.context.scene.node_tree.name
  • Python學習第116課——numpy.dot和矩陣相乘的數學運算
    【每天幾分鐘,從零入門python編程的世界!】matrix multiplication(矩陣相乘)就是兩個矩陣形式結構的數據進行運算的方法。同時因為矩陣在空間上是有它的意義的,所以矩陣運算是一個很精妙的東西。
  • python數據挖掘常用工具有哪幾種?
    python數據挖掘常用工具有哪幾種? python有強大的第三方庫,廣泛用於數據分析,數據挖掘、機器學習等領域,下面小編整理了python數據挖掘的一些常用庫,希望對各位小夥伴學習python數據挖掘有所幫助。
  • blender python入門系列教程二:data.objects對應的大綱位置說明
    大綱視窗是一個好神奇界面,這個功能都比其他3D軟體好用,主要因為blender是開源,系統打開了好多底層數據給用戶使用。點擊blender小頭像在這個顯示模式選擇blender文件模式在入門系列一教程中所提及bpy.data.objects,其實它是blender Python最基本的數據結構中的序列。
  • Blender遊戲引擎的 Python 腳本
    名稱很重要,因為我們將在 python 腳本中按名稱調用這些傳感器。對於"up"傳感器,還啟用"Tap"選項,以便此傳感器僅在您按下該鍵時註冊一次,否則,在釋放密鑰時,它也會再次註冊。點擊可確保傳感器僅觸發一次。將這兩個傳感器連接到 python 控制器,以便當按下其中任一按鈕時運行 python 腳本。現在還添加一個運動執行器並將其連接到控制器。將執行器重命名為"移動"。
  • 一篇文章幫你搞定Python異常處理
    中,錯誤觸發的異常如下Python中異常種類在python中不同的異常可以用不同的類型(python中統一了類與類型,類型即類)去標識,不同的類對象標識不同的異常,一個異常標識一種錯# 觸發IndexErrorl=['run1','aa']
  • blender2.9 python 各種活動對象訪問
    如何通過 BlenderPython API從腳本訪問 blender活動對象:活動窗口(在其中發生當前操作):bpy.context.area.spaces.active活動場景:bpy.context.screen.scene
  • 會照片處理的不只是ps,還有Python!
    最近發現了程式設計師的p圖神器——python。 python也可以修圖嗎?是滴!下面就帶你進入python的修圖世界。(以下面這張照片為例。),也是其他Python庫(如SciPy和Matplotlib)能夠處理圖像的基礎。
  • blender2.9 python3實用腳本合集
    更改所有材料的設置您想要更改材質設置,但不僅能作用單個材質,而且對於文件中的所有材質:# 導入blender模塊import bpy#枚舉所有材質for item in bpy.data.materials:#設置 "use_shadeless"item.use_shadeless = True
  • Python之UnitTest中yaml文件使用
    在yaml文件中添加name和pwd兩個參數代碼編寫:執行結果展示:"**"與"*"的區別"*"在python裡面有多種含義,一種是乘法運算符;二是接收多個參數;三是作為實參傳遞,自動進行解包然後傳遞給多個單變量參數;四是命名關鍵字參數"**"在python裡面用於接收類似於關鍵參數一樣賦值的形式的多個實參放入字典中(即把該函數的參數轉換為字典)
  • python教程之九錯誤和異常處理
    大多數的異常都不會被程序處理,都以錯誤信息的形式展現在這裡:>>> 10 * (1/0)Traceback (most recent call last):File "<pyshell#78>", line 1, in <module>
  • 序列比對在biopython中的處理
    在biopython中,支持對序列比對的結果進行讀寫,解析,以及運行序列比對的程序。 首先來看下多序列比對,多序列比對的軟體較多,比如clustalw, muscle, mafft等,輸出結果的格式也很多,比如clustal, fasta, phylip等。