学習ノート

学習者ゆえ、記事の内容は間違っていることもあります。ご了承ください。

視聴メモ「Animation ブループリントの使い方を学ぼう!」

今回のメモの範囲(Start ~ End)


www.youtube.com

UE4(4.25.0)の初心者向け動画を視聴して、UE5(5.0.0早期アクセス)の学習をします

※ 全内容のメモではありません 学習者は元動画の視聴を強くお勧めします

※ 略記 UE = Unreal Engine , BP = Blueprint

 Agenda

 

1. UEのアニメーション機能について 基本編

下記のそれぞれのアセットで管理される

  • Skeletal Mesh・・・3DCGモデル
  • Skeleton・・・ボーン(骨)
  • Animation Sequence・・・アニメーション

 

Skeletonが中心になってSkeletal Mesh、Animation Sequenceと結びつく

AnimationブループリントもSkeletonと結びつく

 

2. Animationブループリントについて

  • イベントグラフ
  • アニメーショングラフ(AnimGraph)
  • ステートマシン

 

以下、参考資料

機能別サンプル Maps/Animationレベル

docs.unrealengine.com

www.slideshare.net

 

3. サードパーソンのAnimationブループリント解説

3.1. Animationブループリント確認方法

  1. サードパーソンBPを表示する
  2. コンポーネントタブからMeshコンポーネントを選択する
  3. 詳細パネルのアニメーション項目のAnim ClassにAnimation BPが設定されている
  4. Anim Classの虫眼鏡をクリックするとコンテンツブラウザ上でAnimation BPファイルが選択される
  5. Animation BPをダブルクリックするとアニメーションエディタにAnimation BPが表示される

Animation BPはMeshコンポーネントのプロパティで設定されているのみで

サードパーソンBPに特別な処理は書かれていない

 

# UE4.14より前はアニメーションエディタは「ペルソナ」という名称だったらしい

# 名残でペルソナと表現されることもあるみたいなので覚えてくといいかも

 

3.2. アニメーションエディタ概要

  • ケルトンエディタ
  • スケルタルメッシュエディタ
  • アニメーションエディタ
  • アニメーションブループリントエディタ
  • 物理エディタ

 

docs.unrealengine.com

 

アニメーションブループリントエディタではアニメーションをプレビュー表示できる

 

3.3. イベントグラフ

3.3.1. イベントBlueprint Update Animationノード

Animation BPには、イベントBlueprint Update Animationノードが配置されている

Tickと同様なタイミングで起動するが、Animationを停止させたときは起動しない

 

3.3.2. Try Get Pawn Ownerノード

サードパーソンキャラクターBPの情報を取得する

サードパーソンキャラクターの今の状況を元に、後続の処理を行う

 

サードパーソンキャラクターの情報を取得できなかった場合に

エラーにならないようにisValidノードで情報の有無をチェックしている

 

# ゲームを実行していないときはサードパーソンキャラクターの情報は取得できない

# ゲーム実行中は基本的に取得できない状況はないはずだが予想外のエラーに備えてチェックしておく

 

3.3.3. Get Movement Componentノード

Try Get Pawn Onwerノードの戻り値(サードパーソンキャラクターBPの情報)から

Get Movement Componentの情報を取得する

 

空中にいるかどうかの情報を取得したい場合、さらにisFallingノードをリンクする

 

3.3.4. Get Velocityノード

キャラクターが移動している「速さ=Velocity」を取得する(ベクトルの向きと長さ)

ベクトルの長さ(速度)を取得したい場合、さらにVectorLengthノードをリンクする

 

3.4. アニメーショングラフ(AnimGraph)

出力ポーズは最終的な結果

IKなどの補正ノードを挟むことができる

 

docs.unrealengine.com

 

3.5. ステートマシン

遷移ルールのトランジション項目の「双方向」はサポートされていない

双方向にしたい場合は、新たに逆方向の遷移ルールを追加する

 

Time Remainigノード・・・アニメーションの残り時間を判断し、遷移ルールの一部として使用可能

 

docs.unrealengine.com

 

遷移ルールのブレンド設定の継続時間を適度な値に設定することで

次のアニメーションへのつなぎ目を自然に見せる(0にするとカクつく)

 

# 遷移ルールはトランジションルールともいう

 

4. Tips

4.1. ブレンドスペースノード

