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插件分身体和表情单独绑定的时候合并表情步骤的更多相关文章

  1. 限制UITextView的字数和字数监控,表情异常的情况和禁用表情

    限制UITextView的字数和字数监控,表情异常的情况和禁用表情   3523FD80CC4350DE0AE7F89A8532B9A8.png 因为字数占一个字符,表情占两个字符.你要是限制15个字 ...

  2. Chrome插件Visual Event查看Dom元素绑定事件的利器

    找这工具找了好久,统一找着了,开发人员不可多得的好东东,收藏做一下分享. 用Chrome插件Visual Event查看Dom绑定的事件 Visual Event简介 Visual Event是一个开 ...

  3. 一款jquery小插件:实现轻松获取和绑定编辑表单的值(带源码)

    实现目的:通常在项目中,编辑页面在前后台需要一个一个框赋值,取值操作,小伙伴们普遍都会感觉繁琐,麻烦.: 实现思路:利用json对象化键值的思想: 好处:方便快速开发,提高开发效率,减少重复性代码: ...

  4. 使用maven-resources-plugin插件分环境配置

    一.项目目录结构    二.pom文件中引入maven-resources-plugin插件和相关的标签 <build> <plugins> <plugin> &l ...

  5. [转载]Jquery Chosen 插件动态生成option或重新绑定

    $(".chosen—select").find("option[value='1']").attr("selected", "s ...

  6. 在Eclipse上使用egit插件通过ssh协议方式上传项目代码的具体步骤

    在Eclipse上使用egit插件通过ssh协议方式上传项目代码 前戏: 使用ssh方式可以不通过https协议,避免直接提供账号密码的方式上传项目到git在线服务器,如Bitbucket.GitHu ...

  7. Vue 表情输入组件,微信face表情组件

    VUE表情包输入组件,先来张成品图看看. 年底了没事干,把以前做过的项目中的组件拿出来再复习一下, 先说说思路吧. 注意: 1. 项目是用vue-cli3.0搭建起来的项目, 参考cli3.0官网地址 ...

  8. textView中判断文本长度,自定义表情长度为1,emoj表情长度为1,输入限制

      static const int MAX_LIMIT_NUMS = 100; /**< 输入个数限制 */ // self.inputNumberTipsLabel 控制器的view上一个用 ...

  9. 编写一个单独的Web Service for Delphi7(步骤)

    1新建一个SOAP Server Application,在提示输入接口时输入MyHello,把所有文件保存在一个叫Ser的目录下,其中一个包含TWebModule1的文件保存为main.pas.在M ...

随机推荐

  1. Excel动态图表

    动态图表其实一点都不难,真的!先看效果,然后教你一步步实现.这是每个地区经销跟代销的数据.Step 01在开发工具插入表单控件.Step 02将表单控件调整到合适的大小,并设置控件格式.Step 03 ...

  2. VMware虚拟机开机自启动

    VMware虚拟机开机自启动 linux 2018年05月09日 08时30分18秒 VMware的命令行语句可以切换到VMware安装目录,使用vmrun.exe --help(windows下)查 ...

  3. 洛谷P2886 [USACO07NOV]牛继电器Cow Relays

    题意很简单,给一张图,把基本的求起点到终点最短路改成求经过k条边的最短路. 求最短路常用的算法是dijkstra,SPFA,还有floyd. 考虑floyd的过程: c[i][j]=min(c[i][ ...

  4. windwos安装docker步骤

    参考 https://www.linuxidc.com/Linux/2016-07/133506.htm

  5. linux修改主机名+免密认证+关闭防火墙

    在很多软件安装的时候都有这些需求,因此在这里一起讲一下 修改主机名 简单的使用 hostnamectl 命令就好了 hostnamectl set-hostname NAME 免密认证 准备工作,修改 ...

  6. Java利用cors实现跨域请求

    由于ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告 网站开发,在某些情况下需要用到跨域. 什么是跨域? 跨域,指 ...

  7. blender 3d模型软件介绍(开源,免费,易用,强大)

    关于BLENDER Blender是一个开源的多平台轻量级全能三维动画制作软件 具有建模,雕刻,绑定,粒子,动力学,动画,交互,材质,渲染,音频处理,视频剪辑以及运动跟踪,后期合成等等的一系列动画短片 ...

  8. MySQL数据库需进行修改密码问题解决方案

    两种方式可供大家进行参考: 第一种: 格式:mysqladmin -u用户名 -p旧密码 password 新密码 1.给root加个密码pass123: 首先在DOS下进入目录mysql\bin,然 ...

  9. oracle 同义词synonym

    在A用户下,想访问B用户下的表,一遍需要用 “用户名.表名 ”的格式进行访问.如果想不加用户名,直接访问,需要建同义词. 同义词语法如下: CREATE [PUBLIC] SYNONYM synony ...

  10. Linux 操作系统目录结构

    /  根目录 # ls /bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp  var bin - ...