Merge remote-tracking branch 'origin/master'
# Conflicts: # 03-UnrealEngine/Sequence/Sequence Runtime Binding.md
This commit is contained in:
commit
d76c9c0d04
@ -6,6 +6,9 @@ tags:
|
|||||||
rating: ⭐
|
rating: ⭐
|
||||||
---
|
---
|
||||||
# 前言
|
# 前言
|
||||||
|
***MovieSceneTextTrack*** 引擎插件可以作为参考。
|
||||||
|
***UMovieSceneCVarTrackInstance***
|
||||||
|
|
||||||
参考:
|
参考:
|
||||||
1. [sequencer mute tracks at runtime from c](https://forums.unrealengine.com/t/sequencer-mute-tracks-at-runtime-from-c/476278/3)
|
1. [sequencer mute tracks at runtime from c](https://forums.unrealengine.com/t/sequencer-mute-tracks-at-runtime-from-c/476278/3)
|
||||||
|
|
||||||
@ -60,6 +63,9 @@ UMovieSceneSequenceExtensions methods are not exported. They don’t have the PL
|
|||||||
- LevelSequence分析
|
- LevelSequence分析
|
||||||
- https://zhuanlan.zhihu.com/p/157892605
|
- https://zhuanlan.zhihu.com/p/157892605
|
||||||
|
|
||||||
|
## UMovieSceneTrackInstance
|
||||||
|
大部分Track的instance类。
|
||||||
|
|
||||||
## 继承关系
|
## 继承关系
|
||||||
UMovieSceneSignedObject -> UObject。一个UMovieScene由若干个MasterTrack(UMovieSceneTrack)组成,UMovieScene相当于是UMovieSceneTracks的容器,那么UMovieSceneTrack又由UMovieSceneSections组成,UMovieSceneSection就是一个Track中间的某一段。
|
UMovieSceneSignedObject -> UObject。一个UMovieScene由若干个MasterTrack(UMovieSceneTrack)组成,UMovieScene相当于是UMovieSceneTracks的容器,那么UMovieSceneTrack又由UMovieSceneSections组成,UMovieSceneSection就是一个Track中间的某一段。
|
||||||
|
|
||||||
@ -154,6 +160,83 @@ TArray<FGuid> FSequencerUtilities::AddActors(TSharedRef<ISequencer> Sequencer, c
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
其他参考
|
||||||
|
```c++
|
||||||
|
const FGuid PossessableGuid = OwnerMovieScene->AddPossessable(InName, InObject.GetClass());
|
||||||
|
|
||||||
|
if (!OwnerMovieScene->FindPossessable(PossessableGuid)->BindSpawnableObject(Sequencer->GetFocusedTemplateID(), &InObject, &Sequencer.Get()))
|
||||||
|
{
|
||||||
|
OwnerSequence->BindPossessableObject(PossessableGuid, InObject, BindingContext);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```c++
|
||||||
|
FGuid FSequencerUtilities::CreateBinding(TSharedRef<ISequencer> Sequencer, UObject& InObject, const FString& InName)
|
||||||
|
{
|
||||||
|
const FScopedTransaction Transaction(LOCTEXT("CreateBinding", "Create New Binding"));
|
||||||
|
|
||||||
|
UMovieSceneSequence* OwnerSequence = Sequencer->GetFocusedMovieSceneSequence();
|
||||||
|
UMovieScene* OwnerMovieScene = OwnerSequence->GetMovieScene();
|
||||||
|
|
||||||
|
OwnerSequence->Modify();
|
||||||
|
OwnerMovieScene->Modify();
|
||||||
|
|
||||||
|
const FGuid PossessableGuid = OwnerMovieScene->AddPossessable(InName, InObject.GetClass());
|
||||||
|
|
||||||
|
// Attempt to use the parent as a context if necessary
|
||||||
|
UObject* ParentObject = OwnerSequence->GetParentObject(&InObject);
|
||||||
|
UObject* BindingContext = Sequencer->GetPlaybackContext();
|
||||||
|
|
||||||
|
AActor* ParentActorAdded = nullptr;
|
||||||
|
FGuid ParentGuid;
|
||||||
|
|
||||||
|
if (ParentObject)
|
||||||
|
{
|
||||||
|
// Ensure we have possessed the outer object, if necessary
|
||||||
|
ParentGuid = Sequencer->GetHandleToObject(ParentObject, false);
|
||||||
|
if (!ParentGuid.IsValid())
|
||||||
|
{
|
||||||
|
ParentGuid = Sequencer->GetHandleToObject(ParentObject);
|
||||||
|
ParentActorAdded = Cast<AActor>(ParentObject);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (OwnerSequence->AreParentContextsSignificant())
|
||||||
|
{
|
||||||
|
BindingContext = ParentObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set up parent/child guids for possessables within spawnables
|
||||||
|
if (ParentGuid.IsValid())
|
||||||
|
{
|
||||||
|
FMovieScenePossessable* ChildPossessable = OwnerMovieScene->FindPossessable(PossessableGuid);
|
||||||
|
if (ensure(ChildPossessable))
|
||||||
|
{
|
||||||
|
ChildPossessable->SetParent(ParentGuid, OwnerMovieScene);
|
||||||
|
}
|
||||||
|
|
||||||
|
FMovieSceneSpawnable* ParentSpawnable = OwnerMovieScene->FindSpawnable(ParentGuid);
|
||||||
|
if (ParentSpawnable)
|
||||||
|
{
|
||||||
|
ParentSpawnable->AddChildPossessable(PossessableGuid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!OwnerMovieScene->FindPossessable(PossessableGuid)->BindSpawnableObject(Sequencer->GetFocusedTemplateID(), &InObject, &Sequencer.Get()))
|
||||||
|
{
|
||||||
|
OwnerSequence->BindPossessableObject(PossessableGuid, InObject, BindingContext);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Broadcast if a parent actor was added as a result of adding this object
|
||||||
|
if (ParentActorAdded && ParentGuid.IsValid())
|
||||||
|
{
|
||||||
|
Sequencer->OnActorAddedToSequencer().Broadcast(ParentActorAdded, ParentGuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
return PossessableGuid;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### FAudioTrackEditor
|
### FAudioTrackEditor
|
||||||
FAudioTrackEditor::HandleAssetAdded(UObject* Asset, const FGuid& TargetObjectGuid) => FAudioTrackEditor::AddNewSound() => UMovieSceneAudioTrack::AddNewSoundOnRow(USoundBase* Sound, FFrameNumber Time, int32 RowIndex)
|
FAudioTrackEditor::HandleAssetAdded(UObject* Asset, const FGuid& TargetObjectGuid) => FAudioTrackEditor::AddNewSound() => UMovieSceneAudioTrack::AddNewSoundOnRow(USoundBase* Sound, FFrameNumber Time, int32 RowIndex)
|
||||||
|
|
||||||
@ -164,7 +247,8 @@ FAudioTrackEditor::HandleAssetAdded(UObject* Asset, const FGuid& TargetObjectGui
|
|||||||
- `TObjectPtr<UAnimSequenceBase> Animation`
|
- `TObjectPtr<UAnimSequenceBase> Animation`
|
||||||
- FSkeletalAnimationTrackEditor
|
- FSkeletalAnimationTrackEditor
|
||||||
- UMovieSceneSkeletalAnimationSystem
|
- UMovieSceneSkeletalAnimationSystem
|
||||||
- ~~FSkeletalAnimationTrackEditMode~~
|
- 里面有介绍System相关的逻辑 https://zhuanlan.zhihu.com/p/413151867
|
||||||
|
- FSkeletalAnimationTrackEditMode
|
||||||
|
|
||||||
Track的编辑器注册位于MovieSceneToolsModule.cpp:
|
Track的编辑器注册位于MovieSceneToolsModule.cpp:
|
||||||
```c++
|
```c++
|
||||||
@ -337,6 +421,41 @@ void UMovieSceneSequencePlayer::UpdateMovieSceneInstance(FMovieSceneEvaluationRa
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
这段解析来自于:https://zhuanlan.zhihu.com/p/413151867
|
||||||
|
```c++
|
||||||
|
UMovieSceneSequencePlayer::Play() //蓝图中调用
|
||||||
|
UMovieSceneSequencePlayer::PlayInternal()
|
||||||
|
UMovieSceneSequencePlayer::UpdateMovieSceneInstance
|
||||||
|
RootTemplateInstance.Evaluate(Context, *this);
|
||||||
|
|
||||||
|
// FMovieSceneRootEvaluationTemplateInstance::Evaluate
|
||||||
|
EntitySystemRunner.Update(Context, RootInstanceHandle);
|
||||||
|
|
||||||
|
FMovieSceneEntitySystemRunner::Flush()
|
||||||
|
FMovieSceneEntitySystemRunner::DoFlushUpdateQueueOnce()
|
||||||
|
FMovieSceneEntitySystemRunner::GameThread_ProcessQueue()
|
||||||
|
FMovieSceneEntitySystemRunner::GameThread_SpawnPhase()
|
||||||
|
|
||||||
|
// FMovieSceneEntitySystemRunner::GameThread_SpawnPhase()
|
||||||
|
/// System Linker->GetInstanceRegistry();
|
||||||
|
FInstanceRegistry* InstanceRegistry = GetInstanceRegistry();
|
||||||
|
FSequenceInstance& Instance = InstanceRegistry->MutateInstance(Update.InstanceHandle);
|
||||||
|
Instance.Update(Linker, Update.Context);
|
||||||
|
|
||||||
|
// FSequenceInstance::Update
|
||||||
|
SequenceUpdater->Update(Linker, Params, ComponentField, EntitiesScratch);
|
||||||
|
|
||||||
|
// FSequenceUpdater_Flat::Update
|
||||||
|
FSequenceInstance& SequenceInstance = Linker->GetInstanceRegistry()->MutateInstance(InstanceHandle);
|
||||||
|
SequenceInstance.Ledger.UpdateEntities
|
||||||
|
|
||||||
|
// FEntityLedger::UpdateEntities
|
||||||
|
FInstanceRegistry* InstanceRegistry = Linker->GetInstanceRegistry();
|
||||||
|
ImportEntity(Linker, ImportParams, EntityField, Query);
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
暂停的核心逻辑:
|
暂停的核心逻辑:
|
||||||
```c++
|
```c++
|
||||||
FMovieSceneEvaluationRange CurrentTimeRange = PlayPosition.GetCurrentPositionAsRange();
|
FMovieSceneEvaluationRange CurrentTimeRange = PlayPosition.GetCurrentPositionAsRange();
|
||||||
|
BIN
03-UnrealEngine/卡通渲染相关资料/渲染功能/其他参考/插画参考/星穹铁道-流萤-白丝.png
Normal file
BIN
03-UnrealEngine/卡通渲染相关资料/渲染功能/其他参考/插画参考/星穹铁道-流萤-白丝.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1016 KiB |
BIN
03-UnrealEngine/卡通渲染相关资料/渲染功能/其他参考/插画参考/未知_皮肤_室内.png
Normal file
BIN
03-UnrealEngine/卡通渲染相关资料/渲染功能/其他参考/插画参考/未知_皮肤_室内.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.5 MiB |
Loading…
x
Reference in New Issue
Block a user