教程:如何制作一个可控制的人体骨骼模型

本文介绍了一种使用OpenGL和VC6.0开发的制作人体骨骼模型的方法,涉及3D模型准备、核心数据结构定义、骨架结构初始化和3ds文件加载。文章详细阐述了如何通过输入骨骼方向实现动画效果,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

经过一段时间的研究实现了如何将骨架放到目前的跟踪系统上来,将骨架模型移植到系统上,替代原来的棍状模型,也在网上看到有些人在尝试做这个东西(好像都是d3d的骨骼动画,基于opengl的没有),我把自己的制作方法简单介绍一下,希望能对正在做这方面的人有所帮助。

      如何制作一个可控制的人体骨骼模型

描述:本文提供一种将骨架动作矢量映射到人体骨架模型的一种方法,通过输入各个骨骼的当前方向,反馈给骨架模型,这样就实现了动画的效果。
     实验开发工具是VC6.0在OpenGL平台上开发完成。


阅读对象:

 假定读者已经熟悉OpenGL编程,就算不熟悉,只要了解基本的旋转,平移,堆栈操作就好。
 假定读者已经了解基本的c++编程,其中需要了解递归的算法,递归的方法请参考一下数据结构吧。
 

制作过程:

第一步,3D模型准备

这一步骤的目的是提供分解的骨骼模型,它需要导出多个组成身体结构的文件,模型可以不用自己制作,只要到网上找找吧,应该很多,最好是是人体模型,如果用动物的模型也可以,不过需要自己定义映射骨架了,比如图中的骷髅模型是我从人体动画软件poser 5.0找到的。然后使用3d max 将身体的各个部位导出为3ds文件,这个步骤很简单,也不需要有什么3d max的基础。这里有一个小的技巧就是可以选中多个部分作为一个3ds模型导出,比如我需要将左右肩胛骨与脊椎骨肋骨作为同一个部分导出,这样可以将它命名为身体躯干(body)。这样我们就准备了各个3ds文件了,分别是:

身体躯干 BODY.3DS
头部     HEAD.3DS
左臂     LSHOULDER.3DS
右臂     RSHOULDER.3DS
左小臂   LELBOW.3DS
右小臂   RELBOW.3DS
左大腿   LTHIGH.3DS
右大腿   RTHIGH.3DS
左小腿   LFEET.3DS
右小腿   RFEET.3DS

这样这些组成部分就可以灵活的拼接出一个人体来了。

第二步,定义相关的核心数据结构

为了得到运动的各个身体部分数据信息,我们需要存储一些运动信息,主要有:
骨骼ID
骨骼关节的当前位置;r_x,r_y,r_z
骨骼之间的关系,例如手臂是躯干的延伸,而左小臂是左臂的延伸;PID,CID

我们可以通过下图来了解骨骼之间的结构关系


存放3ds文件位置;file_name_3ds
3ds模型的初始化方向;这个是比较抽象一点的概念,它是指从父节点指向子节点的方向࿰

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值