Maya自身的功能就已經非常強大了,但是更棒的是它的擴展性非常強,提供API讓用戶自己來編寫插件Plugin。Maya的插件主要是兩種,一種是用C++編寫的,后綴為".mll",另一種是用Python編寫的,后綴為".py"。在用C++編寫插件時,我們可以用下面的這個CMakeLists.txt文件來生成項目工程:
SET(MAYA_PLUGIN_NAME "yourPlugin") SET(MAYA_DIRECTORY "C:/Program Files/Autodesk/Maya2015") SET(MAYA_HEADERS_DIR "${MAYA_DIRECTORY}/include") SET(MAYA_LIBRARY_DIR "${MAYA_DIRECTORY}/lib") SET(SOURCE_FILES yourPlugin.cpp ) source_group("" FILES ${SOURCE_FILES}) INCLUDE_DIRECTORIES(${MAYA_HEADERS_DIR}) LINK_DIRECTORIES(${MAYA_LIBRARY_DIR}) SET(LIBRARIES Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaUI.lib) SET(MAYA_DEFINITIONS _AFXDLL _MBCS NT_PLUGIN REQUIRE_IOSTREAM _BOOL) ADD_LIBRARY(${MAYA_PLUGIN_NAME} SHARED ${SOURCE_FILES}) TARGET_LINK_LIBRARIES(${MAYA_PLUGIN_NAME} ${LIBRARIES}) SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES COMPILE_DEFINITIONS "${MAYA_DEFINITIONS}") SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES OUTPUT_NAME "${MAYA_PLUGIN_NAME}") SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES SUFFIX ".mll") SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES CLEAN_DIRECT_OUTPUT 1) SET_TARGET_PROPERTIES(${MAYA_PLUGIN_NAME} PROPERTIES LINK_FLAGS "/export:initializePlugin /export:uninitializePlugin")
需要注意的是,如果你是在Windows下用VS來生成項目工程,你的VS編譯器是用32位還是64位一定要跟你的Maya版本同一,不然編譯生成的插件無法使用。
當編譯成功時,會生成后綴為".mll"的插件,這個就是我們需要的文件,我們將其拷貝到Maya的插件目錄下( C:\Program Files\Autodesk\Maya2015\bin\plug-ins ),然后在Maya中加載這個插件,在Window -> Setting/Preferences -> Plug-in Manager 中找到你的插件,點加載。
一般來說,自己寫的插件需要在命令行中運行,我們打開Command Shell或者Script Editor來使用我們的插件。