PhysX學習筆記 2 動力學 1

2021-08-24 18:26:52 字數 1521 閱讀 1499

場景(scene):

物理模擬發生的場所,

包含了actor, joint, effector.

跟圖形引擎裡的scene

差不多,

可以有多個例項存在,

互不干涉.

場景沒有特別的大小限制.

功能有重力,

射線揀取,

開關硬拼檢測等.

模擬時序(timing):

物理模擬導致物體的一些屬性隨著時間進行變化,

如位置,

速度等.

模擬每經過一次時間步進進行一次,

通常要與渲染幀數進行同步.

前進(也可以說是更新):

void simulate(nxreal elapsedtime);

elapsedtime

會被分成多個時間步進來決定物理模擬進行了多少

時序可以用settiming

設定, decriptor

也可.

預設值就能夠滿足大多數程式的要求了.

固定的時間步進可以確保穩定且可以重現的物理模擬,

需指定nx_timestep_fixed.

非同步的步進:

physx

是多執行緒的,

物理模擬發生在自己的執行緒裡.

狀態變化如下: 1)

開始模擬 2)

確保資料已被傳送到模擬線程 3)

檢測模擬是否完成,

如果是,

更新狀態資料緩衝,

並且-> 4)

交換狀態資料緩衝,

這樣結果可以被程式訪問,

後台緩衝可以繼續引數模擬(

就像d3d

的backbuffer)

nxscene* gscene; nxreal mytimestep = 1.0f/60.0f; ... void mysimulationstepfunction()

注意fetchresults(nx_rigid_body_finished, true)是乙個阻塞呼叫, 可以用這兩種方式代替:

while(!gscene->checkresults(nx_rigid_body_finished, false) while(!gscene->fetchresults(nx_rigid_body_finished, false)

注意:

一些函式對於非同步的狀態改變不可知,

如overlap

和raycasting,

直到simulte()/fetchresult()

執行後才可.

外殼寬度(skin width):

通俗點說,

就是能兩個物體能相互插入多麼深…..

因為模擬是以時間步進為單位的,

所以兩次步進之間就會產生乙個跳變,

這種互相越界的現象不可避免.

於是乎引入這麼乙個量,

用於保證穩定性.

系統動力學學習筆記一

系統動力學以控制論 資訊理論 決策論等有關理論為理論基礎,以計算機 技術為手段,定量研究非線性 高階次 多重反饋複雜系統的學科,是一門認識系統,解決系統問題的綜合交叉學科。從系統方 來說,系統動力學是結構的方法 歷史的方法和功能的方法的統一。系統動力學對問題的理解,基於系統行為與內在機制間的相互的緊...

學習記錄 有關 網路動力學

複雜網路是對我們要研究的複雜系統,用結點和邊將他們抽象成一張關係網路圖,而動力學就是在 外部刺激 的推動下,或者是 內部訊息 的觸發下,網路中 結點自身資訊狀態發生改變 訊息的傳播 或者 結點間連線關係 反映在網路拓撲結構圖 增長或退化 的變化,從而導致整個網路發生明顯或者不明顯的 質變 這種改變可...

機器學習助推分子動力學模擬

今天介紹一篇文章,使用神經網路將分子動力學第一原理計算推進到新的尺度和精度。分子動力學模擬一般被用來揭示化學反應的微觀物理過程,用於光合作用,新藥尋找,奈米材料性質 等等。劉慈欣告訴我們,經典力學下的三體運動已經非常複雜,而量子力學統治下的多體相互作用,計算複雜度更是高到天際。分子動力學模擬要根據每...