blender python腳本重點基礎-context選擇

2021-01-09 blender幫

今天主要講解一下blender上下文context選擇,活動項,選擇物體,可選物體,各種方法和細節的區別

在3D視窗我放置了立方體命名為A,球體命名為P,相機命名為C,點光源命名為L,各自一個,方便記憶

01

bpy.context.object活動項,系統會把一堆所選物體,把單獨激活為活動項外框顯示顏色同其它選擇物全不一樣,活動項算是Blender獨有的技術

>>> bpy.context.object

bpy.data.objects['A']

但如果將bpy.context.object賦值會出錯,它只讀,將物體用代碼設成活動項要用三條代碼

>>> bpy.context.object=bpy.data.objects['C']

Traceback (most recent call last):

File "<blender_console>", line 1, in <module>

AttributeError: bpy_struct: Context property "object" is read-only

02

bpy.context.selected_objects 所有選擇物體包括活動項物體,結果是一個列表,要了解一件事情,活動項物體不會指定列表在前或尾,物體排序是按物體在場景生成的順序來排列,內順序是不可調整

>>> bpy.context.selected_objects

[bpy.data.objects['L'], bpy.data.objects['C'], bpy.data.objects['A'], bpy.data.objects['P']]

在3D視窗加猴頭命名為D

>>> bpy.data.objects['D'].select_set(True)

>>> bpy.context.selected_objects

結果顯示:

[bpy.data.objects['L'], bpy.data.objects['C'], bpy.data.objects['A'], bpy.data.objects['P'], bpy.data.objects['D']]

比原有列表多了bpy.data.objects['D'],因為bpy.data.objects['D']後邊生成,排在後邊,不是後邊選擇排在後邊

03

bpy.context.selectable_objects 可選對象,對可以用shift+A菜單生成的對象都是可選對象,能用滑鼠在3D視窗選擇的物體

>>> bpy.context.selectable_objects