ブレンドスペースの作成方法は以下

  1. スケルタルメッシュアセットまたはスケルトンアセットを右クリック
  2. 作成する -> ブレンドスペースまたはブレンドスペース1Dを選択
  3. アセットブラウザからアセットをドラッグ&ドロップで追加する

 

Shiftキーを押しながらマウスを動かすとプレビューポイントを動かせる

アセット詳細パネルの水平軸項目からグリッドを調整可能

 

4.2. ボーン毎のレイヤーブレンドノード

ボーン毎に異なるアニメーションを設定したい場合に利用する

  1. アニメーショングラフにボーン毎のレイヤーブレンドノードを追加
  2. コンフィグ項目 -> Layer Setup -> インデックス[0] -> Branch filtersで追加を選択
  3. Branch filters -> インデックス[0] -> Bone Nameにフィルタリングするボーン名を指定

# 上半身と下半身で異なるアニメーションにするとか、銃を握ったまま走るという場合に利用する

 

4.3. アニメーションの通知

アニメーション再生ノードをダブルクリックするとアニメーションエディタが起動する

アニメーションエディタでアニメーションの任意のタイミングに通知を設定できる

通知のタイミングで音を鳴らしたりパーティクルを表示したりできる

 

4.4. 注視点(Look at)ノード

特定のボーンを指定の位置に向かせる

  1. アニメーショングラフに注視点ノードを追加
  2. ターゲット項目のLook at Locationで「ピンとして公開」を選択
  3. Look at Locationを変数化しておくとプレビューで値を指定できるようになるのでおススメ
  4. スケルタルコントロール項目のBone to Modifyから任意のボーンを選択
  5. ターゲット項目のLook at Targetから任意のボーンを選択

# Look at Targetが空だとプレビューには反映されるがゲームプレイに反映されなかった

# rootを指定したらゲームプレイにも反映された

AWS Cloud Practitioner Essentials (Japanese) (日本語字幕版)

AWS Cloud Practitioner Essentials (Japanese) (日本語字幕版)」は

Amazonが無料で提供しているAWS初学者のためのeラーニング

 

無料のeラーニングというと30分ぐらいのちょっとしたものを想像しがちだけど

想定6時間、ビデオ学習あり、最後に30問のテスト付きというガチのeラーニング

AmazonAWSを普及させようという意気込みを感じる神教材

 

特にビデオが良い!エンジニア3人が交代で解説していくんだけど

オシャレでユーモアもあって飽きさせない作りにっている

一貫してコーヒーショップに例えて解説しているのも理解しやすかった

 

同じ内容を日本人がやっている「日本語実写版」もあるけど

個人的には「日本語字幕版」の方がおススメ

 

再生速度の選択もできるので、字幕が早いと感じる場合は

0.75倍速で再生するといい感じ

 

AWSの学習を開始するなら、このeラーニングは絶対やった方がいい!

視聴メモ「Spawn ノードを使って色んなものを出してみよう!」(2)

今回のメモの範囲(35:15 ~ End)


www.youtube.com

UE4(4.25.0)の初心者向け動画を視聴して、UE5(5.0.0早期アクセス)の学習をします

※ 全内容のメモではありません 学習者は元動画の視聴を強くお勧めします

※ 略記 UE = Unreal Engine , BP = Blueprint

 Agenda

 

1. Spawnノードを使って弾を出してみよう!

1.1. Arrowコンポーネント

弾のBPにArrowコンポーネントを追加しておくと、どちらが前方かわかりやすくなる

Arrowの向きを変えても前方が変わるわけではない

 

1.2. Projectile Movementコンポーネント

  1. 弾のBPにProjectile Movementコンポーネントを追加
  2. Projectile MovementコンポーネントのInitial SpeedとMax Speedに任意の値を設定
  3. Projectile MovementコンポーネントのProjectile Gravity Scale(重力)を0に設定
  4. Projectile MovementコンポーネントのRotation Follows Velocityにチェック

 

Projectile Gravity Scaleは重力の設定(デフォルトは1.0)

デフォルト値のままだと弾は重力に引かれて落ちていく

 

Rotation Follows Velocityにチェックをいれておくことで

進んでいる方向にアクタの回転を調整してくれる

 

