視聴メモ「Animation ブループリントの使い方を学ぼう!」
今回のメモの範囲(Start ~ End)
※ 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レベル
3. サードパーソンのAnimationブループリント解説
3.1. Animationブループリント確認方法
- サードパーソンBPを表示する
- コンポーネントタブからMeshコンポーネントを選択する
- 詳細パネルのアニメーション項目のAnim ClassにAnimation BPが設定されている
- Anim Classの虫眼鏡をクリックするとコンテンツブラウザ上でAnimation BPファイルが選択される
- Animation BPをダブルクリックするとアニメーションエディタにAnimation BPが表示される
Animation BPはMeshコンポーネントのプロパティで設定されているのみで
サードパーソンBPに特別な処理は書かれていない
# UE4.14より前はアニメーションエディタは「ペルソナ」という名称だったらしい
# 名残でペルソナと表現されることもあるみたいなので覚えてくといいかも
3.2. アニメーションエディタ概要
- スケルトンエディタ
- スケルタルメッシュエディタ
- アニメーションエディタ
- アニメーションブループリントエディタ
- 物理エディタ
アニメーションブループリントエディタではアニメーションをプレビュー表示できる
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などの補正ノードを挟むことができる
3.5. ステートマシン
遷移ルールのトランジション項目の「双方向」はサポートされていない
双方向にしたい場合は、新たに逆方向の遷移ルールを追加する
Time Remainigノード・・・アニメーションの残り時間を判断し、遷移ルールの一部として使用可能
遷移ルールのブレンド設定の継続時間を適度な値に設定することで
次のアニメーションへのつなぎ目を自然に見せる(0にするとカクつく)
# 遷移ルールはトランジションルールともいう
4. Tips
4.1. ブレンドスペースノード
ブレンドスペースの作成方法は以下
Shiftキーを押しながらマウスを動かすとプレビューポイントを動かせる
アセット詳細パネルの水平軸項目からグリッドを調整可能
4.2. ボーン毎のレイヤーブレンドノード
ボーン毎に異なるアニメーションを設定したい場合に利用する
- アニメーショングラフにボーン毎のレイヤーブレンドノードを追加
- コンフィグ項目 -> Layer Setup -> インデックス[0] -> Branch filtersで追加を選択
- Branch filters -> インデックス[0] -> Bone Nameにフィルタリングするボーン名を指定
# 上半身と下半身で異なるアニメーションにするとか、銃を握ったまま走るという場合に利用する
4.3. アニメーションの通知
アニメーション再生ノードをダブルクリックするとアニメーションエディタが起動する
アニメーションエディタでアニメーションの任意のタイミングに通知を設定できる
通知のタイミングで音を鳴らしたりパーティクルを表示したりできる
4.4. 注視点(Look at)ノード
特定のボーンを指定の位置に向かせる
- アニメーショングラフに注視点ノードを追加
- ターゲット項目のLook at Locationで「ピンとして公開」を選択
- Look at Locationを変数化しておくとプレビューで値を指定できるようになるのでおススメ
- スケルタルコントロール項目のBone to Modifyから任意のボーンを選択
- ターゲット項目の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ラーニング
AmazonのAWSを普及させようという意気込みを感じる神教材
特にビデオが良い!エンジニア3人が交代で解説していくんだけど
オシャレでユーモアもあって飽きさせない作りにっている
一貫してコーヒーショップに例えて解説しているのも理解しやすかった
同じ内容を日本人がやっている「日本語実写版」もあるけど
個人的には「日本語字幕版」の方がおススメ
再生速度の選択もできるので、字幕が早いと感じる場合は
0.75倍速で再生するといい感じ
AWSの学習を開始するなら、このeラーニングは絶対やった方がいい!
図解 哲学 人物&用語事典
★★★☆☆
視聴メモ「Spawn ノードを使って色んなものを出してみよう!」(2)
今回のメモの範囲(35:15 ~ End)
※ 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コンポーネント
- 弾のBPにProjectile Movementコンポーネントを追加
- Projectile MovementコンポーネントのInitial SpeedとMax Speedに任意の値を設定
- Projectile MovementコンポーネントのProjectile Gravity Scale(重力)を0に設定
- Projectile MovementコンポーネントのRotation Follows Velocityにチェック
Projectile Gravity Scaleは重力の設定(デフォルトは1.0)
デフォルト値のままだと弾は重力に引かれて落ちていく
Rotation Follows Velocityにチェックをいれておくことで
進んでいる方向にアクタの回転を調整してくれる
1.3. 弾がモノにあたったら跳ね返るようにする
- Box Collisionコンポーネントを追加
- Box Collisionコンポーネントをルートに変更(DefaultSceneRootにドラッグ&ドロップ)
- Box CollisionコンポーネントのコリジョンプリセットをBlockAllDynamicに変更
- Projectile MovementコンポーネントのShould Bounceにチェック
Box Collisionを利用せずにMesh(Sphere)をルートにしても再現できる
Box Collisionを利用すると弾のあたり判定を調節できるのが利点
Box Collisionの大きさはシェイプの値で調整する
4でShould Bounceにチェック入れない場合、弾は跳ね返らないで静止する
1.4. 大砲から弾を出す
1.4.1. Tickを使って弾を出す
- SpawnActorノードを配置してTickとリンク
- 大砲のBPにArrowコンポーネントを追加
- ビューポートでArrowの位置を調整(Arrowの位置を弾を出す位置として利用)
- Arrow -> GetWorldLocation -> SpawnActor(Spawn Transform Locationピン)リンク
- Arrow -> GetWorldRotation -> SpawnActor(Spawn Transform Rotationピン)リンク
- 大砲のBPのルート(BP_Cannon)を選択しTick Intervalの値を調整
SpawnActorノードにはCollision Handling Overrideという設定値がある
スポーンの際にコリジョンが発生場合の動作を指定できる
Defaultの場合は、アクタクラスのSpawn Collision Handling Methodの値が適用される
1.4.2. 効果音を鳴らす
上記のサイトは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ノードを利用する
- BPを作成しBox Collisionコンポーネントを追加
- Box Collisionコンポーネントのシェイプの値を設定
- Arrowコンポーネントを追加
- Box -> GetWorldLocation -> Random Point in Bounding Box(Originピン)
- Box -> Box Extent-> Random Point in Bounding Box(Box Extentピン)
- Random Point in Bounding Box -> SpawnActor(Spawn Transform Locationピン)
- Arrow -> GetWorldRotation -> SpawnActor(Spawn Transform Rotationピン)
- SpawnActorノードのClassを選択
- Tick -> SpawnActor
2.2. 弾をホーミングさせる
レベルに配置した砲台から弾にサードパーソンの情報を引き継ぐのが肝
- 砲台のBPにThird Person型の変数Characterを作成(インスタンス編集可能)
- レベルに配置した砲台のCharacter変数にThirdPersonCharacterを設定
- 弾のBPにThird Person型の変数Characterを作成(インスタンス編集可能、スポーン時に公開)
- 砲台のBPのSpawnActor BP BulletにCharacterピン(3の手順で追加)に変数Characterをリンク
- 弾のBPにProjetile Movementコンポーネントを配置
- Projetile Movement -> Set Homing TargetComponent(ターゲットピン)
- Character -> Mesh -> Set Homing TargetComponent(Homing Target Componentピン)
- Projetile Movementの詳細パネルでIs Homing Projectileにチェック
- 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の後にも呼ばれる