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

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

经过一段时间的研究实现了如何将骨架放到目前的跟踪系统上来,将骨架模型移植到系统上,替代原来的棍状模型,也在网上看到有些人在尝试做这个东西(好像都是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模型的初始化方向;这个是比较抽象一点的概念,它是指从父节点指向子节点的方向,例如左小臂的初始位置是平放向下,那么对应的矢量就是 (-0.2,-1,0)


以下是数据结构部分:
class bone
{
public:
 int y;
 int x;
 int r_z;&nbs

格式(fbx)大小(32.77MB)面数(645106)顶点(1935318)贴图(1)动画(无),临床,医学,模型,生物,骨骼,标本,样品,3D,人体骨骼 ———— # 人体骨骼三维模型详情介绍 ## 一、模型简介 这款三维模型人体骨骼为主题,格式为.fbx,大小为32.77MB。它通过高精度的建模技术,细致地呈现了人体骨骼的复杂结构,是医学、生物学等领域的重要工具。 ## 二、核心特征 - **精细度高**:面数达645106,顶点数量为1935318,能精准展现骨骼的每一处细节,如骨骼的凹凸、关节的形态等。 - **材质与贴图**:仅有1张贴图,却能真实还原骨骼的质感,无论是光滑的骨面还是粗糙的纹理,都栩栩如生。 - **无动画干扰**:专注于骨骼静态结构展示,避免了动画元素对观察骨骼本身的干扰,让使用者能更纯粹地研究骨骼形态。 ## 三、适用场景 - **医学临床**:医生可用于教学演示,帮助患者更好地理解自身骨骼状况;在手术规划中,能提供精确的骨骼参考,辅助制定手术方案。 - **医学教育**:是解剖学课程的理想教具,学生可通过多角度观察模型,深入学习骨骼的名称、位置、连接关系等知识,提升学习效果。 - **生物学研究**:为生物学家研究人体骨骼的进化、生长发育等提供直观的三维模型,便于分析和比较。 - **科普展示**:在博物馆、科技馆等场所,以生动的形式向大众普及人体骨骼知识,激发人们对人体奥秘的探索兴趣。 这款人体骨骼三维模型凭借其精细的制作和多场景适用性,成为医学、生物学等领域不可或缺的资源,无论是专业研究还是科普教育,都能发挥重要作用。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值