UDN
Search public documentation:

DevelopmentKitGemsPhysXParticlesStarterKitJP
English Translation
中国翻译
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 ホーム > Unreal Development Kit Gems > PhysX パーティクル スターターキット
UE3 ホーム > 入門編 : プログラミング > PhysX パーティクル スターターキット
UE3 ホーム > 物理ホーム > PhysX パーティクル スターターキット

PhysX パーティクル スターターキット


2011年11月に UDK について最終テスト実施済み

概要


このスターターキットには、UDK によって提供される UTGame のサンプルに PhysX パーティクルを追加する例が用意されています。このドキュメントに掲載されているテクニックは、UTGame に備わっている Mutator (ミューテータ) 機能を使用します。PhysX パーティクルは、まわりの環境とコリジョンする点でユニークです。これによって、特定のエフェクトをリアルにするとともに、プレイヤーに臨場感を与えることができます。

PxPrt_01.jpg

同梱されているものについて


  • 武器エフェクトの PhysX パーティクル バージョン - PhysX パーティクルが次の武器に追加されました。
    • Rocket Launcher (ロケットランチャー) - 赤熱の岩が外に向かって爆発して、地表で止まると冷やされます。
    • Link Gun (リンクガン) - 緑に光るクリスタルの破片が、第 1 発砲からの各インパクトによってバーストします。第 2 発砲からは緑のスパークが放出されます。
    • Shock Rifle (ショックライフル) - 第 1 発砲から紫のスパークが放出されます。
  • PhysX Weapon Mutator (UTMutator_PhysXWeapons.uc) - 既存の武器を PhysX バージョンと置き換えるクラスです。
  • Weapons Replacement Map (DefaultPhysXMod.ini) - 古い武器から新しい武器へのマッピングを含んでいる ini ファイルです。
  • Drain (UTDrain.uc) - レベルに配置されて、ワールドを抜け落ちるパーティクルをキャッチします。

コードの大部分は、defaultproperties を使用することによって、PhysX パーティクル エフェクトを単に接続しています。このページの最後にあるダウンロード先リンクで、コードとコンテンツをダウンロードしてください。本ドキュメントのこれ以降の部分では、コードがどのように構成されているかについて説明します。これによって、スターターキットを拡張し、独自の PhysX パーティクルエフェクトを作成することができるようになります。

コンテンツとコード構成


どのように PhysX パーティクル システムを作成するか?

PhysX メッシュ パーティクル システムは、Cascade で作成されます。そのためには、パーティクル システムを作成し、 TypeDataNew PhysX Mesh Data に変更します。パーティクル システムの物理的な動作を調整するためには、新たな PhysXParticleSystem を作成し、PhysX Mesh Data を使用するエミッタに接続する必要があります。なるべく複数のエミッタ間で PhysXParticleSystem を共通して使うようにします。そうすることによって、シミュレーションの効率が向上します。(例 : 岩と金属の残がいパーティクルは、おそらく、両方とも PhysXParticleSystem を使用することができるはずです)。

  • 次のように、データ型を変更して PhysX を使用するようにします。
    PxPrt_02.jpg

  • 次は、PhysXParticleSystem を PhysX エミッタにリンクさせる場所です。
    PxPrt_06.JPG

  • 次は、PhysXParticleSystemの物理的パラメータです。
    PxPrt_04.jpg

どのようにパーティクル システムを武器に接続するか?

本例では、すでに武器が定義されている UTGame を使用しています。オリジナルのクラスを変更することによって、これらのパーティクル システムを利用することができます。ただし、それによってオリジナルのゲームの動作も変更されることになります。Mutator 機能を使用することによって、PhysX パーティクルの追加を mod にすることができるため、プレイヤーが任意に有効にすることができるようになります。

最初にすべきことは、PhysX パーティクル システムを使用する武器のバージョンを作成することです。例として、 UTProj_RocketPhysX.uc を見てみましょう。これによって分かることは、このクラスが、オリジナルの UTProj_Rocket.uc クラスを拡張しており、コードの defaultproperties セクションにおいて ProjExplosionTemplate をオーバーライドしているということです。 他の武器と発射物のためのクラスも同様にして拡張し、すべての PhysX パーティクル システムを接続することができます。

UTProj_RocketPhysX.uc
class UTProj_RocketPhysX extends UTProj_Rocket;

defaultproperties
{
  ProjExplosionTemplate=ParticleSystem'WP_RocketLauncher_PhysX.Effects.P_WP_RocketLauncher_RocketExplosion'
}

どのように新たな武器を UTGame に選択させるか?

