工具软件   办公软件   操作系统   网络安全   设计在线   程序开发   教程宝典   软件下载   软件论坛
您的位置:软件 > 开发者网络 > 开发工具 > 开发专栏 > VC > 正文
OpenGL实现3DS文件中的模型自由旋转
[文章信息]
作者:张正波 牟 彦 黄 华 刘 波
时间:2004-10-06
出处:计算机与信息技术
责任编辑:方舟
[文章导读]
简述如何在OpenGL中, 读入和显示3DS文件中的模型,并着重阐述通过鼠标拖动对其进行自由旋转的数学基础和编程实现的方法
advertisement
热点推荐
· Excel动画图解:“高级筛选”
· 如何使用Ghost备份和恢复系统
· Visual C++ MFC 中常用宏的含义
· PS色彩调整简明教程:色彩调整图层
· 巧用资源实现文件共享
[正文]

1 2 3  下一页

  摘要 简述如何在OpenGL中, 读入和显示3DS文件中的模型,并着重阐述通过鼠标拖动对其进行自由旋转的数学基础和编程实现的方法。

  关键词 OpenGL 3DS文件格式 VC++ 自由旋转

  现在已经有很多论文和书籍提到在OpenGL中实现读入和显示3DS文件中的模型。但是在很多场合,仅读入和显示是不够的。我们需要从各个角度观察模型,以便更好地理解模型的形态,形成更为直观的感性认识。例如,在医学髁上骨折诊断中,如果把骨折后,断骨错位旋转的情况用三维模型模拟出来,并仅用鼠标的拖动就能实现从任何角度观看骨折的情况,这将对医生做出正确的诊断大有裨益。这也是我们为何考虑实现此项功能的初衷。本文将简要介绍3DS文件格式,怎样读入和显示模型,而重点放在通过鼠标拖动实现模型自由旋转的数学基础和编程实现的方法和经验。

  3DS文件的格式以及读入和显示文件中模型的一些经验.

  3DS文件是由许多块(chunk)组成的(大块中镶嵌子块)。由于至今为止,没有一个官方的文献说明其格式,所以还有很多未知的块。不过这并不影响我们读入3DS文件中的模型。因为我们在读入时,可以根据自己的需要选择性地读入自己需要的块,而忽略掉那些不感兴趣或未知的块。这正是块结构给我们带来的好处。

  一个块由块信息和块数据组成。块信息又由块的ID(两个字节长的标识,如4D4D)和块的长度(四个字节,其实也就是下一个块的偏移字节数)组成。用VC++以十六进制方式打开一3DS文件可以很清楚的看到其结构。在读入这种块结构(大块中嵌套小块,而块的结构固定)的文件时,完全可以用递归的方法实现,而返回上一级(子块读完,返回父块)的条件则是当前已经读入的块的字节数是否等于块的长度。从父块转向读入其子块,则可用switch语句实现,通过子块的ID判断进入哪个分支。

  由于在网上有很多现成的这类程序,所以完全可是找一个类封装的比较好的程序,将其移植到自己的工程中就行了。当然需要做一些小小的改动,比如根据自己的需要修改其显示和控制的部分。

  实现模型自由旋转的数学基础

  我们用鼠标实现模型的旋转,就好像手握一个包含模型的虚拟球一样。按一下鼠标,即在这个虚拟球上确定了一点,而拖动鼠标就是移动那个点,这样就实现了对虚拟球的旋转,同时达到旋转模型的目的。


  这个虚拟球的中心位于显示屏的中心,这样球的一半则位于显示屏以外(外半球,如图1所示)。我们用鼠标点击的点将定义为外半球上的点。这种映射关系的数学定义为:


  其中(x,y)是以球心为原点的屏幕坐标,R为球的半径。

  接下来要做的就是在球上给定两个点后(起始点和终点)怎样确定旋转的轴和角度。从图2中可以看出:旋转轴是两个鼠标矢量(m1和m2)所张成的平面的法向量,所以可以通过求m1和m2的叉乘得到,即:

Axis = m1 x m2 (式2)

  而旋转角度就是m1和m2之间的夹角a,因此:

a = acos (m1 * m2) (式3)


  在实际应用中,我们更习惯取a的两倍值进行旋转。因为这样将更有效地旋转模型。如果用鼠标点击视图的左中边缘,然后拖动至视图的右中边缘,则可实现模型以y轴为旋转轴的360度旋转。

  从图3可以看出:在旋转的过程中,两个弧(R1和R2)的合成所形成的旋转弧等于R1的起始点和R2的终点形成的旋转弧。即意味着我们定义的虚拟球的旋转运动只决定于起始点和终点。



1 2 3  下一页

发表评论推荐给朋友我想参加相关培训打印我对此感兴趣订阅电子杂志
相关内容焦点新闻
  • 用Visual C++操作SQL Server主从表
  • VC++下命名管道编程的原理及实现
  • 用Media Player设计个性化媒体播放器
  • MFC应用程序中浏览PDF、Word文件
  • VC++中进程与多进程管理的方法
  • 杨元庆终未能如愿 陈俊圣被台积电招至麾下
  • 女CEO辞职无损惠普“形象” 股价不降反升
  • 专家论道:跨国并购与打造中国IT跨国公司
  • 收购案后 甲骨文公布产品联合路线发展计划
  • 电子电器业人才需求解读 三类人才持续走俏
  • 公安机关:网上销售违禁品多为诈骗勿购买
  • IT企业巨头出谋献策 成都优先发展软件产业
  • 我国将加快以社会信息化推进城市应急联动
  • Advertisement

    天极无线


    奇妙科幻|美好风光|清风车影|漫画卡通|星座生肖|明星写真|动物世界
    老鼠爱大米
    挥着翅膀的女孩
    女人味
    栀子花开
    白月光
    刚刚好
    江南
    快乐崇拜
    亲爱的你怎么不在我身边
    小薇
    2002年的第一场雪
    有多少爱可以重来
    我的地盘
    七里香
    情人
     
    老鼠爱大米 老板电话
    冲动的惩罚 七里香
    我不是黄蓉 女生撒娇
    盛夏的果实 坚持到底
    孤单北半球 眉飞色舞
    挪威的森林 可爱女人
    最浪漫的事 老板电话

    CSEEK搜索