最近周圍很多朋友開始接觸3dsmax的相關開發,正好我以前剛入行的那會有過一些3dsmax相關的經驗是以在這分享給大家希望對大家有所幫助
Pymxs or MaxPlus?
很多剛接觸3dsmax相關開發的朋友會經常會疑惑我應該學
pymxs
還是
MaxPlus
.
我建議是學
pymxs
- pymxs是一個對maxscript對象的動态綁定, 類似于
的Maya
,對于有maxscript基礎的可以很容易上手cmds
- 3dsmax-2021以及以後的版本已經遺棄了
MaxPlus
https://forums.autodesk.com/t5/3ds-max-programming/maxplus-is-no-longer-available-in-2021/td-p/9407304
打開 Macro Recorder
這樣我們每一步的操作都能在
Maxscript Listener
中顯示了
打開腳本編輯器
快速開始maxscript
下面是maxscript的簡單用例
print "Hello Maxscript"
複制
再來一個建立一個
Box
并且存到一個叫box的變量中,我們未來調用
box
就等于調用了
Box()
這個對象
box = Box()
複制
列印目前box的名字
box = Box()
print box.name
複制
修改目前box的名字
box = Box()
print box.name
box.name = "renamed box"
print box.name
複制
看完上面的幾個簡單的例子是不是發現maxscript其實挺簡單?感覺就像在寫python一樣.
快速開始Pymxs
在編輯器中切換語言到python
同樣我們先建立一個
box
from pymxs import runtime as mxs
box = mxs.Box()
複制
列印目前box的名字
from pymxs import runtime as mxs
box = mxs.Box()
print box.name
複制
修改目前box的名字
from pymxs import runtime as mxs
box = mxs.Box()
print box.name
box.name = "renamed box"
print box.name
複制
maxscript和pymxs的不同
從上面的例子看出來
maxscript
和
pymxs
的寫法很十分相近,基本都是需要在前面添加個
mxs.
就可以了
有些maxscript特殊的文法我們需要稍微轉換一下才行
請看下面的輸出FBX的代碼片段行
請看下面的輸出FBX的代碼片段
FBXExporterSetParam "Animmation" true
FBXExporterSetParam "BakeFrameStart" 0
FBXExporterSetParam "BakeFrameEnd" 100
FBXExporterSetParam "BakeResampleAnimation" true
FBXExporterSetParam "Shape" true
exportFile "your/output/file.fbx" #noPrompt using:#FBXEXP selectedOnly:true
複制
轉換成python
from pymxs import runtime as mxs
mxs.FBXExporterSetParam("Animation", True)
mxs.FBXExporterSetParam("BakeAnimation", True)
mxs.FBXExporterSetParam("BakeFrameStart", 1)
mxs.FBXExporterSetParam("BakeFrameEnd", 100)
mxs.FBXExporterSetParam("BakeResampleAnimation", True)
mxs.exportFile(
"your/output/file.fbx", mxs.Name("noPrompt"),
using=mxs.Name("FBXEXP"), selectedOnly=True,
)
複制
在3dsmax 2021之前的pymxs的文檔很少我們基本可以直接看maxscript的文檔去開發即可
下面是我為大家找的一些有用的參考:
- http://help.autodesk.com/view/MAXDEV/2021/ENU/?guid=Max_Python_API_using_pymxs_html
- https://github.com/ADN-DevTech/3dsMax-Python-HowTos