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 ...
随机推荐
- <input>标签单、复选相关查询地址
http://www.w3school.com.cn/tags/tag_input.asp 以下是相关示例,转载 lfx_web: <html><head><script ...
- Java判断当前时间是否在某一时间段内
今天有一个任务,判断现在的时间是否在某一个时间段内 遇到的第一个问题 Date类获取日期时间大的方法失效了 问题描述: 在学习Date类时,习惯性的用get方法调用Date()的年月日,发现不怎么好用 ...
- mfc基于对话框的简单四则运算计算器
1.①创建mfc对话框窗口,对话框中所有控件都delete. ②绘制界面,按键都button,显示区域edit control,计算器名字用static text. ③所有控件ID改成语义化ID(可不 ...
- BUG调试: Jump to the invalid address stated on the next line at 0x0: ???
gdb或者vlagrind报告: ==14569== Jump to the invalid address stated on the next line ==14569== at 0x0: ??? ...
- shiro三连斩之第二斩(SSM)
在SSM框架中使用shiro.环境 使用idea工具. 最主要的大概是配置文件如何配置吧. 1配置maven依赖 <?xml version="1.0" encoding=& ...
- MySQL行转列、列转行
一.行转列 有如图所示的表,现在希望查询的结果将行转成列 建表语句如下: CREATE TABLE `TEST_TB_GRADE` ( `ID` int(10) NOT NULL AUTO_INCRE ...
- 最近在学习Flask框架,那么就说下jinja2吧~~~
jinja是组成Flask的模板引擎,先写一个demo吧 {% block body %} <ul> {% for user in users %} <li><a hre ...
- 使用 ado.net访问数据库
一.ADO.NET :用于连接数据库的技术 1.ADO.NET分为两大组件 DataSet:数据集 .NET FRAMWORK :用于连接到数据库,发送命令,检索结果 2.ADO. ...
- FireFox 插件xpi文件签名2
上一篇https://www.cnblogs.com/nightnine/p/6140676.html 提交到官方网站上的签名,官方已经拒绝了 于是手动自己签名 官方文档:https://develo ...
- 马凯军201771010116《面向对象与程序设计Java》第十五周学习知识总结
实验十五 GUI编程练习与应用程序部署 一.知识学习部分 清单文件 每个JAR文件中包含一个用于描述归档特征的清单文件(manifest).清单文件被命名为MANIFEST.MF,它位于JAR文件的 ...