來(lái)火星時(shí)代學(xué)視頻剪輯,有哪些好處呢?為了滿足人們的不同學(xué)習(xí)及需求,火星時(shí)代開設(shè)有許多有關(guān)于視頻剪輯應(yīng)用的專業(yè)課程,既有長(zhǎng)期班:剪輯大師班、影視剪輯與包裝設(shè)計(jì)師班,也有短期班:短視頻創(chuàng)作班,學(xué)習(xí)時(shí)間各不相同,企業(yè)在招聘時(shí),會(huì)對(duì)有一定項(xiàng)目經(jīng)驗(yàn)的人才更加青睞,所以火星時(shí)代也會(huì)在教學(xué)期間引入商業(yè)項(xiàng)目,讓同學(xué)們能夠通過(guò)實(shí)踐的方式來(lái)理解課上所學(xué)內(nèi)容的同時(shí),還能進(jìn)一步提高自身綜合實(shí)力,并積累項(xiàng)目經(jīng)驗(yàn)與作品,使就業(yè)更具競(jìng)爭(zhēng)力。
(資料圖片僅供參考)
四、編寫Python腳本的提示與技巧
4.1 內(nèi)置Python庫(kù)
Python具有許多有用的內(nèi)置庫(kù)和數(shù)據(jù)結(jié)構(gòu)。大多數(shù)情況下,可以使用一個(gè)現(xiàn)有的庫(kù)來(lái)完成常規(guī)的編程任務(wù),這樣不必與MEL腳本-樣創(chuàng)建自定義工具。
4.2使用Python類的自定義UI
其中一個(gè)方便的Python函數(shù)是functools.partial,該函數(shù)可用于將附加信息傳遞到回調(diào)函數(shù)。
例如,下面的類創(chuàng)建的窗口具有多個(gè)在單擊時(shí)會(huì)輸出數(shù)字的按鈕。
from functools import partial
import maya. cmds as cmds
class ButtonWin(object):
def__ init (self):
self. win = cmds. window()
self.layout = cmds. columnL ayout(parent=self. win)
for x in range( 10):
cmds. button(label= "Click Here %d"%x, parent=self.layout,
command=partial(self.
report,x))
cmds. showWindow()
def report(self, buttonIndex, value):
print "button %d got %s "%(buttonIndex, value)
f= ButtonWin()
4.3 在Maya中調(diào)試Python腳本
使用Python腳本的一個(gè)優(yōu)點(diǎn)是可以在開發(fā)過(guò)程中使用調(diào)試器。這在解決腳本問題時(shí)可以節(jié)省大量時(shí)間。
4.3.1 使用PDB
Python在PDB模塊中附帶一個(gè)內(nèi)置的調(diào)試器。PDB的文本界面適用于快速調(diào)試會(huì)話。如果在從Script Editor (腳本編輯器)調(diào)用的腳本中使用PDB,則每當(dāng)PDB需要輸入時(shí)都會(huì)出現(xiàn)輸入對(duì)話框。使用PDB與導(dǎo)入PDB并按如下方式設(shè)定斷點(diǎn)一樣簡(jiǎn)單:
import pdb
pdb.set trace()
執(zhí)行達(dá)到第2行時(shí),將顯示輸入對(duì)話框,您可以使用標(biāo)準(zhǔn)命令來(lái)繼續(xù)、跳過(guò)、輸出值等。
4.3.2 使用外部調(diào)試器
對(duì)于復(fù)雜調(diào)試任務(wù),可能更易于使用外部圖形調(diào)試器。存在多個(gè)免費(fèi)的和商業(yè)的IDE,例如: ;
●Wing IDE
●Winpdb
●Eclipse
可以先在Maya中導(dǎo)入一個(gè)工具模塊來(lái)使用外部調(diào)試器,導(dǎo)入該模塊會(huì)打開到IDE的通信套接字。IDE連接到Maya后,即可打開腳本文件來(lái)設(shè)定斷點(diǎn)、檢查變量值等。每個(gè)IDE都將具有其自己所需的工作流。
4.4將Python函數(shù)注冊(cè)為MEL程序
可以使用createMelWrapper函數(shù)將Python函數(shù)注冊(cè)為MEL程序。然后,在調(diào)用MEL程序時(shí),會(huì)調(diào)用Python函數(shù),從而傳遞收到的任何參數(shù)并返回函數(shù)的結(jié)果。
路徑為:
C:Program Files\AutodeskMaya2014PythonNliblsite-packagesmayamel
或者,在腳本編輯器中執(zhí)行以下命令:
import maya.mel
help(maya.mel.createMelWrapper)
使用該函數(shù)的優(yōu)點(diǎn)如下。
通過(guò)將Python函數(shù)注冊(cè)為MEL程序,您不需要獲取MEL腳本的源代碼(如果程序和腳本共享相同的名稱)。相比之下,如果使用的是Python,則必須先顯式導(dǎo)入腳本,然后才能訪問其包含的函數(shù)或類。使用該包裹器函數(shù)可以使Maya即時(shí)獲得源代碼,且不必始終加載每個(gè)腳本。
Maya中的某些屬性只接受MEL程序。例如,在"asset" (以前稱為container )節(jié)點(diǎn)中,Context Properties (上下文特性)區(qū)域下的Rmb Command (鼠標(biāo)右鍵命令)屬性只接受MEL程序。
示例:
以下示例說(shuō)明如何使用createMelWrapper函數(shù)將Python函數(shù)注冊(cè)為MEL程序,以便使用"asset”(以前稱為container )節(jié)點(diǎn)中的Rmb Command (鼠標(biāo)右鍵命令)屬性。
01 將以下腳本另存為rmbScript.py,并保存到Maya2014/scripts目錄中。
import maya.cmds as cmds
import maya.mel as mel
def exCoNotes(node):
if(cmds.nodeType(node)== container):
objCont = node
else:
objCont = cmds.container(q=True, findContainer=node)
exec(cmds. gettr(objCont+ ".notes”
pyfunction = "main("+node+”""+objCont+ "
exec(pyfunction)
cmds. select(node, r= True)
def setThisContainerCurrent(node):
if(cmds.node Type(node)== container"):
objCont = node
else:
objCont = cmds. container(q= True, findContainer=node)
cmds. container(objCont, e=True, c=True)
cmds. select(node, r= True)
def rmbMyContainerScript():
return ("Execute Container Notes, "exCoNotes ,
"Set This Container Current", "setThisContainerCurrent)
02 在Script Editor (腳本編輯器)中,從Python選項(xiàng)卡執(zhí)行以下腳本。該操作將創(chuàng)建所需的MEL包裹器腳本。
from rmbScript import*
import maya.cmds as cmds
import maya.me/ as mel
mel.createMelWrapper(rmbMyContainerScript.retType= string[]")
mel. createMelWrapper(exCoNotes)
mel.createMelWrapper(setThisContainerCurrent)
03 創(chuàng)建一個(gè)對(duì)象。
04 選擇Assets>Advanced Assets>Create(資源>高級(jí)資源>創(chuàng)建),然后將rmbMyContainerScript添加到資源的Rmb Command (鼠標(biāo)右鍵命令)屬性。
注意:還可以借助變換資源使用該步驟;但是,節(jié)點(diǎn)類型將為dagContainer。
05 將類似如下的腳本添加到asset (資源)節(jié)點(diǎn)的Notes (注釋)部分。
def main(node, container):
print node
print container
06 在Script Editor (腳本編輯器)的MEL選項(xiàng)卡中,輸入以下腳本。
rehash;
07 在對(duì)象上單擊鼠標(biāo)右鍵(),并從標(biāo)記菜單中選擇Custom (自定義)。您現(xiàn)在可以查看自定義鼠標(biāo)右鍵菜單。
4.5 為已設(shè)置動(dòng)畫的曲線創(chuàng)建關(guān)鍵幀
可以使用以下Python示例腳本來(lái)創(chuàng)建已設(shè)置動(dòng)畫的曲線并設(shè)定其關(guān)鍵幀。
import maya. OpenMaya as om
import maya. OpenMayaAnim as oma
def addkeys(plugName, times, values, changeCache):
# Get the plug to be animated.
se/ = om.MSelectionList()
sel.add(plugName)
plug = om.MPlug()
sel.getPlug(0, plug)
# Create the animCurve.
animfn = oma MFnAnimCurve()
animCurve = animfn.create(plug, oma.MFnAnimCurve kAnimCurveTL)
# Copy the times into an MTimeArray and the values into an MDoubleArray.
timeArray = om.MTimeArray()
valueArray = om.MDoubleArray()
for iin range(len(imesl):
timeArray. append(om.MTime(timesl[i, om.MTime.uiUnit())
valueArray. append(values[i])
# Add the keys to the animCurve.
animfn. addKeys(
timeArray,
valueArray,
oma.MFnAnimCurve.KTangentGlobal,
oma.MFnAnimCurve.kTangentGlobal,
False,
changeCache
)
以上示例代碼會(huì)將關(guān)鍵幀動(dòng)畫添加到通道(即栓)。如果不需要具有撤消更改的能力,則可以按以下方式進(jìn)行調(diào)用。
addkeys("pCube1.tx, [1.0, 3.0, 5.0], [0.6, 1.2, 2.4, None)
但是,如果需要具有撤消更改的能力,那么請(qǐng)按以下方式進(jìn)行調(diào)用。
changeCache = oma.MAnimCurveChange()
addkeys("pCube1.tx; [1.0, 3.0, 5.0], [0.6, 1.2, 2.4], changeCache)
然后執(zhí)行以下腳本以撤消更改。
changeCache,undolt()
注意:為簡(jiǎn)便起見,該函數(shù)假定由plugName指定的栓當(dāng)前未設(shè)置動(dòng)畫。
更多培訓(xùn)課程、學(xué)習(xí)資訊、課程優(yōu)惠、課程開班、學(xué)校地址等學(xué)校信息,請(qǐng)進(jìn)入 西安雁塔火星時(shí)代教育 詳細(xì)了解,咨詢電話: