加载中…
个人资料
edward
edward
  • 博客等级:
  • 博客积分:0
  • 博客访问:29,071
  • 关注人气:149
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
评论
加载中…
留言
加载中…
搜博主文章
图片播放器
好友
加载中…
访客
加载中…
博文
(2016-11-04 17:54)
前年刚来追光不久时跟一个同事讨论了下IK的常用功能后 , 后弄的softStretchIk

这算是提升细节效果和rigging性能的一个节点

最近越来越多的人开始关注到这个细节,拿出来分享下我们的softStretch方案。

先来了解下IK的一个细节问题,
通常 根骨骼  肘部骨骼  和腕部骨骼组成的三角形 
当跟骨骼和腕骨骼的距离发生改变时,通常轴骨骼到三角形对边的距离衰减不是线性的,这会导致动画师在使用IK key肢体动画时容易出现踢腿或者手臂抖动。

以下有个视频描述这个问题:


视频上看出  在IK骨骼链条的末端到根骨骼的距离发生变化时,肘部距离(三角形的高)的衰
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
不多说了  准备元旦2刷~~~







阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2015-09-16 12:17)
最近和一个同事(屹夫) [。。他刚想的还不如本名的佚名。。]    联合开发了 LCA_PoseDeformer 
 
传统的poseDeformer 相信大家都用过,基本分成2部分  

poseReader  
优点 : 可任意方向任意pose添加修形
缺点 : 其主要缺陷在于靠向量夹角算出的pose weight值很有可能不连续,不是normalized,范围需人工干预来控制

PoseDeformer :与corrective blendShape相比有相当大的优势,因为变形的顺序是在skin只后,所以不会过度受skin的体积损失影响(skin的体积损失速度通常不是线性的,用blendShape制作总会在插值过程中对体积过度补偿,需要多个inbetween进行修正,并且需要较多经验,否则点的跳动问题很明显)

如下图 :  同样的修形结果 
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  在rigging 制作过程中,某些情况用一些deformer组合出一些变形效果 制作效率和效果都很不错 , 唯一缺陷就是maya的一些deformer应用在rig中很慢,真的很慢。。。 并且细节的效果想调整很难,不像skin的方式可以修改权重(比如wire deformer 有不理想的变形范围很难消除)。

    maya的deforner个人人为做得最完善和优化的就是skinCluster 和 blendShape, 所以理想状况是无论怎么使用deformer来达到目的,之后都能转换成skinCluster 的权重。

    工具的雏形在很在之前就已经用python写过一次 , 但由于Python调用maya command 的方式编写工具执行效率会很低,前几个月又用C++ 重写了一次, 执行效率大大提升。

    比如PYTHON 转换 10000个点  30个骨骼influences的权重,大约需要时间为30多分钟左右转换完成
用C++重写后同样的案例只需要10秒。
PS: C++ 写还可以用做多线程加速,但是这个命令10000个点面数 多线程和单线程的效率差经测试并不大,所以默认设置为单线程执行。

下面展示一
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

api

development

maya

rigging

分类: 工具发布
早期的时候研发了一个关节修型的驱动球,近两年做了很多次升级,现在可支持将八个方位的0-170度的骨骼旋转转为8个0到X的值 去驱动关节修型目标体(correct blendShape),并且不会受欧拉角Gimbal Lock的影响。

下图演示中,黑色的球代表数值0,白色代表数值1,。
用这些0-1的值可以驱动每个方向每个度数的key  pose修形
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
之前有做过一个类似的拆分目标体的工具  但是是脚本级的,现在直接把这个功能写在了deformer里:
之前的详见:http://blog.sina.com.cn/s/blog_67e626560101gmrz.html

相对于之前的版本的好处在于:
1,刷拆分权重时可以实时观察模型效果
2,由于是C++写的节点,所以效率更快
3,即使每一个目标体的权重不进行normalize,但最后加起来的变形效果确是normalized。(这样每个拆分出的表情都可以是形状,但所有表情叠加时可以还原原始目标体的效果)

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 技术交流共享
对maya DG 了解的TD们应该都清楚maya 数据是以推拉模型(push-pull model)的方式来跟新数据,在maya中被称为dirty clean, 这种方式与数据流方式的不同点简单来说在于:
数据流是上游节点更新数据后直接向下游传递数据,按节点连接依次计算最终结果。
推拉模型当上游节点数据更新后,会将该节点的更新了的属性从clean 标记为dirty,然后把dirty属性连接到的下游节点依次标记为dirty,这个过程被称为push,在这个过程中,节点并未传递任何数据给其他下游节点,也没产生任何计算,接下来如果最下游节点的某属性被标记为dirty,并且该属性的值是用户所关心的【比如模型被显示出来用户需要maya重新绘制(draw),或者某个浮点值用户需要知道其最新的情况,比如用户使用了getAttr进行读值,或是用户打开了attribute editor 或channel box 需要观察这个浮点数的值,再或者这个浮点值关联了一个显示出来的物体的translateY 。而这个物体需要最新的Y轴位置才能正确得在场景中进行绘制】
那么这个时候该节点会向上游节点请求最新的值,如果上游节点的属性也为dirty,那么会向更上游节点求值,以此类推一直到最上游的节点,最后最上游的节点会把数值更新,
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

预计2015年的工作计划都会放在提高rigging文件效率上,为了达到这一目标,首先得知道rigging文件在使用时为什么慢,从而得到一个优先级顺序可以对计算时间长的变形器或节点进行算法优化或合并节点进行并行计算。

因此,这两天写了一个工具来测试rigging文件使用时各个DG节点在每帧中计算所需的时间。

 

UI:


expected fps : 我们期望优化到的帧数率, 24fps的rigging文件动画使用时可以直接点play来观察动画是否timing和pose正确,如果达成这一目标,动画师将不需要playblast便能观察动画是否正确 

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

2年前当时写过一个非线性插值的blendShape(underworldBlendShape),当时写完后变形器的计算效率很低,毕竟是单线程的计算,最近将其改为了多线程计算,效率经过测试提高了3倍左右。

之前的帖子地址:

http://blog.sina.com.cn/s/blog_67e6265601016g39.html


属性添加了多线程和单线程计算的切换

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

转载

阅读  ┆ 评论  ┆ 转载原文 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有