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. 三大统计相关系数:Pearson、Spearman秩相关系数、kendall等级相关系数

    统计相关系数简介 由于使用的统计相关系数比较频繁,所以这里就利用几篇文章简单介绍一下这些系数. 相关系数:考察两个事物(在数据里我们称之为变量)之间的相关程度. 如果有两个变量:X.Y,最终计算出的相 ...

  2. websocket+rabbitMQ

    拉取镜像:docker run -d --hostname my-rabbit --name some-rabbit  -p 5672:5672 -p 15672:15672 -p 61613:616 ...

  3. java算法02 - 树

    树是一类重要的非线性结构.而二叉树是一种比较重要的树,接下来我们来了解二叉树的相关内容. 二叉搜索树:每个节点都不比它左子树的任意元素小,而且不比它的右子树的任意元素大. /** * 二叉搜索树 O( ...

  4. c++ <stdarg.h> 解决变参问题的宏定义;

    在读程序的过程中遇到的va_list类型不认识,百度得到的.:http://www.cnblogs.com/hanyonglu/archive/2011/05/07/2039916.html (此例子 ...

  5. 机器学习环境搭建-Pycharm

    刚刚开始学习机器学习,遇到了很多的问题,尤其是搭建环境让我觉得脑袋特别疼.我用的是win8 64位操作系统,硬盘小的可怜.开始我也跟着下载了anaconda,后来发现anaconda一点儿不像说的那么 ...

  6. numpy 库使用

    numpy 库简单使用 一.numpy库简介 Python标准库中提供了一个array类型,用于保存数组类型的数据,然而这个类型不支持多维数据,不适合数值运算.作为Python的第三方库numpy便有 ...

  7. IP通信基础课堂笔记----第三章(自认为的重点)

    网络层协议IP IP数据包格式:固定部分        {  标识(16):计数器,源站每发送一个分组,标识+1:源IP地址的标识是全网唯一的. (包含TCP/UDP首部)  |  标志(3):当最低 ...

  8. python定时脚本判断服务器内存

    经常我们会发现服务器跑着跑着内存使用率达到了百分之八九十,或者有时候直接挂掉,在我们还没定位是哪块代码有问题导致内存占用很大的时候,可以先写个定时脚本,当服务器内存使用率达到一定值的时候,就重启一起服 ...

  9. C# 事件 解析

    1.什么是事件,事件和委托什么关系? 事件?事件,就是,比如按一个按钮,弹出你好对话框,就是一个事件. 事件和委托? 事件就是委托的一种呀,委托可以理解为回调机制,回调函数. 2. 怎么理解C#事件, ...

  10. mysql导出导入数据无权限

    问题:The MySQL server is running with the --secure-file-priv option so it cannot execute this statemen ...