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 ...
随机推荐
- 语法、id和class选择器、创建、
一. 1.CSS规则由两个主要部分构成:选择器,以及一条或多条声明(每条声明由一个属性和一个值构成,属性和值被冒号分开). 2.声明以分号“:”结束,生命组用大括号“{}”括起来. [示例:p {co ...
- C# [Win32] [API] Layered Windows
static void* WndProc(void* hwnd, uint uMsg, void* wParam, void* lParam) { switch (uMsg) { case WM_PA ...
- linux安装命令出错(could not resolve host mirrorlist.centos.org)
本次问题出现在虚拟机安装的centos7系统之后,使用yum命令安装wget命令(yum -y install wget),出现could not resolve host mirrorlist.ce ...
- 常用命令和sql
常用命令: mvn idea:idea //生成.ipr项目文件 mvn clean install -Dmaven.test.skip=true mvn install:install-file - ...
- JsonP的实现原理?
动态创建script标签,通过script标签中的src跨域属性,连接对方接口,并将回调函数通过接口传递给对方,对方服务器在准备好数据后再通过调用回调函数并以传递参数的方式将数据返回来.
- numpy数据集练习
#1. 安装scipy,numpy,sklearn包 import numpy as np #2. 从sklearn包自带的数据集中读出鸢尾花数据集data from sklearn.datasets ...
- .net公众号开发自动回复消息
using System;using System.Collections.Generic;using System.Web;using System.Web.UI;using System.Web. ...
- javascript数据加减问题
需要parseInt把获取到的html(),text()的值转换为数字型,然后进行加减乘除操作就可以了:
- 第十三周翻译-《Pro SQL Server Internals, 2nd edition》
<Pro SQL Server Internals, 2nd edition> 作者:Dmitri Korotkevitch 翻译:赖慧芳 译文: 聚集索引 聚集索引指示表中数据的物理顺序 ...
- 预热ASP.NET MVC 的View
ASP.NET MVC 的View 预设是Load on Demand(按需加载),也就是说View 第一次要Render 的时候才会去载入跟编译,这个就会造成一个现象,即使Web 应用程式已经完成启 ...