如何控制复杂3D模型的动作和大小? 比如用3DMax做的一个3D人物模型,让其想屏幕里跑,越跑越小....怎么实现? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 照相机的位子不变,使用perspective方式,你的人物的坐标,离照相机越来越远,自然就是越来越小了。 3DMax做的3D模型要转换成 OpenGL模型或Direct3D模型才能用。在 OpenGL 和 Direct3D 里面非常好做,你变换空间坐标就行 使用3DMax中的模型时,导入的是整个人体模型,而人体的运动是很复杂的,要想使它运动的比较逼真,就必须控制人体的头部、躯干、四肢几个大的部分,所以使用导入的模型,控制起来是比较困难。我建议控制复杂的模型时,还是自己定义它的几何信息和拓扑结构,这样运动起来的效果才会很逼真。至于你说的模型的大小,使用perspective方式是可以实现的,不过我还要建议你一下,对于远距离的景物,要考虑使用精度低的模型,这样绘制的效率会高些。 VCXP(【聪明的冰棍】) : 你说的非常地正确,我就是要把3D模型放到2D游戏里面去,就像生化危机系列一样.哪位能提供一些提供基础信息地文档和网站? 如果不用 Direct3D/OpenGL, 就需要一些图形学的基本知识了下面的计算过程和 Direct3d 中的差不多:1、 通过世界矩阵,把模型坐标转换到世界坐标中。2、 把世界坐标的转换到摄影机坐标3、 把这个 3d 模型投影到 摄影机坐标的平面上 (透视投影),特别注意被遮住的点(消隐) 这里一些理论性的文档http://cgd.pages.com.cn/cgd/develop/3D/200109/3DProg.0.htm 还是用 Direct3D 吧。几何变换,光照,材质,贴图 一个一个的实现太麻烦了,并且效率肯定不高。把 3dmax 的模型保存为 .3ds, 在转换成 .x , 直接用 Direct3D 就可以显示/处理了。 你狠!!!“要把3D模型放到2D游戏里面去”我刚想到的一种方法: 将它读到opengl中!然后,在opengl中改变它的z坐标(因为你要往屏幕里跑)! 在每改变一次,就用glReadPixels读取,转换成dib或bmp, 再拷贝到2d画面去! 在整个过程中,你不显示opengl画面 大家如果玩过生化危机系列就应该清楚我所想的那种方式。以生化危机3为例:其光盘下有一个data_a目录下的bss子目录中保存着所有的场景图(JPG格式)将背景图贴到下面,在上面绘3D人物,每个场景有固定的可行动路线和事件触发条件。(这些数据是在开门的时候初始化的)事件触发条件也基本上以3D人物在屏幕中的坐标为准。比如转换视角,切换背景等等。虽然我没开发过3D相关的东西,但觉得生化危机那类的东西完全是可以自己做个小样儿玩的.我最近还忙于看电影以及加班,没有过多时间研究,所以大家继续阿。说的越多越清楚 windows桌面怎么缩小到我的窗口的一个部分里 问一个静态变量的问题。 下面的一段程序来自acclerated C++,有点问题 求改写程序 如何在VC中设置导入目录啊 为什么IDC_HAND没有定义??? 初学COM应该看哪本书 [原创][VC6]魔塔操作简单版 动态库中能不能抛出异常,为什么编译提示异常忽略不计? 为什么树状视图无法第二次展开?(简单大送分) 串口通讯中出现的乱码问题(中文出现乱码,字母正常) 怎样使你的程序常驻内存?
在 OpenGL 和 Direct3D 里面非常好做,你变换空间坐标就行
1、 通过世界矩阵,把模型坐标转换到世界坐标中。
2、 把世界坐标的转换到摄影机坐标
3、 把这个 3d 模型投影到 摄影机坐标的平面上 (透视投影),特别注意被遮住的点(消隐)
将它读到opengl中!然后,在opengl中改变它的z坐标(因为你要往屏幕里跑)!
在每改变一次,就用glReadPixels读取,转换成dib或bmp,
再拷贝到2d画面去!
在整个过程中,你不显示opengl画面
将背景图贴到下面,在上面绘3D人物,每个场景有固定的可行动路线和事件触发条件。(这些数据是在开门的时候初始化的)事件触发条件也基本上以3D人物在屏幕中的坐标为准。比如转换视角,切换背景等等。虽然我没开发过3D相关的东西,但觉得生化危机那类的东西完全是可以自己做个小样儿玩的.
我最近还忙于看电影以及加班,没有过多时间研究,所以大家继续阿。说的越多越清楚