anyway, 寫3d實時程序從頭造輪子雖然high,但是巨麻煩,ogre和physx這兩年相當成熟了,快速開發再好不過.但是整合起來稍微有點麻煩,這裏記錄一下以備後查
ogre sdk vc8版本, (我曾經試過用vc7的sdk硬轉換成vc8的項目,結果編譯能過去,執行卻把機器整崩潰了,汗)
PhysX SDK v2.4.1再往上就乾硬件了...
試驗修改項目: sample project Demo_camera_track
項目屬性添加
c/c++(默認裝到這個目錄):
C:/Program Files/AGEIA Technologies/AGEIA PhysX SDK/v2.4.1/SDKs/Foundation/include
C:/Program Files/AGEIA Technologies/AGEIA PhysX SDK/v2.4.1/SDKs/Physics/include
C:/Program Files/AGEIA Technologies/AGEIA PhysX SDK/v2.4.1/SDKs/PhysXLoader/include
鏈接器:
附加庫目錄添加:C:/Program Files/AGEIA Technologies/AGEIA PhysX SDK/v2.4.1/SDKs/lib/Win32
附加依賴項添加:PhysXLoader.lib
CameraTrack.cpp中添加頭文件:
#include "NxPhysics.h" (必須放在開頭否則 幾百個error!!)
然後添加初始,退出physx函數,和在楨回調中調用physx that's it
這裏簡單的用了一個 box 我接納悶SceneNode* 爲什麼不能一個44矩陣做object to world轉換
兩個函數,這.....:
//float glMat[16];
//actor->getGlobalPose().getColumnMajor44(glMat);
NxVec3 cubePos = actor->getGlobalPosition();
cubeNode->setPosition(cubePos.x,cubePos.y,cubePos.z);
NxQuat cubeQuat = actor->getGlobalOrientationQuat();
cubeNode->setOrientation(cubeQuat.w,cubeQuat.x,cubeQuat.y,cubeQuat.z);