先に述べたように、これを実現するには Mutator を使用します。そのためには重要なファイルがいくつかあります。

  • DefaultPhysXMod.ini には、武器とその代替についてのリストが含まれています。このリストによって、オリジナルのどの武器を新たなバージョンの武器に置き換えるのか指定します。
    DefaultPhysXMod.ini
    [PhysXMod.UTMutator_PhysXWeapons]
    WeaponsToReplace=(OldClassName="UTWeap_LinkGun",NewClassPath="PhysXMod.UTWeap_LinkGunPhysX")
    WeaponsToReplace=(OldClassName="UTWeap_RocketLauncher_Content",NewClassPath="PhysXMod.UTWeap_RocketLauncher_ContentPhysX")
    WeaponsToReplace=(OldClassName="UTWeap_ShockRifle",NewClassPath="PhysXMod.UTWeap_ShockRiflePhysX")
       
  • UTMutator_PhysXWeapons クラスは、基本となる UTMutator クラスを拡張し、 PostBeginPlay 関数を実装します。この関数を見ると、ゲームインベントリを調べて、新たなバージョンの武器と交換すべき武器を探そうとしているのが分かります。 config キーワードを使って WeaponsToReplace 変数を指定することによって DefaultPhysXMod.ini ファイル内に入力した値を、この関数は使用します。ゲーム内で得られた武器の場合は、他の照合を実行する必要があり、これは、 CheckReplacement 関数で行われます。
  • 新たな Mutator をメニュー内で表示するには、 PhysXMod.ini 内で UTUIDataProvider_Mutator を作成する必要があります。 最後に、 PhysXMod.int ファイル内で Mutator に対して FriendlyNameDescription を与える必要があります。

ドレインとは何か、なぜ必要なのか?

ドレイン (排水溝) とは、PhysX パーティクルと接触すると削除するシェープ (形状) のことを言います。レベルとパーティクル システムの設定によっては、パーティクルがマップを去り、ワールドの下で永遠に落下し続ける場合があります。これによって、パフォーマンスとレンダリングの問題が生じます。これを防ぐためには、特別なシェープを作成してレベルの下にロードし、はぐれて落下しているパーティクルをキャッチします。 UTDrain クラスは、適切なデフォルト値をセットすることによって、シェープをドレインにします。 UTMutator_PhysXWeapons 内の PostBeginPlay 関数は、レベル名に基づいて適切なドレインをロードします。この様子は、武器の交換コードのすぐ下で確かめることができます。

このスターターキットの使用方法


  1. UDK を ダウンロード します。
  2. UDK をインストールします。
  3. zip ファイルを ダウンロード します。
  4. その中身を解凍して、UDK のベース ディレクトリに入れます。( C:\UDK\UDK-2011-11\) Windows から、「既存のファイルまたはフォルダがオーバーライドされることになるかもしれない」という内容の通知を受ける場合があります。これらすべてについて、[OK] をクリックします。
  5. Notepad を使って、 UDKGame\Config ディレクトリ内にある DefaultEngine.ini を開きます。( C:\UDK\UDK-2011-11\UDKGame\Config\DefaultEngine.ini)
  6. EditPackages を見つけます。
  7. +ModEditPackages=PhysXMod を追加します。
    PxPrt_03.jpg
  8. スタートメニューにある UDK Game をクリックすると、スクリプトを再コンパイルするかどうかを尋ねるメッセージが表示されます。[Yes] を選択します。UDK によってスクリプトのビルドが完了したら、ウィンドウを閉じます。
    PxPrt_07.JPG
  9. スタートメニューの UDK Game をクリックして UDK を開きます。
  10. メニューから [ Instant Action ] (インスタント アクション) を選択します。
  11. [ Mutators ] (ミューテータ) を選択します。
    PxPrt_08.jpg
  12. [ PhysX Weapons ] (PhysX 武器) をクリックします。
    PxPrt_09.jpg
  13. [ Back ] (戻る) を選択します。
  14. [ Start Game ] (ゲームの起動) を選択します。
  15. 武器を発砲すると、武器のインパクトによって PhysX パーティクルが放出され、環境とコリジョンするのが分かります。

PhysX パーティクル スターターキットをセットアップすることによって、パーティクルのコリジョンによる魅力がゲームに加わります。 本ドキュメントで紹介したテクニックを用いることによって、ご自分のゲームに PhysX パーティクルを加えることができます。さらに、UTGame のためにより優れたエフェクトを作り出すことができるかどうかを確かめることができます。UnrealScript のコードは、 Development\Src\PhysXMod\Classes\*.uc の中に置かれています。コンテンツはすべて、 UDKGame\Content\UT3\PhysXMod フォルダに含まれています。

NVIDIA のハードウェア加速を有効にする方法


  • 環境に追加するパーティクルの数とその寿命の長さによっては、ハードウェア加速を有効化することによってパフォーマンスをかなり向上させることができる場合があります。ハードウェア加速は、NVIDIA GPUs 8800 以上でのみ機能します。ハードウェア加速を有効にするには、 Engine\Config\BaseEngine.ini を開き、次の変数を false にセットします。 bDisablePhysXHardwareSupport=False

PxPrt_HWAccel.JPG

ダウンロード


  • このスターターキットで使用されているコンテンツとコードは、 ここから ダウンロードすることができます。