https://www.youtube.com/watch?v=jpsd0Aw1qvA

新建骨架,由如下图3部分组成:

  • Bone.000.Top ~ Bone.015.Top (上半部分16节骨骼)
  • Bone.016.Bot ~ Bone.031.Bot (下半部分16节骨骼)
  • Bone (弦上的骨骼)

有了这3部分的骨架绑定到弓箭,作为父级,选择自动权重. 姿态模式下, 移动{Bone}(弦上的骨骼), 弦已经可以动了.

适当调整上面自动生成的顶点组后, 
进入骨架编辑模式, 再增加如下图3部分骨骼.(在绑定弓箭后再新增的骨骼,不会参与形变了,若提前建立了,要去掉这3段骨骼属性里形变的勾选.)

添加另外3段控制骨骼,

  • Bone.Top.ik (最上方的控制骨骼)
  • BoneF (最前面的控制骨骼, 作为最初建立的3部分骨骼的父级)
  • Bone.Bot.ik (最下方的控制骨骼)

添加父级关系: (选择新增的3段骨骼, [Alt P] 全都清除掉父关系;)
依次选择: Bone.Top.ik, Bone.Bot.ik, BoneF, [Ctrl P],选择保持形变.
依次选择: Bone弦, Bone.000.Top, Bone.016.Bot, BoneF [ctrl P] 选择保持形变.

添加约束:
选择最上面的形变骨骼{Bone.015.top}, [shift Ctrl C] 选择 {反向动力学IK}, 目标骨骼选择:Bone.Top.ik (最上方的控制骨骼) ; 链长:16;
选择最下面的形变骨骼{Bone.015.bot}, [shift Ctrl C] 选择 {反向动力学IK}, 目标骨骼选择:Bone.Bot.ik (最下方的控制骨骼) ; 链长:16;
{方案1}选择最上面的控制骨骼(Bone.Top.ik), [shift Ctrl C] 选择 {限定距离Limit Distance}, 目标骨骼选择: Bone (弦上的骨骼);
选择Bone,弦上的骨骼, 添加约束: 限制位移, Limit Location, Y 最小,最大值, 适当调整, 按照你画图的大小, 避免弦拉的过长.

现在拉弦(姿态模式下拉骨骼{Bone}), 上半部分的弓已经可以弯曲了. 因为{方案1}我们只做了上面骨骼的限定距离.

{方案2} 如图添加2段骨骼
Bone.Bot.Limit
Bone.Bot.Rot
[Alt P]清除各自的父级

添加父关系
依次选择: Bone.Bot.ik, Bone.Bot.Rot, [Ctrl P] 保持形变;
依次选择: Bone.Bot.Limit, Bone.Bot.Rot, BoneF, [Ctrl P] 保持形变;

添加约束:
选择: Bone.Bot.Limit [Shift Ctrl C] 选{Limit Distance} ,骨骼选 {Bone};
选择: Bone.Bot.Rot [Shift Ctrl C] 选{Track To} ,骨骼选 {Bone.Bot.Limit}, 勾选{目标Z};

现在拉弦(姿态模式下拉骨骼{Bone}):
方案1, 在拉弦时, 弓的形变有时会稍有向前方形变;
方案2, 添加了Bone.Bot.Rot, 作为 Bone.Bot.ik的父级, 在ik形变时多了一个内部旋转轴,就不会向外形变了.

