max面部骨骼镜像脚本
max面部骨骼镜像脚本
1.问题描述
绑定过程中需要给不同模型搭建面部骨骼,左右两边不能同时操作,所以就想写个脚本实现
2.遇到问题
1.面部骨骼必须要有一定的规则区分左右,比如包含"Face_L_"或者 "Face_R_"等字符串,这是制作脚本的前提。
2.以execute("$'" + "Face_L_" + "*'")
和where classof i ==BoneGeometry
列出场景包含指定字符的Bone骨骼,这种方式获取的骨骼是没有层级关系的。也就是有可能出现先对好子骨骼位置,再对父骨骼位置然后子骨骼位置错乱的情况。因而要对获取的骨骼数组进行父子层级排序。
3.按照指定骨骼层级的方式查找骨骼execute("$" +"'Bip001 Head'.../"+ "Face_L_" + "*'")
,返回的数组会进行一个层级排序,可以解决问题。
3.插件截图
4.代码如下
--根据物体类型和前缀删选物体
fn getObjectByType prefix_name: object_type: =(--execute("$'" + prefix_name + "*'") 类似于$Face_L*Face_bone_list=execute("$" +"'Bip001 Head'.../"+ prefix_name + "*'")if Face_bone_list.count!=0 then(object_array=#()for i in Face_bone_list where classof i ==object_type do(append object_array i)--按命名进行排序--object_array=for i in sort(for i in object_array collect i.name) collect getnodebyname ireturn object_array)else(return 0))
--替换字符串
fn replaceString str1 str2 str3=(while ((i=findstring str1 str2) != undefined) do(str1 = replace str1 i str2.count str3)return str1)--窗口
try destroyDialog ::MirrorFaceBone catch() --关闭已有窗口
rollout MirrorFaceBone "MirrorFaceBone"
(radiobuttons MirrorFaceBone_rbt "Mirror Direction:" \labels:#("L---R", "R---L") columns:2 pos: [40,30] align:#left\offsets:#([100,-16], [40,-16])button mirrorButton "Mirror Face Bone" width:200 height:30 pos: [60,60]on mirrorButton pressed do (Face_L_Bone=getObjectByType prefix_name:"Face_L_" object_type:BoneGeometryFace_R_Bone=getObjectByType prefix_name:"Face_R_" object_type:BoneGeometryif Face_L_Bone!=0 and Face_R_Bone!=0 then(if Face_L_Bone.count==Face_R_Bone.count then(if MirrorFaceBone_rbt.state == 1 do(for i = 1 to Face_R_Bone.count do(Face_R_Bone_name=replaceString Face_L_Bone[i].name "Face_L_" "Face_R_"Face_R_Bone=getnodebyname Face_R_Bone_nameFace_R_Bone.pos.x = -Face_L_Bone[i].pos.xFace_R_Bone.pos.y = Face_L_Bone[i].pos.yFace_R_Bone.pos.z = Face_L_Bone[i].pos.z))if MirrorFaceBone_rbt.state == 2 do(for i = 1 to Face_R_Bone.count do(Face_L_Bone_name=replaceString Face_R_Bone[i].name "Face_R_" "Face_L_"Face_L_Bone=getnodebyname Face_L_Bone_nameFace_L_Bone.pos.x = -Face_R_Bone[i].pos.xFace_L_Bone.pos.y = Face_R_Bone[i].pos.yFace_L_Bone.pos.z = Face_R_Bone[i].pos.z)))else(messageBox ("捏脸骨骼左右两边骨骼数量不一致")))else(messageBox ("Bip001 Head层级下没有子骨骼,请先将捏脸骨骼p给Bip001 Head")))
)
createdialog MirrorFaceBone width: 320 height: 115
max面部骨骼镜像脚本相关推荐
- 删除docker私服镜像脚本
1.参考:https://www.it1352.com/588577.html 注意: 2.参考:https://blog.csdn.net/duanbiren123/article/details/ ...
- docker 启动petalinux镜像脚本
此脚本可以将在docker中生成的工程保存在宿主机上,可以供下次在petalinux编译使用,docker命令中添加了权限的管理 #!/bin/bash #Name:petalinux #Auther ...
- 3ds Max 2014的preRender脚本bug
在自动化渲染的时候,有时候需要在渲染之前去清空渲染元素,特别是改变这些元素的输出路径,如以下所示: renderEleMgr = maxOps.GetCurRenderElementMgr() for ...
- 3D MAX 人物骨骼建设
3DMax方面所涉及的专业知识: (1)一下的关于3DMax中对于人物的设计和操作均需要在对3DMax基础知识熟练掌握的情况下进行的. (2)骨骼架设: ...
- brew 常用命令与安装国内镜像脚本
国内安装脚本 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)&qu ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- 手把手教你编写脚本批量实现k8s镜像部署
背景 日常工作过程中,避免不了经常遇到很多需要手工进行的重复劳动,如果我们可以凭借自己勤劳的双手和聪明的智慧编写一些小工具或者脚本,这样我们就可以节省大量的时间,用来多看看新闻.刷刷头条,不香吗? 系 ...
- 3ds Max骨骼动画
3ds Max骨骼动画 1.动画种类 常见的动画主要分两种:关键帧动画(顶点动画)或骨骼动画.关键帧动画就是选定些时间点,改变模型各个顶点的位置信息等,中间通过插值运算得到平滑的动画效果.而骨骼动画是 ...
- 深入了解 Animation Scripting 动画脚本
动画脚本 Animation Scripting Unity动画系统允许你创建一个漂亮的动画蒙皮角色,动画系统支持动画融合,混合,添加动画,步调周期时间同步,动画层,控制动画回放的所有方面(时间.速度 ...
最新文章
- 快速排序java代码_8 种排序算法与 Java 代码实现!
- FPGA逻辑设计回顾(8)单比特信号的CDC处理方式之Toggle同步器
- js中的全局变量和局部变量
- CODEVS——T 1049 棋盘染色
- 朵朵糖故事机器人怎么更新_“故事贩卖机”专栏创始人温酒的新作,奇幻世界的暖心物语很治愈...
- [学习备忘录]编译gdb及gdbserver
- erlang一次线上问题解决
- 执行NET 命令无法使用超过20个字符的组名或用户名
- 初识SpringSecurity
- python爬虫步骤-Python爬虫详解,每一个步骤都给你细腻的讲解(附源码)
- VS Code 如何运行.html文件(VS Code 如何安装插件)(open with live serve和open in default browser)
- 西门子pcs7 V9.1用Sim_EKB_Install安装长密匙失败
- 毕向东java基础,B站直达,目录,b站浏览目录太难受,在这做一个
- 组态王五层电梯c语言编程,PLC编程实例分享,多图详解五层楼电梯控制系统~...
- es搜索同义词近义词技术方案
- CEPH DAYS 2016 APAC ROADSHOW Ceph社区分享资料
- 解决各个浏览器文件下载中文乱码问题
- gitbook结合github写书及发布到gitbook上
- mysql 联查字段名重复_查询数据库多个字段名时的结果有重复的解决办法_MySQL
- 最详细的NAT(网络地址转换)的讲解