UDN
Search public documentation:

SettingUpWeaponsJP
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 Engine 3 の武器は、骨格メッシュを使用して、1 人称および 3 人称の状態でレンダリングします。1 人称のメッシュは、通常クローズアップされるため、より複雑なポリゴンとなります。1 人称で使用される場合の武器の位置に応じて、決して見えないポリゴンをすべて省略して、レンダリング時間を節約することができます。3 人称のメッシュは、通常、プレイヤーが 3 人称としてビューされる場合に使用され、ピックアップのメッシュとして用いられます。そのため、あらゆる角度から見ることができ、省略されるポリゴンはもちろんありません。ただし、通常は間近で見られることはありません。そのため、細かい部分を除外することによって、ポリゴン数を可能な限り低く抑えることができます。

firstpersonmesh.jpg thirdpersonmesh.jpg

特定の武器の 1 人称メッシュのために骨格をどのように設定するかという問題は、望ましいアニメーションをセットアップするために何が必要となるかという問題に依存します。通常、武器は、ルートボーンをプレイヤーが武器を握る位置に置き、子ボーンを銃口フラッシュが位置するところに置きます。このボーンは、銃口フラッシュや他のエフェクトのために直接使用されることはなく、それらに基づくソケットが使用されることになります。正しい位置にそれらを置くことによって、ソケットのセットアップがかなり容易になります。

3 人称メッシュについては、骨格はおそらくかなり単純になります。なぜなら、1 人称で武器をビューする場合に用いられるアニメーションのほとんどが、3 人称では必要なくなり、省略されるからです。ルートボーンは、利き手で武器を握る位置に置かれる必要があります。子ボーンは、特定の武器に望ましい場合やゲームで通常サポートされている場合に、空いた手が武器を握るであろう位置に置くことができます。子ボーンは、1 人称メッシュの場合と同様に、銃口フラッシュが位置する場所に置くことができます。

武器の骨格の例を以下に示します。

firstpersonskeleton.jpg

スクリプトを通じて直接アクセスされるボーンやソケットを使用するには、先に命名スキームを決定するのが望ましい。あるいは、プログラマーが、使用するボーンの名前を指定できるようにするとよいでしょう。

武器のエクスポート


武器の骨格メッシュをエンジンにエクスポートする方法は、通常の骨格メッシュの場合とまったく同じです。次の 2 つの方法から選択することができます。1 つは、 ActorX を使用して、メッシュとアニメーションをそれぞれ .PSK ファイルと .PSA ファイルにエクスポートするという方法です。もう 1 つは、Unreal の FBX のインポート を利用するという方法です。それには、3D アプリケーションに組み込まれているエクスポートツールを使って、メッシュとアニメーションを .FBX ファイルにエクスポートします。その特定の武器に必要となるメッシュとアニメーションのそれぞれをエクスポートする必要があります。

武器のインポートとセットアップ


武器のための .PSK ファイル(ファイル形式の好みによっては .FBX ファイル)を、骨格メッシュとしてコンテントブラウザにインポートしなければなりません。

meshimportpsk.jpg meshimport_fbx.jpg

武器のためのテクスチャとマテリアルも、インポートおよびセットアップし、骨格メッシュに割り当てる必要があります。AnimSet エディタで、[File] (ファイル)メニューから武器のための新たな AnimSet を作成することができます。それには、 New AnimSet... (新たな AnimSet ...)を選択し、さらに、 Package (パッケージ)およびGroup (グループ - オプション)、Name (名前)を供給します。

newanimset.jpg

次に、その武器のためのあらゆるアニメーションを含む .PSA ファイルを、武器の AnimSet にインポートします。それには、 Import PSA... (PSA をインポート...)を、再度 AnimSet エディタの [File] (ファイル)メニューから選びます。

newanimation.jpg

.FBX ファイルファーマットを使用している場合は、上記に換えて、 Import FBX Animation... (FBX アニメーションをインポート...)を選択することによって、アニメーションをインポートします。

ソケットのセットアップ

ソケットの用途についてはすでに触れましたが、銃口フラッシュならびに武器に必要となる追加エフェクトのためのアタッチメントポイントとして使われます。ソケットは、本質的に特定のボーンを親にもつロケーターです。これは、名前をつけることができ、さらにオフセットすることが可能で、独自の回転を持つようにすることができます。これによって、特定の位置にアイテムをアタッチしたりスポーンしたりすることが容易にできるようになります。

ソケットは、AnimSet エディタを通じて、UnrealEd の内部で骨格メッシュに追加します。ツールバー内にある toolbar_socket.jpg ボタンを押して、Socket Manager(ソケットマネージャ)を開きます。

socketmanager.jpg

newsocket_button.jpg ボタンを押すと、新たなダイアログが開き、メッシュ内で利用可能なすべてのボーンがリスト表示されます。

newsocket_bone.jpg

メッシュの銃身の先端に追加するボーンを選択し、 OK を押します。これによって別のダイアログが開くので、この新たなソケットに名前を付けることができます。名前は、コード内でソケットを特定するのに使用します。

