【UE4】通过动画序列自动生成蒙太奇(In Code)

本文使用 UE4.26 版本,ActionRPG 教程为例,通过代码实现通过动画序列自动生成蒙太奇的功能。
包括:

  1. 批量通过动画生成对应蒙太奇(UE4 自带,但是需要改)
  2. 通过多个动画拼成一个蒙太奇,并设置对应的 Sections

一、功能背景

1.1 需求和场景

  1. 很多动画蒙太奇(AM)是直接通过动画序列(A),在 Content 目录下直接右键新建蒙太奇生成的,不需要有什么修改,理论应该可以批量生成
  2. 有些蒙太奇是通过多个 A 拼接而成,其中 Section 的位置以及名字都是固定的(位置和动画对齐,名字固定)

  在这种情况下,程序直接批量生成,会大幅提升效率,并提升质量(只要保证动画没错,就不会出现策划配错了的情况),而且策划也懒得配。。

1.2 所需背景知识

  只需要很基础的只是,就是蒙太奇上的 Section 和 Slot,以及 Segment 具体是什么,以及是干嘛用的。

UCLASS(config=Engine, hidecategories=(UObject, Length), MinimalAPI, BlueprintType)
class UAnimMontage : public UAnimCompositeBase
{
   
	GENERATED_UCLASS_BODY()

	// composite section. 
	UPROPERTY()
	TArray<FCompositeSection> CompositeSections;
	
	// slot data, each slot contains anim track
	UPROPERTY()
	TArray<struct FSlotAnimationTrack> SlotAnimTracks;
}

  上边是蒙太奇类中,这篇文章中关心的两个成员: CompositeSections(简称 Sections)以及 SlotAnimTracks(简称 Slot,主要关心里边的 Segments)。

1.2.1 CompositeSections

  下图中三个红框就是三个 Section,这个蒙太奇的 CompositeSections 大小就是 3。
在这里插入图片描述
  Section 用来把动画分成多段。可以循环,可以跳过等等操作,如下,是技能中,直接跳到蒙太奇某一段的函数:

void UGameplayAbility::MontageJumpToSection(FName SectionName)
{
   
	check(CurrentActorInfo);

	UAbilitySystemComponent* const AbilitySystemComponent = GetAbilitySystemComponentFromActorInfo_Checked();
	if (AbilitySystemComponent->IsAnimatingAbility(this))
	{
   
		AbilitySystemComponent->CurrentMontageJumpToSection(SectionName);
	}
}
1.2.2 Slot 和 Segment

  下图中,左边这个 Default.Default 是一个 Slot,即这个蒙太奇 SlotAnimTracks 大小是 1(一般就一个 Slot)。
在这里插入图片描述

USTRUCT()
struct FSlotAnimationTrack
{
   
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, Category
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在UE4播放关卡序列动画,有两种方法。第一种是在关卡蓝图添加引用,并使用play节点来播放关卡序列。具体步骤如下:将创建好的关卡序列拖入场景,选需要播放的关卡序列,在关卡蓝图添加引用,然后添加play节点。这样就可以轻松播放关卡序列了。然而,这种方法可能会出现一个bug,当想要在动画末尾暂停时会出现问题。这是因为创建关卡序列播放器节点相当于在运行时在场景新建了一个新的关卡序列,与我们之前设置的关卡序列不一致。为了解决这个问题,可以使用第二种方法。在UMG创建一个可编辑实例的关卡序列actor变量,然后在关卡蓝图创建对这个关卡序列的引用,并添加play节点。这样就可以播放关卡序列了。如果想再次点击按钮恢复到原来的状态,可以使用flip flop节点和翻转播放节点。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [UE4-UMG点击播放关卡序列(Level Sequence)](https://blog.csdn.net/qq_39590773/article/details/126506405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [带序列发生器的过场动画.rar](https://download.csdn.net/download/hraay_lk/11938327)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [UE4-(蓝图)第四十四课过场动画之创建及动画添加](https://blog.csdn.net/lei_7103/article/details/103178851)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值