Bow and Arrow Rigging in Blender的更多相关文章

  1. Spring(3.2.3) - Beans(2): 属性注入 & 构造注入

    依赖注入是指程序运行过程中们如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 I ...

  2. 微信emoji的code

    const MAP = [        "\xc2\xa9" => 'COPYRIGHT SIGN',        "\xc2\xae" => ...

  3. CHAPTER 8 Out of Darkness 第8章 走出黑暗

    CHAPTER 8 Out of Darkness 第8章 走出黑暗 We expect scientists to be trying to discover new things, and for ...

  4. Spring - IoC(2): 属性注入 & 构造注入

    依赖注入是指程序运行过程中,如果需要另外的对象协作(访问它的属性或调用它的方法)时,无须在代码中创建被调用者,而是依赖于外部容器的注入. 属性注入(Setter Injection) 属性注入是指 I ...

  5. 牛客竞赛-Who killed Cock Robin

    Who killed Cock Robin? I, said the Sparrow, With my bow and arrow,I killed Cock Robin. Who saw him d ...

  6. D. Who killed Cock Robin--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)

    题目描述:链接点此 这套题的github地址(里面包含了数据,题解,现场排名):点此 题目描述 由于系统限制,C题无法在此评测,此题为现场赛的D题 Who killed Cock Robin? I, ...

  7. Bow & Arrow 学习

    using UnityEngine; using System.Collections; using System.Collections.Generic; using UnityEngine.UI; ...

  8. 开源免费跨平台opengl opencv webgl gtk blender, opengl贴图程序

    三维图形的这是opengl的强项,大型3D游戏都会把它作为首选.图像处理,是opencv的锁定的目标,大多都是C的api,也有少部分是C++的,工业图像表现,图像识别,都会考虑opencv的.webg ...

  9. Modeling -> Mixamo auto rigging -> UE4 retargeting

    In general, there are 3 ways we can work with the Blender-UE4 pipeline:   1 Model character Export m ...

随机推荐

  1. 002-linux——控制台的使用:

    1.桌面控制台: 2.字符控制台: .默认6个字符控制台. .独立运行 互不影响 .多用户  多任务 tty-控制台的使用: .开始进入的是图形图面:tty1 就是图形界面. .图形界面切换到字符界面 ...

  2. laravel获取的数据转换为数组

    当构建 JSON API 时,您可能常常需要把模型和关联对象转换成数组或JSON.所以Eloquent里已经包含了这些方法.要把模型和已载入的关联对象转成数组,可以使用 toArray方法: $use ...

  3. jenkins部署java项目在本地(三)

    (1)新建maven构建的java项目 pom.xml的配置 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns ...

  4. MySQL 占用cpu 100%

    目前的线上数据库,分为主从两个库,从库用来做比较耗时的数据统计分析. 今天top了一下从库服务器,发现mysqld 在很长一段时间都占用105% cpu,一开始以为是从库在处理主库的binlog. 两 ...

  5. Android : 修改内核源码 and 编译、打包成新的boot.img

    一.Android内核源码的下载: 1.Google GIT地址: $ git clone https://android.googlesource.com/kernel/common.git $ g ...

  6. 2.18 C++类与static关键字

    参考:http://www.weixueyuan.net/view/6349.html 总结: 类中的成员变量或成员函数一旦与static关键字相结合,则该成员变量或成员函数就是属于类的,而不是再是属 ...

  7. Comparable和Comparator接口是干什么的?列出它们的区别。

    Comparable和Comparator接口是干什么的?列出它们的区别. Java提供了只包含一个compareTo()方法的Comparable接口.这个方法可以个给两个对象排序.具体来说,它返回 ...

  8. FIFO的使用总结

    使用FIFO积累 FIFO是在FPGA设计中使用的非常频繁,也是影响FPGA设计代码稳定性以及效率等得关键因素.我总结一下我在使用FIFO过程中的一些心得,与大家分享.         我本人是做有线 ...

  9. myql update from 语句

    (6)UPDATE 语句与 SELECT 语句中的 TOP 子句一起使用对来自表 authors 的前十个作者的 state 列进行更新 UPDATE authors SET state = 'ZZ' ...

  10. Python基础2--Python简单数据类型

    python简单数据类型 1 list list的创建,使用[] a_list = [‘a’, ’b’, ‘c’] print a_list print a_list[0] #a 如果去list的最后 ...