Maxscript开发笔记

本文详细介绍了Maxscript在3Dmax中的各种高级用法,包括函数使用、对象操作、数组处理、条件判断、事件响应、脚本加密、导出规则、性能优化等多个方面,展示了Maxscript在3D建模和场景管理中的强大功能。
摘要由CSDN通过智能技术生成

1、fn就是function函数


2、获取Transform值,例bvalue = $.rotation.controller[1].value,数组由1开始,代表XYZ


3、#()代表是一空的数组创建


4、geometry as array 是用来获取场景所有几何体,geometry 是一个对象,可以换成objects 等其它对象


5、获取选中的几何体可以使用getcurrentselection()


6、获取所有组的方法

    groupArr = #()
    for i in helpers do
    (
        if (isGroupHead i) == true then
        (
            append groupArr i
        )
    )
    select groupArr

7、showProperties obj方法可以查看其下面的属性


8、a = #(1,2,3)
    b = a    --这样操作会出现a改变b会跟随改变,共用了同一个内存
    使用deepCopy 这样可以复制一份新的出来
    deleteItem 删除项


9、需要把变量转化为选中的使用:select 变量


10、a = box()
    a.isHidden = true(隐藏)/false(显示) 


11、函数返回两个值,可以使用#()


12、将对象添加到组里面,
    attachNodesToGroup <需要添加的对象> <主对象>


13、if判断为空,对象 == undefined ,也可以把变量 = undefined


14、打开组,才能删除物体


15、发布MZP插件,把文件.ms添加为压缩文件,然后把后缀改成.mzp
16、

 @arr是选中的物体的数组
for i = 1 to arr.count do     
(
     if i == 3 do 
     (
         delete arr[i]
     )
     --这样是更新,把数组里的空物体清掉
     arr = for node in arr where isvalidnode node collect node    
)


17、通过弹出按钮,确定返回事件

    fn WaitForApprovalAndThen action =
    (
        rollout approveRol "Press Ok to Continue"
        (
            local action
            button btnOk "Ok"

            on btnOk pressed do
            (
                destroyDialog approveRol
                action()            
            )
        )  
        createDialog approveRol
        approveRol.action = action
    )


    fn f2 = (print "f2")
    fn f1 = 
    (
        print "f1"
        WaitForApprovalAndThen f2
    )
    f1()


18、选择选中的含有几何物体的

local selObjects = (for o in selection where (isKindOf o GeometryClass) collect o)

19、线程休眠 sleep(<value>),<value>用秒来填入,1= 1秒

20、计算复杂处理过程使用了多少时间

    start = timeStamp()
    
    for i= 1 to 100 do        --进行一些复杂的处理
        print i
    end = timeStamp()
    --打印处理需要的时间
    format "Processing took % seconds\n" ((end - start)/ 1000.0)

21、swap(<value1>,<value2>)    ,可以把两个value交换

22、使用callbacks.addScript #selectedNodesPreDelete "BatchConvert()" id:#MXSHelp时,BatchConvert()函数要放到最外层
    *使用callbacks.addScript,需要配合callbacks.removeScripts id:#MXSHelp 使用,这个是让侦听结束

23、获取物体下的修改器里的数组,进行类的判断(meshsmooth,unwrap_UVW类...)

例1:
if (ClassOf $.modifiers[1]) == meshsmooth then
判断修改器列表下是否UV修改器,返回true/false

例2:
local checkUV = (for m in obj.modifiers where classof m == unwrap_UVW collect m).count > 0 


24、在3Dmax导出collisionbox必须使用"UCX_" 或“UBX_”做前缀,导出fbx或者Udatasmith,UE4才会默认为collisionBox

25、获取脚本当前保存的位置getThisScriptFilename() 


26、local arr = (for o in selection where (isKindOf o GeometryClass) collect o) 获取选中物体里的几何物体

27、弹出提示框,点击“确定或取消”,返回事件

 fn MessageWindowChecked action= 
    (
        rollout MessageCheckBox "友情提示" width:300 height:100
        (
            local actionEvent
            
            button SureButton "确定" pos:[50,65] width:75 height:20
            
            button CancelButton "取消" pos:[180,65] width:75 height:20
            
            on SureButton pressed do
            (
                destroyDialog MessageCheckBox
                actionEvent true
            )
            
            on CancelButton pressed do
            (
                destroyDialog MessageCheckBox
                actionEvent false
            )
            
        )
        createDialog MessageCheckBox
        MessageCheckBox.actionEvent = action
    )
    
    fn MessageEventBack Ischecked  = 
    (
        if Ischecked then
        (
            print "sure"
        )
        else
        (
            print "cancel"
        )
    )


    MessageWindowChecked MessageEventBack


    

28、使用路径时,“\”是不认的,要使用“/”

29、git上传

    把文件放到ImportModel文件夹下,这个是拉取下了的文件夹
    命令行:git add *                  //这个是把所有文件上传
            git add GUJU_V1.03.ms     //把单个文件上传
            git commit -m "第一版"    //写备注
            git push                 //上传服务器
            git log                    //查看上传日志


30、

sceneName = maxFilePath + maxFileName    
maxFilePath:文件的路径的宏,
maxFileName:文件名的宏。

31、Maxscript 生成加密文档mse格式,在maxscript界面下输入(会生成多一个mse文件):
    encryptScript "D:\work\Maxscript\.vscode\guju_2020-05-12_v1.04\GUJU_V1.04.ms" version:0


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值