Blender骨骼创建

2024-06-14 20:52
文章标签 blender 骨骼 创建

本文主要是介绍Blender骨骼创建,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

骨骼系统

建立

使用Shift + A添加骨骼或在添加|骨架中添加一段骨骼

骨骼的三种模式

-物体模式:做动画,摆人物pose时在该模式

-编辑模式:进行骨骼搭建(选择一段骨骼,然后按E挤出一段骨骼并进行调整)

-姿态模式:调整姿势,添加控制器,可选择性添加反向动力学IK(快捷键Shift + I)

模式切换快捷键Ctrl + Tab

先选中物体再选择骨骼,按Ctrl + P选择附带自动权重即可将物体与骨骼绑定父子关系(此时骨骼为父节点,骨骼控制物体),此操作也叫蒙皮。

若先选中骨骼再选中物体,按Ctrl + P选择物体,也可将物体与骨骼绑定父子关系(此时物体为父节点,物体控制骨骼)

骨骼对称

再编辑模式下建立镜像的骨骼,一般不使用镜像功能,而使用骨架|对称功能

但是单纯选中骨骼然后点击对称是无效的,因为Blender对对称的骨骼名称有要求,若已有的骨骼在对称轴左侧,则名称最后需要带有L,在右侧则要有R等。然后Blender提供了骨骼自动重命名的方法(选中骨骼),在骨架|名称中,然后进行对称即可。


添加了IK反向动力学的骨骼,可以在姿态模式下如图所示位置处调整骨骼约束效果。

有时影响效果过大可以调节链长参数,使其影响局限于固定链条数量内。

在编辑骨骼时,没有相连的骨骼间若存在约束关系比如下图,中间胸口的骨骼若转动,应该会带动左右的肩部的骨骼,则需要建立约束关系,先选中受约束的骨骼,再选中另一个骨骼,按Ctrl + P,选择保持偏移量即可(类似创建父子关系),此时进入姿态模式,转动父骨骼,会发现子骨骼会一起转动。


蒙皮

操作为:先选中物体再选择骨骼,按Ctrl + P选择附带自动权重即可,此时若转动骨骼,可能模型就会跟着转动了,只是转动的部位会存在问题(也可能不动),这时就需要进行权重绘制。

权重绘制

权重为各部分骨骼会影响物体的哪些部位以及影响的大小,从红色到蓝色影响效果递减,红色为完全影响,蓝色为完全不影响。

绘制流程:

-先选中骨骼再选中模型,然后进入权重绘制模式

-按住Alt +鼠标左键点击单段骨骼即可显示该骨骼影响部位及其权重效果,可在偏好中修改比如改为Ctrl + Alt + 鼠标左键以防以转动视角冲突

-然后就可以使用笔刷进行绘制,修改笔刷的权重值为0可以达到橡皮檫的效果,或切换笔刷到F Subtract

-若再绘制时总会出错绘制到不想要绘制的区域,可以按Tab键进入编辑模式,然后再面选择下,选中要绘制物体的面(鼠标移到某个面上,然后按L即可选中相连项),然后按Shift + H即可仅显示选中面,然后再按Tab进入权重绘制模式,即可放心绘制。

-绘制完成后,先按Tab进入编辑模式,然后按Alt + H即可显示全部模型。

Blender内置骨骼插件Rigify(可以在偏好设置的插件中搜索打开)

然后在添加|骨骼|基本中创建基本人形骨骼

然后在数据属性中找到Rigify,点击创建即可自动创建出各种骨骼控制器(约束)。


按N键,在条目中找到Rig Layers,即可看见所有骨骼控制器(约束),点击对应部位即可取消该骨骼的约束效果。

进入姿态模式,选中某骨骼控制器,移动/旋转,会发现添加的骨骼没有跟随变化,因为生成控制器时并非直接在原骨骼上添加控制,关闭原骨骼显示,会有一个绿色的骨骼,该骨骼会受到控制器影响。

所以建模完成后可以使用插件的骨骼,然后调整骨骼效果匹配模型(可以在数据属性|视图显示|显示中打开骨骼的轴向显示并调整轴位置,以免骨骼旋转存在问题,如下图),然后进行蒙皮和权重设置操作,最后自动生成骨骼控制器。


若要旋转骨骼改变轴向,可以按Ctrl + R进行操作,自动扭转对齐 Shift + N。

第三方插件Auto Rig Pro

使用插件进行骨骼控制器创建时,不能随意添加/删除骨骼,只能使用插件内的添加/删除骨骼功能,否则创建的控制器会混乱。

