場景(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):
通俗點說,
就是能兩個物體能相互插入多麼深…..
因為模擬是以時間步進為單位的,
所以兩次步進之間就會產生乙個跳變,
這種互相越界的現象不可避免.
於是乎引入這麼乙個量,
用於保證穩定性.
系統動力學學習筆記一
系統動力學以控制論 資訊理論 決策論等有關理論為理論基礎,以計算機 技術為手段,定量研究非線性 高階次 多重反饋複雜系統的學科,是一門認識系統,解決系統問題的綜合交叉學科。從系統方 來說,系統動力學是結構的方法 歷史的方法和功能的方法的統一。系統動力學對問題的理解,基於系統行為與內在機制間的相互的緊...
學習記錄 有關 網路動力學
複雜網路是對我們要研究的複雜系統,用結點和邊將他們抽象成一張關係網路圖,而動力學就是在 外部刺激 的推動下,或者是 內部訊息 的觸發下,網路中 結點自身資訊狀態發生改變 訊息的傳播 或者 結點間連線關係 反映在網路拓撲結構圖 增長或退化 的變化,從而導致整個網路發生明顯或者不明顯的 質變 這種改變可...
機器學習助推分子動力學模擬
今天介紹一篇文章,使用神經網路將分子動力學第一原理計算推進到新的尺度和精度。分子動力學模擬一般被用來揭示化學反應的微觀物理過程,用於光合作用,新藥尋找,奈米材料性質 等等。劉慈欣告訴我們,經典力學下的三體運動已經非常複雜,而量子力學統治下的多體相互作用,計算複雜度更是高到天際。分子動力學模擬要根據每...