advanceskeleton插件分身体和表情单独绑定的时候合并表情步骤
advanceskeleton插件分身体和表情单独绑定的时候合并表情使用的代码以及合并步骤
1.身体单独绑定
2.表情单独绑定
3.合并步骤
①原有adv表情文件删掉除了curve组以外所有东西 删除无用节点之后保存curve_ctrl
②原有adv表情文件curve组整个从父级到子级加个facial前缀(这个用于将来放在原地链接属性用) 单独保存整个文件为face_v02
③打开表情face_v02 导入 curve_ctrl 并去掉名词空间
④选择facial前缀的组单独显示(这时候会显示出所有表情facial前缀的控制器),然后框选所有显示出的facial前缀的控制器(注意单独取消face方块表情面板的那个主控制器的选择) 执行下面代码 做一对一链接 之后保存为facial_final
#——————————————华丽分割—————————————————————————————————————————————————————————————————————————————————
##选中facial——
import maya.cmds as mc
myAllReal_ctrl=mc.ls(sl=True)
for a in myAllReal_ctrl:
myHideAttr=a.split("facial_")[1]
myallAttr=mc.listAttr(a,k=1)
myallAttr_01=mc.listAttr(a,ud=1)
if myallAttr:
if myallAttr_01:
for b in myallAttr_01:
if b not in myallAttr:
myallAttr.append(b)
for b in myallAttr:
if mc.getAttr(a+'.'+b,l=1)==0 :
mc.connectAttr(myHideAttr+'.'+b,a+'.'+b,f=1)
if mc.getAttr(a+'.'+b,l=1)==1 :
mc.setAttr(a+'.'+b,l=0)
mc.setAttr(myHideAttr+'.'+b,l=0)
mc.connectAttr(myHideAttr+'.'+b,a+'.'+b,f=1)
mc.setAttr(a+'.'+b,l=1)
mc.setAttr(myHideAttr+'.'+b,l=1)
#————————————————————————————————————————————————————————————————————————————————————————
⑤打开身体绑定,导入facial_final文件 表情里面的模型对身体里的做blendshape融合,表情假控制器P给头部
完成
######+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++############################
###写在后面##我们在制作时候发现合并完之后眼睛follow 属性失效,如遇到请运行下面代码##
import maya.cmds as mc
#
CNNsource=mc.listConnections( 'lowerLid_L.lowerFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_L.outputY', 'lowerLid_L.lowerFollowY', f=1 )
CNNsource=mc.listConnections( 'upperLid_L.upperFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_L.outputY', 'upperLid_L.upperFollowY', f=1 )
CNNsource=mc.listConnections( 'lowerLid_L.lowerFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_L.outputZ', 'lowerLid_L.lowerFollowZ', f=1 )
CNNsource=mc.listConnections( 'upperLid_L.upperFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_L.outputZ', 'upperLid_L.upperFollowZ', f=1 )
CNNsource=mc.listConnections( 'lowerLid_R.lowerFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_R.outputY', 'lowerLid_R.lowerFollowY', f=1 )
CNNsource=mc.listConnections( 'upperLid_R.upperFollowY' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_R.outputY', 'upperLid_R.upperFollowY', f=1 )
CNNsource=mc.listConnections( 'lowerLid_R.lowerFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'lowerFollowMultiplyDivide_R.outputZ', 'lowerLid_R.lowerFollowZ', f=1 )
CNNsource=mc.listConnections( 'upperLid_R.upperFollowZ' ,s=1,d=0 )
if CNNsource:
pass
else:
mc.connectAttr( 'upperFollowMultiplyDivide_R.outputZ', 'upperLid_R.upperFollowZ', f=1 )
###
CNNsource=mc.listConnections( 'upperFollowMultiplyDivide_L.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_L.rotate', 'upperFollowMultiplyDivide_L.input1', f=1 )
CNNsource=mc.listConnections( 'lowerFollowMultiplyDivide_L.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_L.rotate', 'lowerFollowMultiplyDivide_L.input1', f=1 )
CNNsource=mc.listConnections( 'upperFollowMultiplyDivide_R.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_R.rotate', 'upperFollowMultiplyDivide_R.input1', f=1 )
CNNsource=mc.listConnections( 'lowerFollowMultiplyDivide_R.input1' ,s=1,d=0,p=1 )
if CNNsource:
pass
else:
mc.connectAttr( 'Eye_R.rotate', 'lowerFollowMultiplyDivide_R.input1', f=1 )
CNNsource=mc.listConnections( "upperLid_L.upperFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_L.rotate', CNNsource[0]+'.input1', f=1 )
CNNsource=mc.listConnections( "upperLid_R.upperFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_R.rotate', CNNsource[0]+'.input1', f=1 )
CNNsource=mc.listConnections( "lowerLid_L.lowerFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_L.rotate', CNNsource[0]+'.input1', f=1 )
CNNsource=mc.listConnections( "lowerLid_R.lowerFollowY" ,s=1,d=0 )
if CNNsource:
CNNsource01=mc.listConnections( CNNsource[0]+'.input1' ,s=1,d=0,p=1,scn=1 )
if CNNsource01 :
pass
else:
mc.connectAttr( 'Eye_R.rotate', CNNsource[0]+'.input1', f=1 )
############+++++++++++++++++++++++++++++++++########################
欢迎交流
VX:27971533
advanceskeleton插件分身体和表情单独绑定的时候合并表情步骤的更多相关文章
- 限制UITextView的字数和字数监控,表情异常的情况和禁用表情
限制UITextView的字数和字数监控,表情异常的情况和禁用表情 3523FD80CC4350DE0AE7F89A8532B9A8.png 因为字数占一个字符,表情占两个字符.你要是限制15个字 ...
- Chrome插件Visual Event查看Dom元素绑定事件的利器
找这工具找了好久,统一找着了,开发人员不可多得的好东东,收藏做一下分享. 用Chrome插件Visual Event查看Dom绑定的事件 Visual Event简介 Visual Event是一个开 ...
- 一款jquery小插件:实现轻松获取和绑定编辑表单的值(带源码)
实现目的:通常在项目中,编辑页面在前后台需要一个一个框赋值,取值操作,小伙伴们普遍都会感觉繁琐,麻烦.: 实现思路:利用json对象化键值的思想: 好处:方便快速开发,提高开发效率,减少重复性代码: ...
- 使用maven-resources-plugin插件分环境配置
一.项目目录结构 二.pom文件中引入maven-resources-plugin插件和相关的标签 <build> <plugins> <plugin> &l ...
- [转载]Jquery Chosen 插件动态生成option或重新绑定
$(".chosen—select").find("option[value='1']").attr("selected", "s ...
- 在Eclipse上使用egit插件通过ssh协议方式上传项目代码的具体步骤
在Eclipse上使用egit插件通过ssh协议方式上传项目代码 前戏: 使用ssh方式可以不通过https协议,避免直接提供账号密码的方式上传项目到git在线服务器,如Bitbucket.GitHu ...
- Vue 表情输入组件,微信face表情组件
VUE表情包输入组件,先来张成品图看看. 年底了没事干,把以前做过的项目中的组件拿出来再复习一下, 先说说思路吧. 注意: 1. 项目是用vue-cli3.0搭建起来的项目, 参考cli3.0官网地址 ...
- textView中判断文本长度,自定义表情长度为1,emoj表情长度为1,输入限制
static const int MAX_LIMIT_NUMS = 100; /**< 输入个数限制 */ // self.inputNumberTipsLabel 控制器的view上一个用 ...
- 编写一个单独的Web Service for Delphi7(步骤)
1新建一个SOAP Server Application,在提示输入接口时输入MyHello,把所有文件保存在一个叫Ser的目录下,其中一个包含TWebModule1的文件保存为main.pas.在M ...
随机推荐
- win10系统开机输入密码黑屏解决方法
方法一: 第一步:首先打开笔记本电脑开机,输入开机密码进入 第二步:输入密码后显示黑屏,按"Ctrl+Alt+Del"组合键打开任务管理器 第三步:在打开的任务管理器中,点击&qu ...
- 第三周博客之一---Oracle基础知识
一.数据库的定义.作用介绍 1.定义:按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. 2.数据库的发展历史: 2.1.在1962年数据库一词出现在系统研发的公司的技术备忘录中 2. ...
- python day18 作业 Django 开发主机管理系统
http://www.cnblogs.com/liang2580/p/9248803.html
- R语言实战基本方法
R语言的主要功能包括数据统计分析方法和数据可视化,数据分析在这一章中主要学习创建基本图形和基本数据分析 一 基本图形 1条形图 barplot(height) //添加一个条形图,height是一个 ...
- apex透视自瞄无后子弹追踪飞天加速辅助
apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助apex透视自瞄无后子弹追踪飞天加速辅助 ...
- SVG路径path的贝塞尔曲线指令
深度好文分享: http://www.zhangxinxu.com/wordpress/2014/06/deep-understand-svg-path-bezier-curves-command/ ...
- 自学python之路(day1)
1. 下载和安装Pycharm文本编辑器,解释器Python3 2. 了解python2和python3的不同 如输出中文时,python2需要在代码前加 # -*- encoding:utf-8 - ...
- Python 从入门到实践 试一试 参考代码
这两天学习Python 看了python从入门到实践的书籍,里面有课后题“试一试” 然后就跟着写了,代码在以下地址,如果需要自取 https://files.cnblogs.com/files/fud ...
- WORD中引用活动文档元素
要引用活动的段落.表格.域或其他文档元素,可使用 Selection 属性返回一个 Selection 对象.通过 Selection 对象,可访问选定内容中的所有段落或第一段.下列示例将边框应用于选 ...
- pycharm中字体大小的调整方法
一.file->settings->editor->font->size 二.file中键入mouse,在其下editor->general->mouse选中:ch ...