当前位置: 首页 > article >正文

Blender使用Rigify和Game Rig Tool基础

做动画需要的几个简要步骤:
1.建模
2.绑定骨骼
3.绘制权重
4.动画

1.Rigify是干嘛用的? =》 绑定骨骼
2.Game Rig Tool干嘛用的? =》 修复Rigify绑定骨骼做的动画导入游戏引擎的问题,如果Rigify自身修复了就不需要这个插件了,
你也可以自己手动操作,有插件为啥不用那,又不要钱

商城链接:Game Rig Tool,输入0即可下载
或者:3.6和4.0版本的 百度网盘 提取码:vju8

基本步骤:
1.准备好模型、插件
2.添加Rigify骨架,需要哪个添加哪个
3.调整好位置,别忘了Ctrl+A应用一下Transform,否则位置不正确,点击生成
4.做动画
5.点开Game Rig Tool面板,选择上面生成的骨架,选择修复层级选项(有的版本默认就是),再点击生成最终使用的骨架
6.烘培动画,把做好的动画烘培到最终使用的骨架上,可以选择骨骼烘培(选择最终骨架的骨骼),默认是烘焙所有骨骼
7.导出,勾选NLA,取消全部动画,不想导出某个动画,可以在NLA编辑器取消打勾,或者删掉

下面的内容不用看了,是刚发现问题的发的

导入到Unity的问题:
1.有多余的骨骼(非形变骨)
2.层级错误

这两个问题是一个问题:
1.第一个问题是因为有形变骨是非形变骨的子骨骼导致的,所以只需要把形变骨放到对应的父级形变骨下即可,Ctrl+P即可
2.第二个问题:第一个问题解决了,就没有第二个问题了

如下图是修改好的,找到这四个,放到相应的父级下即可,注意的是肩膀和上臂原来是同级的也要建立子级即可

在这里插入图片描述
如下图,把不需要的形变骨删除,否则导出会把父级无用的骨骼导出去,用到的话就放到形变骨下
在这里插入图片描述
总之就是形变骨放到相应的形变骨下
导出时,勾选仅形变骨,就会把所有形变骨和其父级导出,如下图:
在这里插入图片描述

还有一种方法:Unity模型Rig导入设置里,动画类型选择通用,也就是非人形,也没问题,唯一的问题就不能骨骼重定向,如果不需要骨骼重定向的话,通用也是没问题的,只是多了一些无用的骨骼,要求不高也是可以用的

更新:还有第三个问题:
有的形变骨竟然没有添加对应骨的约束,这个需要额外处理,还是用下面给出的插件搞起

Rigify使用教程

但是,上面的连接有一点没有说(可能版本不一样,默认就修复了),如下图,要选择修复层级这个选项,否则导出到Unity还是层级报错,不能使用人形Rig
在这里插入图片描述

自己写了个脚本,设置父子节点脚本

import bpy

# 设置父级方法
def SetParent(child_bone_name, parent_bone_name, connect):
    # 获取骨骼
    child_bone = armature.data.edit_bones[child_bone_name]
    parent_bone = armature.data.edit_bones[parent_bone_name]
    
    # 子骨骼如果已有父级,去除父级骨骼
    if child_bone.parent:
        child_bone.parent = None
    # 设置父级
    child_bone.parent = parent_bone
    # 设置是否保持连接
    child_bone.use_connect = connect   

# 进入编辑模式
bpy.ops.object.mode_set(mode='EDIT')

# 根据名字获取骨架,这里名字要填对,默认Rigify生成的是rig名字,
# 如果不是,需要修改这里,或者修改骨架名字都可以
armature = bpy.data.objects['rig']

# 这里的名字是Rigify形变骨默认的名字,如果名字变了,这里需要修改正确的名字
# 设置左大腿到臀部
SetParent('DEF-thigh.L','DEF-spine',False)
# 设置右大腿到臀部
SetParent('DEF-thigh.R','DEF-spine',False)
# 设置左上臂到左肩膀
SetParent('DEF-upper_arm.L','DEF-shoulder.L',False)
# 设置右上臂到右肩膀
SetParent('DEF-upper_arm.R','DEF-shoulder.R',False)
# 设置左肩膀到胸部
SetParent('DEF-shoulder.L','DEF-spine.003',False)
# 设置右肩膀到胸部
SetParent('DEF-shoulder.R','DEF-spine.003',False)

# 返回物体模式
bpy.ops.object.mode_set(mode='OBJECT')

http://www.kler.cn/a/227644.html

相关文章:

  • 【51单片机系列】应用设计——8路抢答器的设计
  • 算法训练营day21,回溯1
  • 反洗钱_4_反洗钱工作主要内容(重点)
  • android tv开发-1,leanback 2
  • CSC联合培养博士申请亲历|联系外导的详细过程
  • 新版MQL语言程序设计:代理模式的原理、应用及代码实现
  • Postgresql数据库存储过程中的事务处理
  • 代码随想录刷题笔记 DAY 21 | 二叉搜索树的最小绝对值差值 No.530 | 二叉搜索树中的众数 No.501 | 二叉树的最近公共祖先 No.236
  • 全自动网页生成系统重构版源码
  • Cox等级资料是个坑
  • 九、开发进度月报
  • React从 EMAScript5编程规范到 EMAScript6编程规范过程中的几点改变
  • 使用最大边界相关算法处理文章自动摘要
  • 自动驾驶:Apollo如何塑造人类的未来出行
  • pgsql中in 和 join 怎么选
  • 缓存的概念
  • 【QT+QGIS跨平台编译】之二十一:【freetype+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
  • 记录首次使用yolov8-obb
  • week03day03(文件操作、正则表达式1)
  • 【C++入门学习指南】:函数重载提升代码清晰度与灵活性