Blender外掛程式載入研究

2022-04-29 07:30:11 字數 1582 閱讀 5572

_qk_locals = locals()

def register():

if "bpy" in _qk_locals:

print(">>> plugin's submodules reload")

from importlib import reload

_modules_loaded[:] = [reload(val) for val in _modules_loaded]

del reload

from bpy.utils import register_class

for mod in _modules_loaded:

for cls in mod.classes:

print('>>> register: ', cls.__name__)

register_class(cls)

本分析基於blender2.79b.

__init__.py檔案中插入輸出**, 檢視效果

在blender使用者配置的"add-ons"介面中, 勾選外掛程式.

1init.py模組載入

if "bpy" in locals():

print('reload...')

from importlib import reload

_modules_loaded[:] = [reload(val) for val in _modules_loaded]

del reload

現象: 判斷塊內**在反覆勾選中, 沒有觸發

原因:"bpy" in locals() -> false

2 在1的基礎上, 修改__init__.py檔案**

現象: 判斷塊內**在第一次重勾選時觸發

原因:"bpy" in locals() -> true

在__init__.py**修改之後, 模組第一次重載入時會觸發.

3 修改__init__.py模組之register()函式

_qk_locals = locals()

def register():

if "bpy" in _qk_locals:

print(">>> plugin's submodules reload")

from importlib import reload

_modules_loaded[:] = [reload(val) for val in _modules_loaded]

del reload

from bpy.utils import register_class

for mod in _modules_loaded:

for cls in mod.classes:

print('>>> register: ', cls.__name__)

register_class(cls)

現象: 判斷塊內**在反覆勾選中, 反覆觸發

原因:"bpy" in _qk_locals -> true

載入外掛程式(三)

接著 二 重新把vlc entry core 寫出來 int vlc entry core vlc set cb vlc set,void opaque 注意 va arg ap,module t submodule 這句,ap正好對應第四個引數,它是 module,因此module被建立出來了。後...

常用JS(JQ)外掛程式研究

在我們還沒有能力編寫外掛程式或是酷炫特效的時候,往往會選擇使用前輩編寫的外掛程式,網上的外掛程式庫更是琳琅滿目,但是文件甚少,肯定也有優劣之分,因此決定將平時使用過的外掛程式篩選分析後在此記錄!1 textillate.js 是一款效果炫酷的jquery和css3文字動畫特效庫外掛程式,它通過結合其...

載入外掛程式(二)之靜態載入

舉個例子來說明外掛程式的載入,以核心外掛程式為例,它在libvlc new中執行,流程如下 上圖中的vlc entry core是乙個函式指標,定義在modules.h中 core module int vlc entry core int void void int,void 那麼vlc entr...