newsocket_name.jpg

名前を入力して [OK] を押すと、新たなソケットが追加されます。この新たなソケットは、AnimSet エディタのプレビューペインの中に表示されるとともに、Socket Manager のリストにも表示されます。

newsocket_complete.jpg

発射物の作成

発射物 (projectile)とは、武器の発砲を物理的に表現したものです。Unreal における発射物のビジュアルコンポーネントは、パーティクルシステムにすぎません。発射物のためのパーティクルシステムを作成するプロセスは単純で、他のパーティクルシステムを作成する場合と同様です。基本的には、発射物が空中でどのように見えるのか表現するために、パーティクルシステムをセットアップする必要があります。パーティクルシステムは、望ましいエフェクトを得るのに必要となる数のエミッタで構成することができます。

次に示されているのは、発射物のパーティクルシステムの例です。

projectile_link.jpg projectile_rocket.jpg projectile_shock.jpg

銃口フラッシュをセットアップする

銃口フラッシュは、武器の銃身から射出される発射物を模倣するために使用されます。このフラッシュは、現実に銃が発砲した時に見えるものと似ています。Unreal の武器システムでは、パーティクルシステムが銃口フラッシュのビジュアルコンポーネントとして使用されます。発射物の場合と同様に、銃口フラッシュのためのパーティクルシステムも、望ましい視覚効果を得るのに必要な数のエミッタから構成することができます。

以下に、銃口フラッシュのパーティクル システムの例をあげます。

mf_link.jpg mf_rocket.jpg mf_shock.jpg

プログラマーのために


すべてのアセットを正しくセットアップしたら、次は、実装に必要となる情報をプログラマーに提供しなければなりません。プログラマーが必要とする情報は、次のようになります。

  • 1 人称メッシュの名前。
  • アニメーションセットの名前。
  • ピックアップメッシュの名前。
  • (武器の)所持動作、および、装着、収納、発砲のサウンドの名前。
  • 発射物パーティクル システムの名前(発射物を射出する場合)。
  • 銃口フラッシュのパーティクル システムの名前。
  • 照準のテクスチャおよび座標の名前。

効率的なイタレーションのためには、これらの情報のための基準を策定するのが最善です。

スクリプト ファイルを作成する

以下では、武器のためのごく基本的な UnrealScript .uc ファイルの中に、必要な情報をすべて入れる方法について記述しています。

MyWeapon.uc

class MyWeapon extends UTWeapon;

defaultproperties
{
   Begin Object class=AnimNodeSequence Name=MeshSequenceA
      bCauseActorAnimEnd=true
   End Object

   // Weapon SkeletalMesh
   Begin Object Name=FirstPersonMesh
      SkeletalMesh=SkeletalMesh'WP_LinkGun.Mesh.SK_WP_Linkgun_1P'
      AnimSets(0)=AnimSet'WP_LinkGun.Anims.K_WP_LinkGun_1P_Base'
      Animations=MeshSequenceA
      Scale=0.9
      FOV=60.0
   End Object

   // Pickup SkeletalMesh
   Begin Object Name=PickupMesh
      SkeletalMesh=SkeletalMesh'WP_LinkGun.Mesh.SK_WP_LinkGun_3P'
   End Object

   WeaponFireTypes(0)=EWFT_Projectile
   WeaponProjectiles(0)=class'UTProj_LinkPlasma'

   WeaponEquipSnd=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_RaiseCue'
   WeaponPutDownSnd=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_LowerCue'
   WeaponFireSnd(0)=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_FireCue'
   WeaponFireSnd(1)=SoundCue'A_Weapon_Link.Cue.A_Weapon_Link_AltFireCue'
   PickupSound=SoundCue'A_Pickups.Weapons.Cue.A_Pickup_Weapons_Link_Cue'

   MuzzleFlashSocket=MuzzleFlashSocket
   MuzzleFlashPSCTemplate=ParticleSystem'WP_LinkGun.Effects.P_FX_LinkGun_MF_Primary'

   CrosshairImage=Texture2D'UI_HUD.HUD.UTCrossHairs'
   CrossHairCoordinates=(U=384,V=0,UL=64,VL=64)
}

武器を調整する

武器の機能を制御するパラメータは多数あります。これらのパラメータが置かれている場所は、Weapon クラス自体を含むいくつかのクラスの中、また使用しいるあらゆる発射物のためのクラスの中です。よく使用されるパラメータに関する解説、および、コード側における武器の機能様態に関する解説は、 Weapon (武器) テクニカルガイド のページで入手可能です。

役に立つコンソールコマンド

Unreal Engine においては、武器を調整するのに役立つ機能として、 editactor (アクタの編集)コンソールコマンドがあります。Weapon 使用中に、コンソールで editactor class=weapon とタイプすることによって、プロパティウィンドウが現れます。これによって、Weapon を使用する時に、ほぼあらゆるパラメータ値を調整することが可能になり、イタレーションも非常にスムーズになります。