青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿
這是使用蓋莫游戲引擎做的基于ode物理引擎的摩擦力測試的小例子
代碼如下:
  1 //! 2010.03.05
  2 /////////////////////////////////////////////////////
  3 /// 蓋莫游戲引擎蓋莫引擎物理場景測試3
  4 /////////////////////////////////////////////////////  
  5 #include <GEngine/Gaimo.hpp>
  6 using namespace std;
  7 
  8 #define LENGTH  4 
  9 #define MASS    0.4 
 10 #define FORCE   0.6 
 11 #define MU      1.0     
 12 #define GRAVITY 9.8     
 13 
 14 //! 盒子紋理
 15 int  cubeid = 0;  
 16  
 17 dGeomID ground;
 18 core::PhysicsEngine<dWorldID,dSpaceID,dJointGroupID,dBodyID,dGeomID> engine;
 19 core::PhysicsBody<dBodyID,dGeomID,1> box[3];
 20 
 21 //! 碰撞檢測回調(diào)函數(shù)
 22 static void nearCallback(void *data, dGeomID o1, dGeomID o2);
 23  
 24 //! 初始化物理場景
 25 void Init(); 
 26 //! 物理場景更新
 27 void PhysicsLoop(); 
 28 
 29 int main(int argc, char **argv)
 30 {   
 31     Init();
 32     
 33     //! 初始化引擎設(shè)備并得到設(shè)備指針
 34     core::Device* device = core::InitDevice("蓋莫引擎物理場景-摩擦力測試");
 35     //! 得到引擎場景指針
 36     core::RefPtr<core::SceneManager> scenemanager = device->GetSceneManager();
 37     //! 得到引擎資源指針
 38     core::ResourceManager* resourcemanager = device->GetResourceManager();
 39 
 40     //! 得到圖形和其紋理
 41     core::RefPtr<core::Image>   box = resourcemanager->GetImage("box","..\\image/tile.tga");
 42     core::RefPtr<core::Texture> boxtexture = resourcemanager->GetTexture("box",box);
 43     boxtexture->Bind();
 44     cubeid = boxtexture->GetTextureId();
 45    
 46     //! 獲取全局?jǐn)z像機(jī)
 47     core::RefPtr<core::Camera> camera = scenemanager->GetGlobalCamera(Vector3f(-5,100,17),
 48                                                                       Vector3f(18,1,17),
 49                                                                       Vector3f(0,1,0));
 50     camera->SetViewport(0,0,640,480);  
 51     camera->SetPerspective(50.0f,640.0f/480.0f,0.1f,1000.0f);                                                                  
 52     glClearDepth(1.0f);                                            
 53     glDepthFunc(GL_LEQUAL);                                       
 54     glEnable(GL_DEPTH_TEST);
 55     glEnable(GL_CULL_FACE);   
 56     glShadeModel(GL_SMOOTH);                                    
 57     glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);   
 58     core::Render::SetClearColor(core::Color::Blue);
 59  
 60     BEGIN_LOOP(device)
 61        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);            
 62        glLoadIdentity();
 63        camera->SetPerspective(45.0f,640.0f/480.0f,0.1f,1000.0f);
 64        camera->Render();  
 65        PhysicsLoop(); 
 66     END_LOOP(device)
 67    
 68     device->Close();
 69     device->Drop();
 70 
 71     return 0;
 72 }
 73 
 74 //! 初始化物理場景
 75 void Init()
 76 {   
 77    engine.SetGravity(0,-GRAVITY,0); 
 78    ground = engine.SetPlane(0,1,0,0);
 79    engine.SetCollideCallBack(&nearCallback);
 80  
 81    box[0].body = engine.GetBody("body1",Vector3f(2*LENGTH,0.25*LENGTH,LENGTH*2));
 82    box[1].body = engine.GetBody("body2",Vector3f(2*LENGTH,0.25*LENGTH,LENGTH*6));  
 83    box[2].body = engine.GetBody("body3",Vector3f(2*LENGTH,0.25*LENGTH,LENGTH*10));   
 84    for(int i = 0; i < 3; i++)
 85    { 
 86       dMass m; 
 87       dMassSetBox(&m,1,LENGTH,LENGTH*0.5,LENGTH);
 88       dMassAdjust(&m,MASS);
 89       dBodySetMass(box[i].body,&m);
 90       box[i].geom[0= dCreateBox(engine.GetSpace(),LENGTH,0.5*LENGTH,LENGTH);
 91       dGeomSetBody(box[i].geom[0],box[i].body);  
 92    }    
 93 }
 94 
 95 static void nearCallback(void *data, dGeomID o1, dGeomID o2)
 96 {
 97   int i;
 98 
 99   //! 僅僅考慮和地面的碰撞 
100   int g1 = (o1 == ground);
101   int g2 = (o2 == ground);
102   if (!(g1 ^ g2)) 
103      return;
104 
105   dBodyID b1 = dGeomGetBody(o1);
106   dBodyID b2 = dGeomGetBody(o2);
107 
108   dContact contact[3];     
109   for (i=0; i<3; i++
110   {
111      contact[i].surface.mode = dContactSoftCFM | dContactApprox1;
112      contact[i].surface.mu = MU;
113      contact[i].surface.soft_cfm = 0.01;
114   }
115   if(int numc = dCollide (o1,o2,3,&contact[0].geom,sizeof(dContact))) 
116   {
117      for (i=0; i<numc; i++
118      {
119         dJointID c = dJointCreateContact(engine.GetWorld(),engine.GetContactGroup(),contact+i);
120         dJointAttach (c,b1,b2);
121      }
122   }
123 }
124 
125 //! 物理場景更新
126 void PhysicsLoop()
127 {  
128     engine.Simulation();
129     
130     const float sides[3= {2*LENGTH,LENGTH*0.5f,2*LENGTH};
131     
132     dBodyAddForce(box[0].body,FORCE*5,0,0); 
133     dBodyAddForce(box[1].body,FORCE*7,0,0); 
134     dBodyAddForce(box[2].body,FORCE*9,0,0); 
135 
136     const dReal* pos = dBodyGetPosition(box[0].body);
137     const dReal* mat = dBodyGetRotation(box[0].body);
138     core::Render::RenderCube(cubeid,(const float*)pos,(const float*)mat,sides);  
139     pos = dBodyGetPosition(box[1].body);
140     mat = dBodyGetRotation(box[1].body);
141     core::Render::RenderCube(cubeid,(const float*)pos,(const float*)mat,sides);   
142     pos = dBodyGetPosition(box[2].body);
143     mat = dBodyGetRotation(box[2].body);
144     core::Render::RenderCube(cubeid,(const float*)pos,(const float*)mat,sides);               
145 }  
可以看出三個盒子的物理屬性都是一致的,除了其位置之外
在模擬過程中給3個盒子施加的力是不同的
posted on 2010-03-07 15:26 ccsdu2009 閱讀(480) 評論(0)  編輯 收藏 引用 所屬分類: Game引擎
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精品国产69国产精品亚洲| 黄色av一区| 亚洲视频精选在线| 99国产精品99久久久久久粉嫩| 欧美调教视频| 欧美亚一区二区| 亚洲手机在线| 亚洲欧美日韩中文视频| 欧美一区二区视频97| 久久久一本精品99久久精品66| 久久先锋影音av| 欧美精品大片| 国产精品色午夜在线观看| 国产一区二区三区精品欧美日韩一区二区三区 | 国产一区二区欧美日韩| 国内精品久久久久久久影视麻豆| 1769国内精品视频在线播放| 亚洲欧洲一区二区三区久久| 一区二区高清视频在线观看| 午夜综合激情| 牛夜精品久久久久久久99黑人 | 美女福利精品视频| 亚洲高清视频一区| 亚洲小说春色综合另类电影| 久久久久免费| 国产精品成人v| 亚洲国产老妈| 欧美一区二区大片| 亚洲国产日韩在线| 欧美在线啊v一区| 欧美网站在线| 亚洲美女视频在线观看| 久久国产精品亚洲va麻豆| 亚洲欧洲日韩在线| 久久久久91| 国产精品一区二区久久精品| 91久久久久| 久久免费国产精品1| 亚洲无玛一区| 欧美三级电影一区| 亚洲精品久久久久久久久久久久| 久久福利视频导航| 亚洲天堂av在线免费观看| 欧美福利专区| 亚洲国产小视频在线观看| 久久一区国产| 久久xxxx精品视频| 国产日韩精品视频一区| 午夜精品久久久久久久蜜桃app| 亚洲国产小视频在线观看| 久久国产精品99精品国产| 国产精品久久影院| 中文av字幕一区| 亚洲国产日日夜夜| 美女精品自拍一二三四| 欧美在线看片a免费观看| 亚洲午夜一级| 亚洲免费观看在线观看| 欧美成人精品福利| 国产欧美大片| 久久激五月天综合精品| 亚洲乱码国产乱码精品精可以看| 女人天堂亚洲aⅴ在线观看| 国产精品综合色区在线观看| 欧美一级一区| 一区二区三区高清在线观看| 欧美日韩三级在线| 亚洲精品韩国| 日韩小视频在线观看| 久久夜色精品国产亚洲aⅴ| 怡红院精品视频| 欧美专区在线| 久久精品人人做人人爽| 先锋影音久久| 国产精品永久入口久久久| 在线视频欧美日韩| 亚洲免费综合| 中国成人黄色视屏| 国产精品女人久久久久久| 亚洲香蕉视频| 日韩午夜在线播放| 久久性天堂网| 精品动漫3d一区二区三区免费| 午夜国产精品影院在线观看| 西瓜成人精品人成网站| 国产美女精品视频免费观看| 快she精品国产999| 久久久久久9| 一本色道**综合亚洲精品蜜桃冫| 91久久久在线| 国产精品一区二区久久| 久久精品国内一区二区三区| 亚洲在线视频免费观看| 亚洲一区二区三区中文字幕在线| 久久这里有精品视频| 亚洲性视频h| 亚洲一区二区三区在线播放| 在线欧美电影| 91久久精品国产| 国产亚洲一本大道中文在线| 久久久av水蜜桃| 欧美日韩精品免费观看| 亚洲欧美在线免费| 欧美精品www| 亚洲午夜精品久久| 久久免费黄色| 亚洲人成在线观看| 亚久久调教视频| 亚洲高清中文字幕| 午夜在线电影亚洲一区| 一区二区三区在线免费播放| 一区二区三区 在线观看视| 国产精品免费网站| 91久久精品美女高潮| 国产精品欧美一区喷水| 欧美国产日韩在线观看| 国产精品av久久久久久麻豆网| 亚洲欧洲午夜| 日韩视频一区二区三区在线播放| 精品va天堂亚洲国产| 亚洲第一精品影视| 久久精视频免费在线久久完整在线看| 亚洲破处大片| 久久亚洲二区| 国产欧美日韩一区二区三区在线观看 | 午夜性色一区二区三区免费视频| 午夜精品福利视频| 亚洲一区在线视频| 久久精品一本久久99精品| 欧美一区二区三区久久精品| 久久精品视频在线免费观看| 欧美在线短视频| 欧美激情欧美激情在线五月| 老司机精品视频网站| 国产精品成人一区二区网站软件 | 久久综合五月| 国产精品乱人伦中文| 中国成人在线视频| 亚洲精品乱码| 欧美精品在线免费观看| 久久躁狠狠躁夜夜爽| 国产综合在线看| 亚洲一区在线视频| 狠狠做深爱婷婷久久综合一区 | 久久夜精品va视频免费观看| 老鸭窝91久久精品色噜噜导演| 久久久久久久久久久一区 | 性欧美8khd高清极品| 欧美精品国产一区二区| 99精品国产99久久久久久福利| 亚洲第一视频| 免费成人你懂的| 久久中文字幕一区二区三区| 亚洲电影成人| 久久久噜噜噜久久人人看| 久久精品女人的天堂av| 欧美日韩喷水| 日韩视频亚洲视频| 亚洲国产成人精品久久| 你懂的视频一区二区| 久久夜色撩人精品| 亚洲国产精品视频| 久久躁狠狠躁夜夜爽| 亚洲激情在线| 亚洲高清久久网| 欧美激情网友自拍| 亚洲日本欧美在线| 性色av一区二区三区在线观看 | 国产啪精品视频| 亚洲欧洲一区二区三区久久| 亚洲一区二区三区高清不卡| 久久精品在线视频| 亚洲精品中文字幕在线观看| 狠狠久久亚洲欧美| 欧美日韩成人在线| 欧美福利视频在线| 欧美在线视屏| 欧美午夜电影网| 久久先锋影音av| 欧美一区二区三区免费视频| 亚洲国产成人久久综合| 欧美在线精品一区| 99成人在线| 亚洲肉体裸体xxxx137| 国产欧美日韩专区发布| av成人免费| 欧美二区视频| 国产欧美日韩一级| 免费在线成人| 欧美亚洲专区| 亚洲国产精品免费| 欧美中文字幕视频| 亚洲国产一区视频| 韩国欧美一区| 欧美久久久久| 亚洲精品一级| 久久成人免费| 欧美一级网站| 日韩视频中文字幕| 亚洲国产日韩欧美在线图片|