教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
firefox火狐浏览器下载
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
精彩图库
  当前位置: 库库中文网 · 系统编程教程 · Java语言 · Java文档库 · 游戏开发

PhysX SDK物理引擎设计包运用教学文章

学院最新推荐文章
教程推荐
『PhysX SDK物理引擎设计包运用教学文章』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2006-9-18 

AGEIA的PhysX处理器是世界上首款物理模拟处理器 (PPU), 该处理器将解除中央处理器进行物理模拟的负担。PhysX PPU 的设计构架基于顶点的多线程操作,允许游戏开发人员进行精确、流畅和动画创作和运动模拟,例如毛发、布料、液体、流体等。本文介绍了如何利用PhysX SDK物理引擎开发包来实现我们仿真的效果。


AGEIA的PhysX处理器是世界上首款物理模拟处理器 (PPU), 该处理器将解除中央处理器进行物理模拟的负担。PhysX PPU 的设计构架基于顶点的多线程操作,允许游戏开发人员进行精确、流畅和动画创作和运动模拟,例如毛发、布料、液体、流体等。目前 AGEIA 的PhysX处理器是世界上第一款也是唯一一款专注于物理算法处理器的产品.
利用PhysX SDK物理引擎开发包来实现我们仿真的效果时,一般需要以下几个步骤:
(1)    PrintControls();
(2)    InitGlut(argc, argv);
(3)    InitNx();
(4)    glutMainLoop();
(5)    ReleaseNx();
其中最为主要的函数是InitNx(),也既是初始化PhysX,创建一个PhysX SDK实例以及建立我们的场景。下面具体分析各个函数的作用。
一.PrintControls();
显而易见,利用该函数的目的是在告诉玩家该如何进行操作。操作的按键可根据自己的喜好进行设置。
二.InitGlut(argc, argv);
PhysX是OpenGL上开发的,所以在初始化PhysX实例之前,必须建立一个OpenGL的框架。
①.    glutInit(&argc, argv) 用来初始化GLUT,并且处理任意的命令行变量
②.    glutInitWindowSize(int width, int size) 指定了窗口以像素为单位的尺寸
③.     glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE | GLUT_DEPTH) 建立一个带有双缓存、RGB颜色模型和很大缓存的窗口
④.    glutCreateWindow(char* string) 创建一个具有OpenGL创建的窗口,string为该窗口的窗口名
⑤.    glutSetWindow()
⑥.    glutDisplayFunc(RenderCallback) 渲染
ProcessCameraKeys();
     SetupCamera();
         if (gScene && !bPause)
     {
        GetPhysicsResults();
ProcessInputs();根据选择的对象,给该对象施加前后、上下、左右不同方向的力,然后调用对象的方法addForce,产生不同的物理效果
        StartPhysics();
     }
    // Display scene
     RenderActors(bShadows);
调用函数DrawActor(NxActor* actor)将场景中的物体渲染出来,实在是在DrawActor(NxActor* actor)函数中根据物体形状调用不同形状的绘画函数将物体渲染出来的。在渲染的过程中,利用显示列表绘制不同形状的物体。在PhysX中,物体形状分为以下几种:NX_SHAPE_PLANE(面板状), NX_SHAPE_BOX(盒子状), NX_SHAPE_ SPHERE(球形状), NX_SHAPE_CAPSULE(胶囊状), NX_SHAPE_CONVEX(凸多边形状), NX_SHAPE_MESH(网状状)。
当bShadows为true时,渲染物体的阴影;为false时就不绘制
     DrawForce(box, gForceVec, NxVec3(1,1,0));
        将物体受力的受力方向渲染出来
⑦.    glutReshapeFunc(ReshapeCallback)
设置窗口
⑧.    glutIdleFunc(IdleCallback);
  
⑨.    glutKeyboardFunc(KeyboardCallback);
⑩.    glutKeyboardUpFunc(KeyboardUpCallback);
?.    glutSpecialFunc(SpecialCallback);
在此,调用ResetNx(),重新渲染
?.    glutMouseFunc(MouseCallback);
?.    glutMotionFunc(MotionCallback);
?.    MotionCallback(0,0);
三.InitNx() 因为我们需要初始化PhysX SDK实例,并且建立我们需要的场景;所以我们需要设置以下几个变量,并且将它们设置为全局变量
        NxPhysicsSDK*gPhysicsSDK = NULL;//PhysX SDK实例对象
NxScene*gScene = NULL;//场景对象
NxVec3 gDefaultGravity(0,-9.8,0);
***注意:坐标系的方向指向,在PhysX、OpenGL以及3DMax都有一些不一样,当运行里面的demo的时候就可以体会到。它们的坐标系分别如下:    
 

  

[1] [2] 下一页  

作者:网络 来源:QQGB.com
】【关闭窗口
·上页:
·下页:
相关文章
     系统编程教程 - 游戏开发
普通教程UTF-8到Unicode地编码转换
普通教程Nebula2探秘07-运用Tcl脚本服务
普通教程Nebula2探秘04-Time Server研究
普通教程Nebula2探秘01-创建KernelServe
普通教程Nebula2探秘序章:Nebula2环境配
普通教程Nebula2探秘08-对象序列化
普通教程Nebula2探秘06-运用Tcl脚本服务
普通教程Nebula2探秘05-RTTI
普通教程Nebula2探秘10-Signal System
普通教程Nebula2探秘11-Simple Window
普通教程解释分析XML地利器-TinyXML
普通教程Nebula2探秘12-基于Win命令行地
精彩图片汇集
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright © 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Template designed by Virus. Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL.
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光