分享:蒙皮坏面模型的修复方法以及脚本方案
破面模型 一般来至于 反编译的模型资源,例如从一些游戏里解包出来的模型还原到FBX,在导入到3dsMax或Maya后出现坏面
有时候也出现在模型格式转换的时候
最终要达到的效果:保持蒙皮信息,将模型缝合,包括UV
主要用到2个工具:Snapshot / SkinWrap
1,对坏面模型执行Snapshot操作
Snapshot其实就是将当前的模型复制了一份,不带Skin,在此可以自由的对模型进行修改
在此阶段,对模型进行面的缝合,UV的缝合,重设模型法线,赋予光滑组
2,在新的模型上使用SkinWrapper修改器,套用原来的蒙皮模型,将原有的蒙皮信息还原回来
生成出新的Skin之后,将SkinWrap修改器删除
3,删除旧的坏面模型
(
-- 指定坏面的模型
brokenMesh = $
-- Snapshot当前模型
newMesh = snapshot brokenMesh
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- XFrom
ResetXForm newMesh
-- 焊点操作,后面的0.0001是容差值
meshop.weldVertsByThreshold newMesh #{1..(meshop.getNumVerts newMesh)} (0.0001)
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 合并UV
-- 有点小麻烦,需要开启UVEditor
setCommandPanelTaskMode #modify
-- 设置到修改面板
select newMesh
-- 添加一个UV修改器
addModifier newMesh (Unwrap_UVW())
-- 开启UVEditor
newMesh.modifiers[#Unwrap_UVW].edit()
newMesh.modifiers[#Unwrap_UVW].setTVSubObjectMode 1
-- 选择所有的UV
max select all
-- 更新UVEditor面板
newMesh.modifiers[#Unwrap_UVW].updateMenuBar()
-- 进行合并操作
newMesh.modifiers[#Unwrap_UVW].setWeldThreshold (0.0001)
newMesh.modifiers[#Unwrap_UVW].weldSelected()
-- 退出UVEditor
deselect newMesh
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 为模型重新设置光滑组
-- EditNormal修改器
local en = Edit_Normals()
addModifier newMesh en
en.Reset()
-- Smooth修改器
local sm = smooth autosmooth:true threshold:180
addModifier newMesh sm
-- 可选:塌陷以上修改器
collapseStack newMesh
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 赋予SkinWrap修改器,将旧模型作为目标传入
local sw = Skin_Wrap meshList:#(brokenMesh) engine:0 name:"SkinWrap"
addModifier newMesh sw
-- 转换成新的Skin修改器
setCommandPanelTaskMode #modify
select newMesh
sw.weightAllVerts = true
sw.ConvertToSkin true
-- 删除SkinWrap修改器
deleteModifier newMesh sw
-- 退出选择
deselect newMesh
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
-- 删除掉原始模型
delete brokenMesh
)
3,与此类似问题
合并同一骨架下的多个蒙皮模型,以及分割一个蒙皮模型成为使用当前骨架的多个模型,做法都是一样的
作者:TAZORN
著作权归作者所有
【相关阅读】:
Maxscript_基础_回调函数:http://tk.v5cg.com/help/246.html
Maxscript_基础_材质处理:http://tk.v5cg.com/help/247.html
Maxscript_基础_修改器操作:http://tk.v5cg.com/help/248.html
Maxscript_基础_创建窗口:http://tk.v5cg.com/help/249.html
Maxscript_基础_遍历与递归:http://tk.v5cg.com/help/250.html
Maxscript_与DotNet交互:http://tk.v5cg.com/help/251.html
【上传发布插件】:
编写3DMAX插件到发布上线全流程:http://tk.v5cg.com/help/147.html
代码上传与工具发布:http://tk.v5cg.com/help/99.html
代码发布,部署实例参考:http://tk.v5cg.com/help/140.html
PS【动作库】代码部署指南:http://tk.v5cg.com/help/141.html
CG云盘 - 开发者使用说明:http://tk.v5cg.com/help/34.html