简单使用流程参考05-AutoRigPro入门_哔哩哔哩_bilibili

其中添加完控制器后,移动旋转控制点测试过无问题后,可以按Alt + G清空所有骨骼的移动,按Alt + R清空所有骨骼的旋转。

这篇关于Blender骨骼创建的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1061478

相关文章

ESP32 esp-idf esp-adf环境安装及.a库创建与编译

简介 ESP32 功能丰富的 Wi-Fi & 蓝牙 MCU, 适用于多样的物联网应用。使用freertos操作系统。 ESP-IDF 官方物联网开发框架。 ESP-ADF 官方音频开发框架。 文档参照 https://espressif-docs.readthedocs-hosted.com/projects/esp-adf/zh-cn/latest/get-started/index

vscode-创建vue3项目-修改暗黑主题-常见错误-element插件标签-用法涉及问题

文章目录 1.vscode创建运行编译vue3项目2.添加项目资源3.添加element-plus元素4.修改为暗黑主题4.1.在main.js主文件中引入暗黑样式4.2.添加自定义样式文件4.3.html页面html标签添加样式 5.常见错误5.1.未使用变量5.2.关闭typescript检查5.3.调试器支持5.4.允许未到达代码和未定义代码 6.element常用标签6.1.下拉列表

【Qt6.3 基础教程 17】 Qt布局管理详解:创建直观和响应式UI界面

文章目录 前言布局管理的基础为什么需要布局管理器? 盒布局:水平和垂直排列小部件示例:创建水平盒布局 栅格布局:在网格中对齐小部件示例:创建栅格布局 表单布局:为表单创建标签和字段示例:创建表单布局 调整空间和伸缩性示例:增加弹性空间 总结 前言 当您开始使用Qt设计用户界面(UI)时,理解布局管理是至关重要的。布局管理不仅关系到UI的外观,更直接影响用户交互的体验。本篇博

3_创建Tab控件

1,新建MFC 对话框项目,为对话框添加Tab控件,选中Tab控件,新建控件变量m_tab_ctrl 2,为Tab控件添加tab项 m_tab_ctrl.InsertItem(0, L”000”),参数1,哪个位置;参数2,item的名称 3,为Tab控件添加监听事件, void C测试Dlg::OnTcnSelchangeTab1(NMHDR *pNMHDR, LRESUL

Java NIO 创建/复制缓冲区

创建缓冲区的方式 主要有以下两种方式创建缓冲区: 1、调用allocate方法 2、调用wrap方法 我们将以charBuffer为例,阐述各个方法的含义; allocate方法创建缓冲区 调用allocate方法实际上会返回new HeapCharBuffer(capacity, capacity)对象; 缓存空间存储在CharBuffer类的成员属性char[] h

spring mvc完整项目创建步骤记录

快速创建一个spring mvc项目(只有页面调用→到controller→到页面) 1、首先创建Dynamic Web Project 2、创建jsp页面index.jsp以及成功(/WEB-INF/view/success.jsp)和失败页面(/WEB-INF/view/error.jsp) index.jsp <%@ page language="java" contentType=

在Qt5中创建、读取和写入JSON文件的完整指南

Qt5 提供了一个非常方便的JSON解析器,使得在C++中处理JSON数据变得非常简单。本文将详细介绍如何在Qt5中创建、读取和写入JSON文件。 读取JSON文件的示例 假设我们有一个名为test.json的JSON文件,内容如下: {"appDesc": {"description": "SomeDescription","message": "SomeMessage"},"appNam

client-go入门之1:创建连接Kubernetes集群的客户端

文章目录 简介使用 简介 我们可以使用Dashboard或kubectl来访问k8s的API,也可以使用编程语言,如Go,Java,Python作为客户端来访问k8s。client-go是一个使用go语言编写的库,用来连接k8s集群并对集群资源进行操作。 使用 以下代码使用go连上k8s集群,并查询集群的节点信息: package mainimport ("fmt"meta

新建帐套提示“无法创建数据库!请检查目录…是否存在,以及系统空间是否充足.

1、在K/3安装路径下K3ERP文件夹下,找到DBFILE文件夹;2、右击单击“DBFILE”文件夹,选择“属性”→【安全】→【添加】,选择【高级】→【立即查找】→找到everyone用户;3、把该用户添加到【用户和组】中,并赋予“完全控制权限”。

二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度

二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度计算 输入格式:如   abd###ce##f##*   package tree;//二叉树的二叉链表实现import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Sta