アニメーション通知

外部アクションを実行するためにアニメーション シーケンスにイベントの設定及び受信をする通知システム。

Windows
MacOS
Linux

アニメーション通知 (AnimNotifies または単に Notifies) は、アニメーション シーケンス の特定ポイントでイベント発生をアニメーション プログラマーが設定できるようにします。通知は、一般的に歩行時や走行時の足音エフェクトの追加、アニメーションの実行、アニメーション中のパーティクル システムのスポーンなどに使用されます。しかし、その他にも使用法がたくさんあります。ゲームの種類に応じたカスタム通知でシステムを拡張することができるからです。

通知タイプ

通知のタイプが異なると、異なるイベントをトリガーします。カメラ エフェクト、パーティクル エフェクト、サウンドなど、全てのイベントはアニメーションのどの時点でも通知を使用してトリガーすることができます。通知を追加するには、通知が行われてほしいアニメーションのポイントで Notify Track右クリック し、追加する通知の種類を選択します。

通知の追加、編集については アニメーション シーケンス エディタ ページをご覧ください。

Play Particle Effect

Play Particle Effect (パーティクル エフェクト再生) 通知は、任意のソケット位置で、またアニメーションのタイムラインの特定ポイントでパーティクル システムをスポーンし、再生することを通知します。これは、プレイヤーが動く際にその足元で砂ぼこりをたてる、プレイヤーがニトロブーストのパワーアップ時に排気管から発火するようなエフェクトなどに役立ちます。

PlayParticleEffectNotify.png

Play Particle Effect 通知は、挙動の制御に Animation ブループリントを使用しません。代わりに、[Details (詳細)] パネルで定義されているいくつかの簡単なプロパティを使用し、どのパーティクル システムを使うか、どのソケットからパーティクルが発生するかを決定します。

PlayParticleEffectDetails.png

プロパティ

説明

Socket Name

パーティクル システムのスポーン ポイントとして使用されるスケルタルメッシュのソケットを含みます。

PSTemplate

通知の設定時点でスポーンするパーティクル システムを保持します。

Attached

エフェクトをボーン / ソケットにアタッチするかを決めます。

Location Offset

ソケットからの位置オフセット。

Rotation Offset

ソケットからの回転オフセット。

Notify Color

通知バーの通知のカラーを変更します。

一度セットアップすると、ソケットの位置をスポーン ポイントとして使用して、関連するパーティクル システムが再生します。

DustyFeet.png

Play Sound

Play Sound(サウンド再生) 通知は、サウンド エフェクトをアニメーションと同期させる簡単な手段を提供します。Play Particle Effect と同様に、この通知にはいくつかの単純なプロパティがあります。これは、 [Details (詳細)] パネルで設定可能であり、高速かつ簡単にサウンドエフェクトをセットアップできます。たとえばロボットが動く際の機械的なうなり音、キャラクターの動作中の衣擦れの音などのエフェクトで役立ちます。

PlaySound.png

Play Sound 通知は、[Details] パネルで定義されているいくつかの簡単なプロパティを使用し、どのサウンド エフェクトを使用するか、どの ソケット または ボーン からサウンドを発生させるかを定義します。

PlaySoundDetails.png

プロパティ

説明

Attach Name

サウンド エフェクトのスポーン ポイントとして使用するスケルタルメッシュのソケットまたはボーンを含みます。

Volume Multiplier

このスケーリング乗数は、サウンド エフェクトのボリュームに適用されます。

Pitch Multiplier

このスケーリング乗数は、サウンド エフェクトのピッチに適用されます。

Follow

チェックを入れると、スタティックメッシュが動くにつれて、サウンド エフェクトのソースが追随します。チェックを入れないと、サウンドはスポーンされた場所に留まります。

Notify Color

通知バーの通知のカラーを変更します。

カスタム通知

Custom (カスタム) 通知は、アニメーションの任意のポイントで Animation ブループリント内でアーティストが行いたい作業に対して多様な対応をします。カスタム通知を作成するには、通知トラックを 右クリック し、コンテキスト メニューから New Notify 選択します。

MySpecialNotify.png

カスタム通知を使用すると、イベントグラフで同じ名前の Notify Event を作成する、またはスケルタルメッシュの Animation ブループリントステートマシン で Transition Graph (遷移グラフ) を作成できます。カスタム通知を追加するには、イベントグラフまたは遷移グラフの任意の場所で右クリックすると、Animation Notifies Event を追加するためのセクションが表示されます。

rightClickAddNotify.png

カスタム通知を追加後、イベント ノードがグラフに追加され、この通知が呼び出されると実行されます。

MySpecialNotifyBlueprint.png

通知ステート

