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

牽著老婆滿街逛

嚴以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

小神之Newton物理引擎教程(一) Newton物理引擎教程

第一節 Getting started

?

這個例程將告訴你如何把 newton 物理引擎和你的圖形引擎結合起來。

如果你沒有解過 SDK 包,先解開包。

打開 Visual studio 找到包里的 Tutorials.dsw 后雙擊。

?

選擇子項目 Tutorial 1 getting started 并使它活動起來。

?

選擇 Tutorial.cpp 文件并雙擊在編輯框中打開。

?

在文件的開始你將發現 include 部分。

?

看下面幾行(注意黑體):

?

#include “newton.h”
#include "tutorial.h"
#include "HiResTimer.h"
#include "RenderPrimitive.h"
#include "Newton.h"

找到文件主要函數。

首先初始化圖形引擎。在這個案例中我們已經把 opengl 的初始化壓成一個簡單的函數。它可以完成你的引擎中主要系統的初始化。

// Initialize opengl
InitOpenGl (argc, argv, "NewtonGetting Started", DrawScene, NULL, Keyboard);

接下來你將看到場景初始化的的相關調用。

// Create the physics scene. This represents your engine scene initialization
InitScene();

最后是 opengl 的主體循環調用,它描述的是你的引擎主循環。

現在找到函數 InitScene 物理引擎的初始化就在那里。

?

在這個例程中,我們將實現一個簡單的物理場景:一個剛體球懸浮在真空中。

?

我們將看到:

?

// Create the newton world
nWorld = NewtonCreate (NULL, NULL);

// 譯者注:實際上這之前還需要聲明 nWorld ,以下許多地方類似

它將為 nowton 世界創建一個句柄,并初始化所有內部結構。這里我們先忽視兩個參數,在下個例程中我們將對之詳細說明。我們保持這個指向 nowton 世界的句柄為全程變量。

但是它( nowton 世界)不可能脫離 opengl 循環,所以我們要設定一個事件去終止 nowton 世界和我們已經分配的所有資源。這就是 onexit (Cleanup) 所要做的。

?

接下來我們要創建一個剛體,在這之前我們要創建它的幾何碰撞。(剛體每時每刻都必須有幾何碰撞)

所以我們根據圖形箱子大小去創建一個碰撞。

// Create the collision shape
collision = NewtonCreateBox (nWorld, box.m_x * 2.0f, box.m_y * 2.0f, box.m_z * 2.0f, NULL);

第一個參數是 Newton world ,接下來的是箱子大小,最后一個參數是用來設置從源剛體而得到的幾何碰撞中偏轉轉換矩陣。當使用 Null 時,這個箱子會被源物體替代?,F在我們創建剛體并保存為一個全局變量。

?

// Create the ridid body
ribidBodyBox = NewtonCreateBody (nWorld, collision);

當你使用完碰撞對象后你要釋放它,碰撞對象在 newton 里是唯一一個使用 reference 數的對象,這是有必要的因為其他剛體可以分享幾何碰撞。取個例子來說,你可以創建很多個同樣大小的箱子,你可以使用同一個幾何碰撞。

// Get rid of the collision
NewtonReleaseCollision (nWorld, collision);

?

newton 創建一個剛體,質量設置為無限以保持這個剛體呈靜態。我們需要去告訴 newton 這個物體是動態的,就調用下面這個

// set the body mass and inertia
NewtonBodySetMassMatrix (ribidBodyBox, 1.0f, 1.0f, 1.0f, 1.0f);

別去考慮質量與慣性,他們將會在例程 the Dealing with Mass and Inertia 中討論。

?

我們同樣需要在這個世界中物體的位置。

// Set the transformation matrix 設置變換矩陣
dMatrix matrix (box.GetMatrix());
matrix.m_posit.m_x = 0.0f;
matrix.m_posit.m_y = 1.0f;
matrix.m_posit.m_z = 0.0f;
NewtonBodySetMatrix (ribidBodyBox, &matrix[0][0]);

這里沒有應力和應變應用在這個物體上,我們僅僅是應用了最初的角速度 。

// Animate the body by setting the angular velocity 設置角速度使物體動起來
dVector omega (1.0f, 1.0f, 1.0f);
NewtonBodySetOmega (ribidBodyBox, &omega[0]);

// 這里的 NewtonBodySetOmega 中的 Omega 其實是小寫希臘字母最后一個—— ω ,即物理中的角速度。

這是所有初始化,現在是主要的仿真循環。

每一幀在 OPENGL 或者你的引擎中都將在主要仿真循環中創建一個回調。在這個例程中,它是函數 DrawScene