[bpy.data.objects['L'], bpy.data.objects['C'], bpy.data.objects['A'], bpy.data.objects['P'], bpy.data.objects['D']

所得結果同之前選擇了這幾個物體所用bpy.context.selected_objects一樣,但bpy.context.selectable_objects是可選的全部

喜歡blender腳本編程的小夥伴關注我,後續會推出更多教程,到一定人數會出視頻教程。

相關焦點

  • blender python基礎知識大集合
    使用 blender python編寫代碼需要對 blender python基礎有一定的了解,本文很好地介紹了基礎代碼bpy.context 當前環境的所有選擇內容的bpy.context.object 當前活項物體,只能選擇一個mesh = bpy.data.objects["mesh"] Mesh變量存儲物體網格數據
  • 在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
  • 使用Blender2.9 python 腳本複製多個對象
    blender python 腳本在 Blender2.79 到 2.8 之間發生了巨大的變化,2.8之後變更了代碼使用方式,原來2.79腳本不起作用,如果你是2.8之後才開始學習blender python 腳本,儘量參考BlenderPythonAPI2.8之後,建議直接用BlenderPythonAPI2.9
  • 通過Blender python 渲染和保存圖像
    通過blender中的 python 腳本渲染和保存多個圖像。我知道如何通過 Blender GUI 渲染和保存圖像,但我想通過我的腳本完成所有操作,因為我使用的是一組嵌套循環,需要保存多個圖像。能夠渲染圖像,保存圖像與輸出成功。
  • BLENDER2.9 PYTHON 適合初學者:一些有用的循環
    學 python和 bpy API需要花費一些時間,你可以很容易地理解 blender python API,只要你按TAB鍵它是自動完成代碼關鍵詞的,所以你可以在 blender python控制臺中找到可用的選項。
  • blender2.9 python3網格編輯模式內定字符串
    在 blenderpython腳本中,對字符串處理比較多,初學者都認為簡單就用它來修改對象名,或者用它來劃分列表等等,其實 blender python中定義了很多大寫的字符串,如果寫錯了,系統會報錯,所以有必要先了解一下內部定義的字符串。
  • 使用Visual studio code 作為外部 IDE 編寫 Blender2.9 腳本
    從官方網站下載 Python 解釋器分發: www.python.org/downloads/下載與 Blender 中使用的版本相同的 Python 解釋器版本。blender2.90 b的 Python版本為3.7.7下載後,安裝 Python 解釋器。
  • 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 界面窗口通過 python腳本
    要將當前窗口screen(使用當前context)以指定比率拆分為兩個窗口,我們需要執行以下運算符:bpy.ops.screen.area_split(direction='VERTICAL', factor=0.5):方向direction = 設置分割方向("水平"或"垂直")factor因子 = 拆分窗口的百分比新窗口(新區域
  • Blender遊戲引擎的 Python 腳本
    您將學習如何在 Blender 中使用 Python 腳本用腳本調整車輛移動,加速,停車。請記住,汽車只是用作使用 Python 的示例。本教程將教您 Blender 遊戲引擎的 Python 腳本基礎知識,包括通過腳本訪問和更改邏輯信息。即使您對 Python 有所了解,本教程也很容易理解。1使用腳本讓我們真正的遊戲腳本。
  • blender python處理矩陣乘法變更符號
    用blender腳本編寫器編寫任何矩陣乘法,乘法* 語法仍然有效,這個只能作為 2.8 中嘗試普通乘法,而不是 2.7 中的矩陣乘法。如果你用在矩陣乘法會報出有趣的錯誤,因為這並不一定會拋出一個錯誤,a * ba @ b想要支持 2.7 和 2.8 的相同矩陣乘法樣式?
  • blender python更新燈類型的檢查
    自從blender2.8後,燈光已經沒有LAMP類別,所有燈光最高類別採用LIGHT,系統大致分為了4個子類:POINT,SPOT,AREA,SUN在3d視窗中隨意選擇一個燈光,輸入代碼l=bpy.context.object
  • Blender 2019
    1.3D掃描可以直連3D掃描儀,掃描後導入blender2.視頻序列編輯器更好的類似PR的動畫剪輯器
  • blender2.9 python3實用腳本合集
    添加新腳體,直接開始編寫腳本!更改所有材料的設置您想要更改材質設置,但不僅能作用單個材質,而且對於文件中的所有材質:# 導入blender模塊import bpy#枚舉所有材質for item in bpy.data.materials:#設置 "use_shadeless"item.use_shadeless = True
  • 用blender腳本你才能真正了解點光源,這個是帶外殼的物體
    在場景,放置了一個點光源「Point」,並單獨選擇它a=bpy.context.selected_object先看一下變量a是什麼類型type(a)<class 'list'>選擇集就是一個列表type(a[0])<class 'bpy_types.Object'>type(a[0].data)<
  • 如何在 Blender 2.8 Python API 中將對象網格設置為活動
    若要在 Blender 2.8 Python API 中將網格(對象)設置為活動,context.view_layer使用「網格」的active屬性而不是2.8之前上下文的場景context.scene。
  • blender python類別
    Blender python 使用面向對象的方法處理其數據。對象類包含泛型屬性,如對象的位置。然後,它使用它的數據屬性來使用特定於對象類型的類來存儲對象特定數據,每個數據類型都是 ID 的子類bpy.data.objects是 Object類實例的列表。
  • 如何設置PyCharm2020,連接到blender進行代碼編寫
    沒有明確的方式將 IDE 連接到允許快速工作流程的blender建議本文檔展示了一個blender2.9-pycharm2020 開發代碼工作流程,你會發現,方便處理你好多的麻煩。接下來,我們將連接這此文件夾到blender,即 Blender 始終知道如何查找此文件夾打開攪拌機文件 -> 用戶首選項在文件選項卡查找腳本路徑,並指向我們剛剛製作的文件夾
  • Blender Python:數學網格
    概要掌握了使用「頂點和面」創建網格的基礎知識之後,重要的是要了解一些使用更有效的過程生成網格的技術。該頁面介紹了一些代碼,這些代碼用於根據數學方程式繪製網格。在此過程中,您可以看到如何使用變量和循環來組織頂點和面。波面變數這些變量對於創建波表面以及使我們能夠控制創建變化都是必不可少的。
  • 漫談算法設計與腳本語言(grasshopper, python)
    就python來講可以實現:面向對象編程, 過程式編程, 函數式編程.[4]腳本語言: 設計師與計算機的對話的接口自世界上第一臺通用計算機而腳本語言可以在這些軟體應用層之上再建一層用戶腳本層, 通過編寫腳本把軟體為你開放的接口關聯起來為你的設計服務.通過腳本語言, 設計師可以生成設計, 開發出設計原型,並快速迭代.