保留蒙皮信息,将骨骼替换成新的骨架
模型M上的Skin目前指定的是骨架A,在蒙皮信息不变的情况 下更换成骨架B
替换的操作需要用到 SkinUtilities 工具
1,Snapshot原有模型,添加新的Skin以及指定新的骨架,
2,从原蒙皮模型上 导出Skin信息(通过SkinUtilities工具导出)
3,选择 新的蒙皮模型 以及Skin信息,进行骨架匹配和转换
步骤1,将原有模型Snapshot一份,添加Skin,赋予新的骨架
步骤2,导出原有模型的蒙皮信息
选择原始的蒙皮模型,导出蒙皮信息
需要用到SkinUtilities (默认在Utilties的More… 里面)
点ExtractSkinDataToMesh,会导出一个前缀 为 SkinData_ 的模型,里面记录着蒙皮信息
步骤3,通过SkinUtilities转换蒙皮信息
将新旧蒙皮模型对齐
选择新的蒙皮模型 , 再选择前缀为 SkinData_ 的模型,执行 ImportSkinDataFromMesh
会出现一个对话框,用于匹配 原蒙皮的骨骼 对应 新蒙皮的骨骼,设置好对应的骨骼
使用 MatchByFace 匹配
点OK完成蒙皮信息转换
之后就可以删除 原蒙皮模型,前缀SkinData_的模型,以及原骨架
剩下的新的蒙皮模型,新的骨架
整个操作实现并不难
1,Snapshot原始模型,添加 Skin修改器,添加新的一套骨架
2,通过SkinUtilities 来导出原始模型蒙皮数据,然后与通过骨骼对应将蒙皮信息转换到新模型上
3,最后删除旧模型以及临时数据
蒙皮转换的入手点是 skinUtils 这个接口
可以通过显示接口命令查看提供的函数
showinterface skinUtils
会用到的函数其实就是导出 和导入,和手动操作中的一样
可以看到 导入函数带有一个 ImportSkinDataNoDialog,不显示窗口的调用
<void>ExtractSkinData <node>node<void>ImportSkinData <node>targetNode <node>sourceNode<void>ImportSkinDataNoDialog <boolean>matchByName <boolean>removeTargetPrefix <boolean>removeTargetSuffix <boolean>removeSourcePrefix <boolean>removeSourceSuffix <float>threshold <integer>interpolationType
所以整个实现过程 稍有麻烦的地方在于骨骼名称的 匹配上,但是在工具中有一个自动匹配的功能
就是说如果两套骨架中的 骨骼名称相同,可以自动进行匹配,免去手动指定的麻烦
在脚本实现中,可以利用这个功能
具体的办法,就是 修改原蒙皮模型骨架的骨骼名称,来匹配新骨架骨骼的名称(因为原蒙皮模型和骨架在进行数据转换之后就删除了)
这样就可以直接调用 ImportSkinDataNoDialog 这个函数,让其调用MatchByName,来实现自动的骨骼匹配
例子,导出蒙皮信息
-- 指定原始的蒙皮模型
sourceMesh = $
-- 导出蒙皮信息,默认skinUtils没有返回导出信息模型的引用
skinUtils.ExtractSkinData sourceMesh
-- 用一个土办法,获得导出蒙皮信息模型的引用
sourceMeshSkinData = execute ("$SkinData_" + sourceMesh.name)
例子,进行蒙皮转换
-- 先得选择两个模型
select newMesh -- 新的蒙皮模型
selectMore sourceMeshSkinData -- 原始模型导出的蒙皮信息
-- 通过SkinUtils进行蒙皮转换
/*
ImportSkinDataNoDialog <boolean>matchByName <boolean>removeTargetPrefix <boolean>removeTargetSuffix <boolean>removeSourcePrefix <boolean>removeSourceSuffix <float>threshold <integer>interpolationType
最后的interpolationType是匹配的方法,0为通过Vertex匹配,1为通过Face匹配
*/
skinUtils.ImportSkinDataNoDialog true false false false false 1.0 1
作者: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