1.3. 弾がモノにあたったら跳ね返るようにする

  1. Box Collisionコンポーネントを追加
  2. Box Collisionコンポーネントをルートに変更(DefaultSceneRootにドラッグ&ドロップ)
  3. Box CollisionコンポーネントコリジョンプリセットをBlockAllDynamicに変更
  4. Projectile MovementコンポーネントのShould Bounceにチェック

 

Box Collisionを利用せずにMesh(Sphere)をルートにしても再現できる

Box Collisionを利用すると弾のあたり判定を調節できるのが利点

Box Collisionの大きさはシェイプの値で調整する

 

4でShould Bounceにチェック入れない場合、弾は跳ね返らないで静止する

 

1.4. 大砲から弾を出す

1.4.1. Tickを使って弾を出す
  1. SpawnActorノードを配置してTickとリンク
  2. 大砲のBPにArrowコンポーネントを追加
  3. ビューポートでArrowの位置を調整(Arrowの位置を弾を出す位置として利用)
  4. Arrow -> GetWorldLocation -> SpawnActor(Spawn Transform Locationピン)リンク
  5. Arrow -> GetWorldRotation -> SpawnActor(Spawn Transform Rotationピン)リンク
  6. 大砲のBPのルート(BP_Cannon)を選択しTick Intervalの値を調整

 

SpawnActorノードにはCollision Handling Overrideという設定値がある

スポーンの際にコリジョンが発生場合の動作を指定できる

Defaultの場合は、アクタクラスのSpawn Collision Handling Methodの値が適用される

 

1.4.2. 効果音を鳴らす

soundeffect-lab.info

上記のサイトはMP3形式で配布

UEはMP3に対応していないので何らかのツールでWAV形式に変換する

 

WAVファイルをコンテンツブラウザにドラッグ&ドロップする

必要ならば音声ファイルをダブルクリックして音量(Volume)の調整を行う

 

大砲のBPのSpawnActorノードの後にSpawn Soundノードをリンクする方法もあるが

弾のBPのBeginPlayにリンクする方法も同じ

 

1.4.3. 弾にエフェクトを追加する

弾のBPにParticleSystemコンポーネントを追加する

 

2. Tips

2.1. ある一定の範囲にランダムで弾を出す

Random Point in Bounding Boxノードを利用する

  1. BPを作成しBox Collisionコンポーネントを追加
  2. Box Collisionコンポーネントのシェイプの値を設定
  3. Arrowコンポーネントを追加
  4. Box -> GetWorldLocation -> Random Point in Bounding Box(Originピン)
  5. Box -> Box Extent-> Random Point in Bounding Box(Box Extentピン)
  6. Random Point in Bounding Box -> SpawnActor(Spawn Transform Locationピン)
  7. Arrow -> GetWorldRotation -> SpawnActor(Spawn Transform Rotationピン)
  8. SpawnActorノードのClassを選択
  9. Tick -> SpawnActor

 

2.2. 弾をホーミングさせる

レベルに配置した砲台から弾にサードパーソンの情報を引き継ぐのが肝

  1. 砲台のBPにThird Person型の変数Characterを作成(インスタンス編集可能)
  2. レベルに配置した砲台のCharacter変数にThirdPersonCharacterを設定
  3. 弾のBPにThird Person型の変数Characterを作成(インスタンス編集可能、スポーン時に公開)
  4. 砲台のBPのSpawnActor BP BulletにCharacterピン(3の手順で追加)に変数Characterをリンク
  5. 弾のBPにProjetile Movementコンポーネントを配置
  6. Projetile Movement -> Set Homing TargetComponent(ターゲットピン)
  7. Character -> Mesh -> Set Homing TargetComponent(Homing Target Componentピン)
  8. Projetile Movementの詳細パネルでIs Homing Projectileにチェック
  9. Projetile Movementの詳細パネルでHoming Acceleration Magnitudeの値を調整

 

7の手順、ホーミングの対象はアクタではなく、コンポーネントに対して指定する

7の手順でMeshを指定するとSkeltal Mesh Componentの原点である足元を狙ってくる

MeshをGetRootComponentに変更すると胴(ルートのArrow)を狙ってくる

 

2.3. 弾の寿命を設定する

弾のBPのルート(BP_Bullet)のInitial Life Spanで設定(秒)する

0(デフォルト)は寿命の設定なし

End Playノードで寿命が尽きた時にイベントを発生させることができる

ただしEnd PlayはDestroyActorの後にも呼ばれる