AnimNotifyStates (Notify States) は、上記の標準的な通知のように機能し、start、tick、end の3 種類のイベントがあります。これらは簡単に開始し、通知が開始、終了する瞬間に発行し、その中にある イベントグラフ はアニメーションで時間がくると発生します。end event に到達するまで、アニメーションがアップデートされるたびにティックが発生します。標準の通知との違いは、NotifyStates は、自己完結型の ブループリント であるという点です。

Notify State (通知ステート) の作成は、アニメーションの 通知トラック右クリック して Add Notify State... を選択するのと同じ方法で行うことができます (通知ステートは、ネイティブ通知ステート と同じですが、アニメーション中に発生させる必要があるどのようなロジックでも提供できるカスタム ブループリントです) 。

カスタム通知を使用するには、まず AnimNotifyState クラスの Blueprint クラスを作成 しなければなりません。

addNotifyState.png

MyAnimNotifyState (上) と呼ばれる AnimNotifyState Blueprint クラスは、アニメーションで使用する通知ステートとして選択できるように作成されました。Anim Notify State Blueprint を作成したら、それを開いて通知をどのように使用するかを決める関数の実装を開始します (下)。

animNotifyStateImplementFunction.png

すべての関数を実装する必要はありませんが、最低限、Recieved Notify Tick または Recieved Notify StartRecieved Notify End の両方を実装してください。Recieved Notify Start または Recieved Notify End を実装すると、標準のアニメーション通知を使用できます。

Recieved_NotifyStart.png

Notify Start のオーバーライド

Recieved_NotifyEnd.png

Notify End のオーバーライド

Recieved_NotifyTick.png

Notify Tick のオーバーライド

以下で各ピンのタイプがオーバーライド関数でどのように使用されるかを説明します。

ピン

説明

Mesh Comp

AnimNotifyStateをトリガーするアニメーション シーケンスまたはモンタージュの Skeletal Mesh コンポーネントです。

Anim Seq

AnimNotifyStateをトリガーする特定のアニメーション シーケンスです。

Frame Delta Time

Received Notify Tick 関数でのみ。アニメーションの最終更新からの時間がわかります。

ブループリント内で AnimNotifyState の長さを取り出す手段は現在ありません。

ルール

  • 必ず NotifyBegin Eventで開始するようになっています。

  • 必ず NotifyEnd Eventで終了するようになっています。

  • 必ず NotifyBegin と NotifyEnd のイベントの間に NotifyTick をラップするようになっています。

  • 異なる AnimNotifies (normal または state) 間の順序は保証されません。2 つの AnimNotifyStates を隣同士に入れると、最初の AnimNotifyStates が、次の AnimNotifyStates が開始するまでに終了することは保証されません。これは、他の通知に依存していない個別のアクションにのみ使用してください。

  • 負の再生速度がサポートされます。それでも NotifyBegin が最初に呼ばれ、NotifyEnd が最後に呼ばれます。

順序とロジック

AnimNotifyState がトリガーされると、Start ブループリントがまず呼び出され、同じフレームの更新で次に Tick ブループリントが呼び出されます。その後の tick では、Tick ブループリントのみが呼び出されます。最終的な tick の更新では、Tick ブループリントが呼び出され、その後に End ブループリントが呼び出されます。

フレーム毎に何かを修正する場合、Tick ブループリントに入れるようにします。tick に到達する前に、変数、フラグ、またはプロパティを何らかの値に設定する必要がある場合、それは Start ブループリントに入れるようにします。最後に、最終 tick に到達後、End ブループリントを使用して、変数、フラグ、またはプロパティを変更できます。

ネイティブ通知ステート

Notify State を追加することを選択する際に、2 つある Native Notify States のいずれかを割り当てることができます。その 1 つは、Timed Particle Effect (時限式パーティクルエフェクト) で、もう 1 つが Animation Trail (アニメーションの Trail) という形式です。

AddingNotifyStates.png

Timed Particle Effects

Timed Particle Effect (時限式パーティクルエフェクト) は、Play Particle Effect (パーティクルエフェクト再生) 通知と非常に似ています。両方とも、アニメーションの任意のポイントでパーティクル エフェクトを再生できるからです。この 2 つの違いは、Timed Particle Effect では、通知そのものの内部でエフェクトの長さを定義できるという点です。

TimedParticleEffect.png

上の画像では、Timed Particle Effect がアニメーションに割り当てられています。終了点 (または開始点) のハンドルバーを 左クリック すると、ドラッグしてエフェクトの長さを延長または短縮することができます。

Animation Trails

Animation Trails (または略して AnimTrail) は、シーン内で移動するオブジェクトの後にトレイル (軌跡) を残すことができるエミッタです。 これは、各 tick で スケルタルメッシュ の 2 つのソケット位置をサンプリングして、ソケット間のトライアングルをつなぎ合わせて、トレイルの長さにします。

