PhysXはNVIDIA社(開発元はAGEIA社だがNVIDIA社に買収された)の物理演算ライブラリです。 多くのPCゲームや普通のTVゲーム(PlayStation3、Xbox360、Wii)で使われているツールです。 TVゲーム開発では有料みたいですが、とりあえずPCで使う分には無料・商用可みたいです。
- 公式サイト
どんなことができるかというと要するに物理演算なのですが、見た方が早いです。 Youtubeで「PhysX」と打てば沢山動画が出てくるので調べてみてください。
ゲーム向けに設計されているので高速処理でそれっぽく見せることが可能です。 注意としては、CG映画のような高度な物理シミュレーションほど精度がいいものではないので、ガチで物理シミュレーションをしたい人向けではないです。
PhysXの機能は以下の通りです。
- 剛体物理
- 衝突判定
- 各種関節
- ラグドール
- 摩擦力の考慮
- 衝突の検知
- オブジェクトをグループ化し、衝突判定のON・OFF切り替え
- 1軸方向のみに物理作用を限定
- 接触通知
- 先進的なキャラクタコントロール
- 乗り物のための動力学
- マルチスレッド・マルチプラットフォーム・AGEIA PhysX Processor(PPU)の利用
- 流体シミュレーション
- 布シミュレーション
- 軟体の表現
- フォースフィールドの表現
・・・Wikipediaより引用
一つ問題点としてはグラフィックボードの問題があります。 PhysXの物理演算は”基本的に”GPU使ってハードウェア的に処理します。 CPUを使ってソフトウェア的にも処理できるのですが、ものすごく重くなります。
なので、使うのならグラフィックボードが積んであった方がいいです。 というか、ゲームなどに取り込むことなどを考えているなら必要です。 しかも、NVIDIA社のグラフィックボードがいいです。
NVIDIA社はグラフィックボードの会社なのですが、もう一つグラフィックボードの主流メーカーとしてAMDという会社があります。 PC関連でよくあるパターンで、この二つの会社はライバル会社なのですが、
- NVIDIAのPhysX
- AMDのBullet
と、実は物理エンジンもそれぞれの会社で対応状況が変わっています。 Bulletはオープンソースの物理演算ライブラリで、特に環境に縛られることなく、標準化を目指しているみたいなのですが、PhysXはNVIDIAのグラフィックボードでないと上手く動いてくれません。(少しずつ改善はされているみたいですが、詳しいところはわからないです。) ちょっと古いですが、詳しくは【レビュー】新しくなったNVIDIA PhysX、PCゲーム用物理演算の威力を試す|マイコミジャーナルを参考にしてみてください。
なので、PhysXを始めようと思うなら自分のPCにNVIDIA社のグラフィックボードが搭載されているか確かめてみてください。
「それじゃBulletの方がよくね?」と思う方もいるかもしれませんが、資料の多さの違い等、細かくつつけば色々とあります。 使いやすいですし、高性能であることは間違いないです。
ちなみに物理エンジンについてですが、PhysXやBullet以外にも沢山あります。 要は物理計算をしてくれるものなので、自作することも十分できます。
PhysXやBulletが全ての物理計算をカバーしてくれることは当然ないので、ゲーム会社・CGソフトなどでは自作のエンジンを使っているところがほとんどだと思います。 Bulletなんかはオープンソースなので、ソースを見ながら勉強するのもいいかもしれません。
最後に、このページで足りない部分を補ってくれそうなページを載せておきます。