注意我們需要取得從最后一次更新到現在的時間。它使用下面這個函數。

// get the time step
timeStep = timer.GetElapsedSeconds();

接下來,我們調用 NewtonUpdate 來用時間量推動這個世界。

// update the Newton physics world
NewtonUpdate (nWorld, timeStep);

現在我們需要找到在世界更新的過程中位置改變的物體變換矩陣,在這個例子中我們只有一個物體。

// get the matrix from the rigid body
dMatrix matrix;
NewtonBodyGetMatrix(ribidBodyBox, &matrix[0][0]);

現在我們需要去應用這些轉換到圖形物體中。

// Set the matrix of the visual body
box.SetMatrix (matrix);

最后我們渲染場景。

// Render the object
glPushMatrix();
box.Render();
glPopMatrix();

這些都包含在主循環中。

最后的事情就是終止應用程序,我們用點擊關閉窗體按鈕或者按 ESCAPE 鍵來終止。每個案例都是用 exit(0) 。

這個函數將會調用所有終止程序并次序顛倒的運行。在我們的案例中我們僅僅是使用 cleanup 函數去銷毀 the Newton world 。

操作這個例程用 WSAD 鍵。

改變運動趨勢按鼠標并移動鼠標。

例程結束。

從這個例程中我們可以看出,物理引擎的基本操作步驟。

1、 ? 初始化物理引擎。

2、 ? 取得物體的幾何碰撞。

3、 ? 根據幾何碰撞創建剛體。

4、 ? 釋放幾何碰撞(很多人會忘記,但很重要)

5、 ? 設置變換矩陣。

6、 ? 更新物理引擎。

7、 ? 取得變換矩陣。

8、 ? 根據取得的變換矩陣設置繪制物體當前狀態。

9、 ? 釋放物理引擎。

posted on 2007-01-25 15:49 楊粼波 閱讀(4887) 評論(2)  編輯 收藏 引用 所屬分類: C++

評論

# re: 小神之Newton物理引擎教程(一) Newton物理引擎教程 2007-06-15 09:32 leebaobaoo

請問有沒有更多的教程?我剛開始接觸這方面的,正找這塊資料呢!我的郵箱:leebaobaoo@163.com  回復  更多評論   

# re: 小神之Newton物理引擎教程(一) Newton物理引擎教程 2010-04-29 11:43 hehe