AnimTrail エミッタを使用するには、以下を行う必要があります。

  1. AnimTrail タイプのデータを含む パーティクル システム を作成します。

  2. Trail タイプの通知ステートを作成しアニメーションに追加します。

AnimTrail を追加したら [Details] パネルからプロパティを変更することができます。

TrailDetails.png

プロパティ

説明

PSTemplate

上記で説明したアニメーション トレイルを含むパーティクル システムです。

First Socket Name

トレイルを定義する第 1 のボーン / ソケットの名前です。

Second Socket Name

トレイルを定義する第 2 のボーン / ソケットの名前です。

上記のプロパティは必須ですが、以下はオプションです。アニメーション中にトレイル幅を変更できます。トレイルをソケットにアタッチし、必要に応じて動かすこともできますが、これは理想的ではないかもしれません。 この方法は、幅スケーリング値を与えることに基づいています。幅のスケーリング 1.0 は、トレイルを同じ幅に保ちます。0.0 は幅ゼロのトレイルになります。

プロパティ

説明

Width Scale Curve

幅の値は各ティックでサンプリングされたカーブから得られます。このプロパティはカーブの名前です。カーブ作成についての詳細は以下をご覧ください。

Width Scale Mode

幅の適用方法を変更します。以下の図は、これがどのように機能するかを示しています。この例では、真ん中で 0 から 1 になり、0 に戻る正弦のようなカーブを示しています。

WidthScaleMode.png

左の画像は From Centre を表します。これは、中央から外側にスケーリングします。中央の画像は、From First Socket を表します。これは、第 1 のソケットから離れてスケーリングします。右側の画像は、From Second Socket を表しています、これは、第 2 のソケットから離れてスケーリングします。

利用可能なデバッグ レンダリング オプションもいくつかあります。

プロパティ

説明

Render Geometry

メインのトレイル ジオメトリのレンダリングを切り替えます。

Render Spawn Points

トレイルで主にスポーンするポイントすなわち、各ティックでソケットからサンプリングされた位置でデバッグ レンダリングを切り替えます。

Render Tangents

カーブ タンジェントのデバッグ レンダリングを切り替えます。

Render Tessellation

カーブ上の全頂点のデバッグ レンダリングを切り替えます。スポーンポイント間でカーブがどのようにテッセレーションされるかを示します。

その他の通知のプロパティ

[Details] パネルの各通知の種類に対する [Anim Notify] セクションで変更可能なプロパティに加えて、以下のプロパティでも通知をどのように使うかを定義することができます。

AdditionalProperties.png

トリガー設定

Notify Trigger Chance

通知をトリガーする可能性を定義します (0=可能性なし、 1= 常にトリガー).

Trigger on Dedicated Server

無効な場合、デディケイテッド サーバーで通知がスキップされます。

Notify Filter Type

通知をフィルタリングする方法を定義します (トリガーさせないようにします)。メッシュの現在の LOD によってフィルタリングするように設定できます。

イベント

Trigger Weight Threshold

通知をトリガーするためにアニメーション シーケンスが持つべきウェイトを定義します。

Montage Tick Type

通知がどのように処理されるかを定義する方法です。Queued (キューに入れる) または Branching Point (分岐点) があります (以下の モンタージュのティック タイプ をご覧ください)。

Anim Link

Slot

このスロット インデックスが現在、LinkedMontage 内で使用されています。

Link Method

時間を計算する方法。Absolute (動かないで特定の時間に留まります)、Relative (セグメントに合わせて動きますが、セグメントのサイズが変わると動きません) または Proportional (セグメントに合わせて動き、セグメント全体を通して一定の比率で留まります)。

モンタージュのティック タイプ

Montage Tick Type (モンタージュのティック タイプ) の Queued (キューに入れる) と Branching Point (分岐点) の設定の違いは、キューに入れた通知は非同期ですが、分岐点は同期する点が大きな違いです。エンド ユーザーにとって、分岐点 (Branching Points) は、アニメーション タイムラインに沿って実行される時に高い正確性を持つことを意味します。

正確なタイミングに合わせて特定のアニメーションへジャンプしなくてはいけない時、高精度であることは重要です。Queued Notify を使用して同じジョブを実行することも可能ですが、Queued Notifies の非同期的な性質により、イベントが間違ったアニメーション フレームで発行されることがあり、これがモーションの処理落ちやジャンプの原因となることがあります。

Branching Points (分岐点) がもつ同期性質とその精度に起因して、Branch Pointは Queued よりもパフォーマンス負荷が高くなります。フレーム間で一致するもうひとつのアニメーションへ直接ジャンプさせるなど、イベントをアニメーション タイムラインに沿って正確なタイミングで発行させなければいけない時のみ分岐点を使用してください。フレーム単位で (またはフレームの一部で) ずれてしまうことが重要でない場合は、代わりに Queued を使用してください。

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信