3Dmax Script 自动减面

工作中需要对很多的家装Vray材质模型自动减面 并导出相对应的实时渲染的模型数据到unity3D,遇到很多坑,特此记录并分享。

1.自动减面:3Dmax自动减面的修改器有三个:MultiRes、Optimize、ProOptimizer。 对比下来 ProOptimizer 减面效果比较好。以下代码为目标添加修改器并设置保留UV的属性。

addModifier _obj(ProOptimizer()) ui:on
_modif = _obj.modifiers[#ProOptimizer]	
_modif.KeepUV = true
_modif.LockUV = true
_modif.OptimizationMode = 1
_modif.Calculate = true	
_modif.vertexCount = _VertsCount

初次测试以为减面功能完成。 后来发现有时候运行不会执行减面操作,经过多次测试需要减面的模型要处于选中状态。为此在代码前面添加减面命令。

select _obj

以为减面功能完成。 一波三折,有时候仍然不执行calculate 运算。多次测试都要手动点击一次,后续代码才执行正常。查了很多资料。百度不到,只能google 。外网的大佬们说要加一句:redrawViews() 。经测试并不能解决问题。后来拜了佛祖。佛祖给了我一个灵光。心想每次点一次calculate,是否是要在修改器面板下执行呢?后来加了以下这句代码切换至修改面板语句:

max modify mode 

多次测试没有问题。 真的是各种Trick,查无可查。

之前写的自动烘焙AO的脚本,有时候自动展UV失灵,估计也是以上问题造成的。以下是自动减面的全部函数部分:

fn fn_OptimizeMesh _obj _vertsCount=(
    max modify mode 
    select _obj
    _modif = _obj.modifiers[#ProOptimizer]
    if(_modif == undefined)do(
        addModifier _obj(ProOptimizer()) ui:on
        _modif = _obj.modifiers[#ProOptimizer]	
    )
    _modif.KeepUV = true
    _modif.LockUV = true
    _modif.OptimizationMode = 1
    _modif.Calculate = true	
    redrawviews()
    _modif.vertexCount = _VertsCount
)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值