速看(blender的插件在哪)blender啟用插件,blender插件開發(fā)入門,一天一天歌詞,
目錄:
1.blender插件開發(fā)教程
2.blender插件有什么用
3.blender插件怎么使用
4.blender插件介紹
5.blender自帶插件
6.blender實用插件
7.blender必備插件
8.blender自帶插件講解
9.blender插件網(wǎng)
10.blender插件安裝在哪
1.blender插件開發(fā)教程
身為游戲開發(fā)者,不想只用blender建模,想寫插件提升工作效率?一、介紹我希望這篇文章可以讓你快速入門,早知道插件的套路,少走彎路,這篇文章將先直接快速演示一遍如何創(chuàng)建插件工程,從為blender添加一個簡單實用小功能開始,開始帶大家在接下來的時間逐漸熟悉blender插件開發(fā),然辦公家具定制后才是回過頭來,介紹必要的常識資料。
2.blender插件有什么用
(我想大家在blender畫貼圖后,一定會一遍一遍不厭其煩的手動保存貼圖-UV/Image_Editor-Image-Save All Images,因為blender文件保存時不會保存貼圖等數(shù)據(jù),一旦什么時候忘記保存貼圖,在心安理得保存完blender文件后關(guān)閉blender猛然想起貼圖沒了,可謂欲吐血。
3.blender插件怎么使用
這次要添加的簡單又極其實用的功能便是:保存blender文件時自動保存所有已修改圖片)
4.blender插件介紹
建議跟隨本文章演示做一遍,本篇文章創(chuàng)建的基礎(chǔ)工程將在未來不斷填充擴展功能本文章使用2辦公家具定制.79版本,建議插件入門不要使用2.8版本二、創(chuàng)建第一個插件工程1、進入blender的用戶插件文件夾,創(chuàng)建工程文件
5.blender自帶插件
上兩圖貼出了blender的兩個插件路徑第一個路徑是用戶目錄插件,目錄:user\AppData\Roaming\Blender Foundation\Blender\scripts\addons,代表非系統(tǒng)原生插件,blender所有安裝的外置插件最終都會被解壓放置到這個文件夾下。
6.blender實用插件
安裝插件可以在blender的addon界面直接選擇zip文件安裝,也可以把zip文件中文件夾直接拖入此目錄完成安裝第二個是系統(tǒng)插件路徑,不建議將自辦公家具定制己寫的插件放入此地,此地不少系統(tǒng)插件的代碼可在以后做參考用,值得了解。
7.blender必備插件
請在user\AppData\Roaming\Blender Foundation\Blender\scripts\addons文件夾下新建工程文件夾HelloAddon,并在HelloAddon文件夾下再次新建三個文件夾“command_
8.blender自帶插件講解
operators”"model_data"、"view_panels"工程文件布局仿造mvc,在前期,我們會經(jīng)常與command_operators與view panels打交道,組合blender自身的命令與編寫相關(guān)界面,至于數(shù)據(jù)辦公家具定制層自然也都是blender內(nèi)置的各種數(shù)據(jù)了,基本不需要自定義數(shù)據(jù)層,暫不關(guān)注model_data文件夾。
9.blender插件網(wǎng)
我使用的文本編輯器為sublime3,僅有方便打開工程文件與python語法高亮功能:
10.blender插件安裝在哪
2、新建基礎(chǔ)腳本a.HelloAddon文件夾下新建入口腳本__init__.py
bl_info = { "name": "HelloAddon", "author": "作者", "version": (1, 0), "blender": (2, 79, 0), "loc辦公家具定制ation": "View3D > Tool Shelf >HelloAddon Panel", "description": "插件描述", "warning": "", "wiki_url": "", "category": "3D View", } import bpy import logging from . import model_data from . import command_operators from . i辦公家具定制mport view_panels def register(): bpy.utils.register_module(__name__) command_operators.register() view_panels.register() def unregister(): bpy.utils.unregister_module(__name__) command_operators.unregister() view_panels.unregister(辦公家具定制) if __name__ == "__main__": register()
以上代碼就是套路,不需要理解,主體為bpy.utils.register_module(__name_),作用是注冊import進來的所有模塊至于command_operators.register() 與 view_panels.register()則代表其他非模塊相關(guān)的注冊。
這里的代碼以后要新建工程直接ctrl c即可。view_panels文件夾底新建腳本_init__.py
import bpy def register(): pass 辦公家具定制 def unregister(): pass3、開始添加自動保存圖片功能command_operators文件夾下新建腳本save_dirty_images.py
import bpy from bpy.app.handlers import persistent from bpy.types import Operator @persistent def save_dirty_images(dummy): bpy.ops.image.save_dirty() pr辦公家具定制int(save image)
保存文件時自動保存圖片的其中一句關(guān)鍵代碼就在這里,即使用了系統(tǒng)命令bpy.ops.image.savedirty()擴展:可以在blender的系統(tǒng)腳本中找到此命令的類SaveDirty(Operator) 查看實現(xiàn)path:blender/release/scripts/startup/bl_operators/image.py:。
這個類的參數(shù)Operator,代表此類為blender可調(diào)用的操作類,其他函數(shù)中可根據(jù)bl_idname中的值直接調(diào)用執(zhí)行此類的execute方法,bl_label為blender界面中直接調(diào)用執(zhí)行此方法的命令名稱,可在blender辦公家具定制2.79中空格鍵鍵入SaveAllDirtyImages直接執(zhí)行此類中的execute中的函數(shù)功能。
我們的腳本中首先使用了一個空函數(shù)save_dirty_images(dummy)調(diào)用命令bpy.ops.image.save_dirty(),即執(zhí)行系統(tǒng)類SaveDirty(operator)的execute方法,這樣包裝起來是為了后續(xù)要將此函數(shù)傳入blender的保存文件回調(diào)方法中做參數(shù),該方法接受一個函數(shù)而不是方法,且@persistent與(dummy)是必須的參數(shù)。
此外我們在save_dirty_images函數(shù)底下 print(save image)輸出語句,以便待會能在控制臺看到執(zhí)行辦公家具定制成功的消息這里雖然創(chuàng)建了可直接執(zhí)行的命令,但要使得保存blender時自動保存修改過的圖片,還差了一步:找到blender保存文件的回調(diào)函數(shù),并將此類附加上去。
commandoperators文件夾下新建_init__.py腳本
import bpy from . import( save_dirty_images, ) def register(): #bpy.app.handlers.save_pre.append為blender保存文件時的回調(diào) bpy.app.handlers.save_辦公家具定制pre.append(save_dirty_images.save_dirty_images) def unregister(): bpy.app.handlers.save_pre.append(save_dirty_images.save_dirty_images)
好了,我們的目的已經(jīng)達到了,接下來打開blender,開始看效果!4、打開blender,啟用插件,測試功能ctrl+alt+U打開配置界面,啟用HelloAddon,并點擊左下按鈕SaveUserSettings保存設(shè)置。
Window/Toggle System Console打開控制臺,待辦公家具定制會可看到命令執(zhí)行成功我們要輸出的語句。
回到blender主界面,空格鍵后輸入SaveAllDirtyImages,可以看到我們剛才寫的函數(shù):
回車鍵執(zhí)行,可看到控制臺輸出了“save image”
也可以直接ctrl-s保存blender文件,也會在控制臺輸出save image,代表確實執(zhí)行了保存圖片命令,不過我們目前還未創(chuàng)建圖片,沒能看到效果,創(chuàng)建圖片的步驟留給讀者自行嘗試,在image editor創(chuàng)建圖片后切換到paint模式抹兩筆,先手動將圖片保存到自己要的目錄,然后就可以開始測試了,繼續(xù)往圖片上抹,然后ctrl-s保存blender文件,將能觀察到圖片也自動保存更新了。
保存blende辦公家具定制r文件時自動保存所有更改圖片,從此再無忘記保存圖片的煩惱,各位讀者用起來!5、功能升級上述雖然實現(xiàn)了保存文件自動保存圖片功能,但唯一的缺點是其只對已有保存路徑的圖片而言有效,若是新建圖片還未保存指定保存路徑,那么此方法會將其直接忽視掉,原因見前面的系統(tǒng)腳本實現(xiàn)。
所以我們現(xiàn)在來改寫系統(tǒng)的方法,當(dāng)然不是直接更改系統(tǒng)文件,我們將其實現(xiàn)copy出來,加上一個提示功能:若有新建圖片未指定保存路徑,則自動將圖片保存到blender文件的根目錄下。代碼如下:
import bpy import os from bpy.app.handlers import persistent辦公家具定制 from bpy.types import Operator @persistent def save_dirty_images(dummy): unique_paths = set() for image in bpy.data.images: if image.is_dirty: if image.packed_file: if image.library: self.report({WARNING}, "Packed lib辦公家具定制rary image: %r from library %r" " cant be re-packed" % (image.name, image.library.filepath)) else: image.pack(as_png=True) else: # 若blender與圖片均無路徑,則忽略此圖片自動保存 # 若blender有路徑而圖片無路徑,根目錄上自動保存 if image.filepath == "": if not bpy.data.辦公家具定制filepath == "": filepath = CreateUniquePath(os.path.split(bpy.data.filepath)[0] + "\\", image.name, ".png") image.filepath = filepath else: filepath = bpy.path.abspath(image.filepath, library=image.library) if "\\" not in filepath and "/" not in filep辦公家具定制ath: print("Invalid path: " + filepath) elif filepath in unique_paths: print("Path used by more than one image: %r" % filepath) else: unique_paths.add(filepath) image.save() print(save image) def CreateUniquePath(base_path, fi辦公家具定制le_name, extension): path = base_path + file_name + extension while os.path.isfile(path): file_name += ".001" path = base_path + file_name + extension return path class SaveDirty(Operator): """Save all modified textures""" bl_idname =辦公家具定制 "image.save_dirty_images" bl_label = "SaveAllDirtyImages" def execute(self, context): save_dirty_images(None) return {FINISHED}
將代碼更改后,現(xiàn)在能保存新建未指定路徑的圖片,路徑圖片名稱將與blender文件內(nèi)的圖片名稱相同,若根目錄下已有相同名稱圖片,則保存名稱往后疊加.001到這里為止,一個完整而實用的小功能就完成了!6、為下一篇文章做準(zhǔn)備。
只有一個看不見摸不著的命令怎么行,本著全都要的原則,下面我辦公家具定制們來實現(xiàn)一個UI的hello world!下面先來寫一個界面函數(shù)view_panels文件夾底下新建腳本hello_panel.py,并修改viewpanels/_init__.py,添加語句。
from . import(hello_panel)
view_panels文件夾底下新建腳本hello_panel.py
importbpyfrombpy.typesimportPanel,Menu,UIList,PropertyGroupfromHelloAddonimportcommand_operatorsclass
HelloWorld(Panel):bl_space_type=VIEW_3Dbl_辦公家具定制region_type=TOOLSbl_category=HelloAddonbl_idname=hello_world
bl_label=HelloWorld# bl_options = {DEFAULT_CLOSED}defdraw(self,context):layout=self.layoutlayout.label
("你好UI")layout.operator("image.save_dirty_images",text="保存圖片")重新打開blender(注意blender插件更改后需要重啟blender):
可以看到T面板已經(jīng)出現(xiàn)HelloAddon面板,包含HelloWorld標(biāo)辦公家具定制題(由bl_label決定)與Label“你好UI”以及按鈕“保存圖片”三、blender腳本插件入門心得跟著上面做完一個插件功能,現(xiàn)在開始介紹如何自行深入學(xué)習(xí)blender腳本:。
途徑1:打開blender的text editor,很多模板文件可供復(fù)讀(制):
途徑2:活用python console中的.后代碼提示快捷鍵自動補全查看方法
默認(rèn)的智能提示快捷鍵未ctrl+space,對中國人而言實在不友好,我改為了ctrl+alt+/,建議讀者也改為此鍵位途徑3:關(guān)注Outliner的Data-Blocks面板,極其方便,新手時對blender數(shù)據(jù)塊摸不著頭腦時務(wù)必打開此面板,直接。
http:/辦公家具定制/bpy.data.xxx點出來,如bpy.data.images[myimage]....、bpy.data.objects[myobj].data...,此面板下要找什么數(shù)據(jù)一路沿著+號點下去即可看到,可以說是可視化的代碼自動補全!
途徑4:查詢api(實用性不高)
途徑5:blender python 全球最大愛好者論壇:Stack Exchange
途徑6:查看各類開源插件blender插件那么多,隨便拿起一個找到想學(xué)的功能就可以開始copy了,不需要自己從零走,何樂不為本篇文章到此結(jié)束,有什么想法歡迎提出,下一篇文章內(nèi)容將根據(jù)評論區(qū)而定,當(dāng)然這第一篇文章很可能根本沒什么人看到,那我就按照自辦公家具定制己想法繼續(xù)走啦。