可不可以直接導入實體,生成比較細致的網格線,進行碰撞檢測  回復  更多評論   

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美成人精品| 亚洲午夜高清视频| 欧美高清在线一区二区| 在线观看欧美亚洲| 国产精品啊啊啊| 亚洲欧美日韩国产综合| 在线天堂一区av电影| 欧美精品在欧美一区二区少妇| 一本色道久久综合狠狠躁篇的优点 | 欧美亚洲一级| 亚洲精品国产精品国自产在线| 亚洲女ⅴideoshd黑人| 欧美激情在线观看| 久久国产精品一区二区| 亚洲永久免费av| 极品尤物一区二区三区| 国产精品第三页| 国产原创一区二区| 亚洲一级片在线观看| 亚洲国产专区校园欧美| 欧美成人黑人xx视频免费观看| 另类激情亚洲| 亚洲欧洲免费视频| 亚洲国产视频一区二区| 日韩一级黄色大片| 在线不卡a资源高清| 国户精品久久久久久久久久久不卡 | 欧美日韩国产一中文字不卡| 欧美视频专区一二在线观看| 国产乱码精品一区二区三区不卡 | 中文久久乱码一区二区| 国产亚洲精品自拍| 亚洲电影毛片| 亚洲一区二区成人在线观看| 久久精品99| 欧美二区在线播放| 亚洲一区二区三区午夜| 欧美成va人片在线观看| 欧美日韩另类国产亚洲欧美一级| 久久精品视频网| 亚洲午夜一区二区三区| 久久国产精品99久久久久久老狼| 久久日韩粉嫩一区二区三区| 狠久久av成人天堂| 亚洲国产合集| 亚洲一区二区免费| 亚洲久久成人| 欧美激情aⅴ一区二区三区| 9久草视频在线视频精品| 亚洲欧美日韩精品久久奇米色影视 | 亚洲精品在线一区二区| 欧美在线视频网站| 久久午夜电影| 国产精品嫩草99av在线| 亚洲一区二区三区在线| 欧美亚洲视频在线看网址| 国产精品综合视频| 女同性一区二区三区人了人一| 美女日韩在线中文字幕| 一区二区三区不卡视频在线观看 | 香蕉成人久久| 91久久久久久久久| 亚洲永久免费精品| 亚洲六月丁香色婷婷综合久久| 一区二区高清在线观看| 亚洲乱码视频| 亚洲亚洲精品三区日韩精品在线视频 | 久久精品国产2020观看福利| 欧美一区二区三区男人的天堂| 欧美高清视频在线播放| 精品91久久久久| 久久久久国产免费免费| 99国产精品99久久久久久粉嫩| 欧美电影免费观看高清| 亚洲国产三级| 亚洲第一在线综合在线| 久久精品视频导航| 影音先锋久久久| 欧美国产日韩一区| 久久国产黑丝| 99国产精品一区| 亚洲国产aⅴ天堂久久| 樱花yy私人影院亚洲| 一区二区三区.www| aaa亚洲精品一二三区| 亚洲网站在线| 亚洲影院免费| 在线不卡a资源高清| 最新国产拍偷乱拍精品| 欧美日韩在线播放一区| 欧美一区二区高清在线观看| 欧美一区2区三区4区公司二百 | 午夜视频一区二区| 伊人男人综合视频网| 亚洲精品极品| 国产精品久久一区主播| 久久精品1区| 欧美激情亚洲国产| 亚洲欧美国产精品专区久久| 久久精品午夜| 亚洲作爱视频| 久久精品日韩一区二区三区| 99在线精品观看| 小处雏高清一区二区三区| 亚洲国产片色| 亚洲欧美资源在线| 91久久中文| 翔田千里一区二区| 亚洲综合日本| 欧美精品在线观看| 欧美多人爱爱视频网站| 国产欧美日韩激情| 国产综合视频| 欧美一区二区在线视频| 久久精品理论片| 亚洲第一中文字幕在线观看| 老司机精品福利视频| 亚洲精品日韩在线| 香蕉久久夜色精品国产使用方法| 欧美黄色影院| 欧美精品激情在线| 亚洲三级免费| 久久琪琪电影院| 亚洲激情图片小说视频| 亚洲一级在线观看| 亚洲欧洲一区二区三区在线观看| 9人人澡人人爽人人精品| 韩国一区二区三区在线观看 | 久热精品在线视频| 欧美一区二区三区四区在线| 欧美日韩精品一区二区三区| 欧美阿v一级看视频| 国内久久精品| 亚洲性图久久| 一区二区电影免费在线观看| 老司机午夜免费精品视频| 久久精品视频导航| 欧美视频中文在线看| 日韩一级黄色av| 亚洲午夜三级在线| 欧美日韩国产小视频在线观看| 亚洲激情在线视频| 中文有码久久| 国产精品一区二区在线观看网站| 亚洲永久免费av| 久久久一区二区| 亚洲高清中文字幕| 欧美高清视频一二三区| 亚洲国产女人aaa毛片在线| 亚洲三级国产| 欧美日韩在线精品一区二区三区| 亚洲免费观看高清完整版在线观看熊 | 欧美精品一卡二卡| 亚洲精品免费在线| 在线综合亚洲| 国产精品影音先锋| 午夜精品久久久久久久99樱桃| 欧美在线免费观看视频| 国内成+人亚洲+欧美+综合在线| 午夜伦欧美伦电影理论片| 久久精品一区四区| 亚洲国产va精品久久久不卡综合| 久久噜噜亚洲综合| 欧美韩日一区| 亚洲综合日韩在线| 久久婷婷国产综合精品青草| 欧美福利专区| 亚洲欧美一区在线| 国产女人18毛片水18精品| 亚洲一区免费视频| 久久视频一区二区| 亚洲人成在线观看一区二区| 欧美激情一二区| 亚洲图片欧美午夜| 久久欧美中文字幕| 亚洲免费观看在线视频| 欧美午夜三级| 久久久国产91| 亚洲美女精品一区| 欧美一级视频免费在线观看| 揄拍成人国产精品视频| 欧美激情一区二区在线| 亚洲一区二区免费| 欧美不卡高清| 亚洲欧美韩国| 亚洲黄页一区| 欧美午夜电影一区| 久久婷婷蜜乳一本欲蜜臀| 亚洲欧洲在线一区| 欧美一区二区国产| 亚洲精品一区二区三区不| 欧美视频一区二| 噜噜噜91成人网| 亚洲天天影视| 亚洲裸体俱乐部裸体舞表演av| 久久精品国产欧美亚洲人人爽| 99精品视频一区| 亚洲第一综合天堂另类专| 国产视频精品xxxx| 欧美视频一区在线观看|