UDN
Search public documentation:
PhysicalMaterialPropertyJP
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
中国翻译
한국어
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
物理マテリアル プロパティ
概要
「Unreal Engine 3」では、 物理マテリアル を マテリアルの概要 または マテリアル インスタンス コンスタント にアタッチすることができます。単に追加プロパティをもつマテリアルを作るのとは異なり、アタッチすることによって、複数のマテリアル上で物理マテリアル プロパティのオブジェクトを再利用することができるようになります。 簡単な例を次にあげます。 ワールド内のすべての砂利道に適用した砂利道マテリアルがあるとします。この砂利道マテリアルには、 GravelPhysicalMaterial (砂利物理マテリアル) という 物理マテリアル があります。GravelPhysicalMaterial 内で、物理マテリアルプロパティ オブジェクトを作成して、マテリアルがポーンに踏まれた時に再生する足音を格納しました。 これで、同一マテリアル上にある 2 つの物理マテリアルが、単一のマテリアル上でサポートされるようになりました。コリジョンが発生すると、ラインチェックコードがトライアングルのヒットを発見し、ヒット位置のテクスチャ UV を取得し、マスクテクスチャの中を調べることによって、ヒットされたピクセルが黒か白かを決定します。対応する物理マテリアルが返されることになります。詳細については、 物理マテリアル マスク のページを参照してください。
UnrealScript の具体例
PhysicalMaterial.uc をご覧ください。 具体的には:
var(PhysicalProperties) export editinline PhysicalMaterialPropertyBase PhysicalMaterialProperty;
class MyGamePhysicalMaterialProperty extends PhysicalMaterialPropertyBase collapsecategories editinlinenew hidecategories(Object); var(Sounds) const SoundCue FootStepSoundCue;
物理マテリアルの階層
プログラミングスタッフによって上記の固有なゲームクラスが作成されると、コンテンツチームが、物理マテリアルの階層を作成し、ゲームデザインに必要となるエフェクトで満たすことができるようになります。
コンテンツクリエーターのための詳細説明
PhysicalMaterial には、PhysicalMaterial 親変数があり、これによって、物理マテリアルの階層を作成することができます。(この例では) FootStep (足音) のサウンドの階層を作成することができます。たとえば、Default -> Clay (泥) -> Wet Clay (湿った泥) という階層を作ることができます。これで、コンテンツチームは、ゲームワールドにある物理マテリアルを極めて固有なものにすることができるようになります。Wet Clay の足音サウンドを出す必要があれば、そのようにすることができます。Wet Clay の足音サウンドがない場合は、それが見つかるまで階層を調べていくか、デフォルトの足音サウンドをもつ Default まで行き着きます。階層を使用する
コードのサポートとパラメータ化された物理マテリアルの階層がそろったため、物理マテリアルをマテリアルにアサインすることができます。アサインが完了すると、ゲームで再生されるようになります。コンテンツのヒント
(この例を進めるために) 足音を作成する場合は、サウンドチームによって、 SoundCues が、ソースサウンド、および、ピッチと減衰の両方の点においてランダムな足音となるようにしてもらいます。これによって、足音によりリアリティが増します。さらに、物理マテリアルシステムが正しく抽象化されるようになります。
「Unreal Tournament 3」の例
「Unreal Tournament 3」において、足音のサウンドは、マテリアルに関連付けられたサウンドキューに代わって、サーフェスのタイプをマテリアルのプロパティが格納することによって実装されました。そこから、UTPawn が、SoundGroupClass 内に格納されている再生すべき適切な SoundCue を調べます。
simulated function name GetMaterialBelowFeet() { local vector HitLocation, HitNormal; local TraceHitInfo HitInfo; local UTPhysicalMaterialProperty PhysicalProperty; local actor HitActor; local float TraceDist; TraceDist = 1.5 * GetCollisionHeight(); HitActor = Trace(HitLocation, HitNormal, Location - TraceDist*vect(0,0,1), Location, false,, HitInfo, TRACEFLAG_PhysicsVolumes); if ( WaterVolume(HitActor) != None ) { return (Location.Z - HitLocation.Z < 0.33*TraceDist) ? 'Water' : 'ShallowWater'; } if (HitInfo.PhysMaterial != None) { PhysicalProperty = UTPhysicalMaterialProperty(HitInfo.PhysMaterial.GetPhysicalMaterialProperty(class'UTPhysicalMaterialProperty')); if (PhysicalProperty != None) { return PhysicalProperty.MaterialType; } } return ''; } simulated function ActuallyPlayFootstepSound(int FootDown) { local SoundCue FootSound; FootSound = SoundGroupClass.static.GetFootstepSound(FootDown, GetMaterialBelowFeet()); if (FootSound != None) { PlaySound(FootSound, false, true,,, true); } } simulated event PlayFootStepSound(int FootDown) { local PlayerController PC; if ( !IsFirstPerson() ) { ForEach LocalPlayerControllers(class'PlayerController', PC) { if ( (PC.ViewTarget != None) && (VSizeSq(PC.ViewTarget.Location - Location) < MaxFootstepDistSq) ) { ActuallyPlayFootstepSound(FootDown); return; } } } }