本帖最后由 剑客 于 2016-9-29 08:50 编辑
花了几天去处理这个自动2UV的事情,感觉max的 script还是很强的,只是语法有点怪异;花10分钟写点记录在这。
1-场景模型数组的获取;
Objects as Array
定义和获取直接一起了,Objects直接用就是;
2-批量打开文件夹下同类文件;
files = getFiles "i:\\我的文件\\模型\\LP\\*.max" 文件后缀任意,只要是max支持的类型
for f in files do (importFile f #noPrompt) --追加方式,注意别选择太多太大的物体
3- float数组的直接定义
MyfloatArray = #[123.6,345.6,8768.789] 其他的类型自己需要时候去去查在线文档
4- 选择模型和添加UVW展开的修改器
clearSelection()
select $GY803FDM00010301EF0200210848499
modPanel.addModToSelection (Unwrap_UVW ()) ui:on
subobjectLevel = 3
5-对选中的物体进行2UV,没完成最后的展平点击的问题
<void><Unwrap_UVW>.flattenMap <float>angleThreshold <point3 array>normalList <float>spacing<boolean>normalize <integer>layOutType <boolean>rotateClusters <boolean>fillHoles
6-删除UVW层
for i in selection do (i.modifiers[#unwrap_uvw].unwrap.move()
deleteModifier i 1 )
7-运行脚本中,单个选择运行及脚本添加自动展平2UV
modPanel.addModToSelection (Unwrap_UVW ()) ui:on
subobjectLevel = 3
$.modifiers[#unwrap_uvw].unwrap.move ()
$.modifiers[#Unwrap_UVW].texMapList.count = 0
$.modifiers[#Unwrap_UVW].texMapIDList.count = 0
$.modifiers[#Unwrap_UVW].baseMaterial_list.count = 1
$.modifiers[#Unwrap_UVW].baseMaterial_list[1 = undefined
$.modifiers[#Unwrap_UVW].texMapList.count = 0
$.modifiers[#Unwrap_UVW].texMapIDList.count = 0
$.modifiers[#Unwrap_UVW].texMapList.count = 1
$.modifiers[#Unwrap_UVW].texMapIDList.count = 1
$.modifiers[#Unwrap_UVW].texMapList[1 = Checker ()
$.modifiers[#Unwrap_UVW].texMapIDList[1 = -1
actionMan.executeAction 0 "40021" -- Selection: 全选
$.modifiers[#unwrap_uvw].flattenMap 45 #([1,0,0], [-1,0,0], [0,1,0], [0,-1,0], [0,0,1], [0,0,-1]) 0.02 true 1 true true
subobjectLevel = 0
modPanel.setCurrentObject $.modifiers[#Unwrap_UVW
modPanel.addModToSelection (Unwrap_UVW ()) ui:on
$.modifiers[#unwrap_uvw].unwrap.setMapChannel 2
8-完整的ctrl+E实现选择物体自动2UV代码
|
|