vault backup: 2024-08-06 17:28:01
This commit is contained in:
parent
bf54013683
commit
030f95074c
@ -51,3 +51,191 @@ private RegisterLocalEventListener(): void {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
# DirectorCamGroup.cpp
|
||||
```c++
|
||||
UDirectorSequencePlayer* UDirectorCamGroup::GetDirectorSequencePlayerFromPool(int CamIndex, bool IsPreview)
|
||||
{
|
||||
TargetPlayer = NewObject<UDirectorSequencePlayer>(this);
|
||||
TargetPlayer->SetCamSequence(CamIndex, SequenceActor);
|
||||
if(IsPreview)
|
||||
{
|
||||
CachedPreviewingPlayer.AddUnique(TargetPlayer);
|
||||
}
|
||||
else
|
||||
{
|
||||
CachedStreamingPlayer.AddUnique(TargetPlayer);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
# PVW & PGM红框效果代码 TsDirectorCamManagerActor.ts
|
||||
```
|
||||
//客户机加入流程:
|
||||
//连接Server->同步当前场景->场景加载完成后收到本地事<E59CB0>?->初始化workShop
|
||||
//->确认机器身份,执行本机任务(异步任务处理流程)
|
||||
|
||||
//异步处理流程:根据机器的性能,加入时间不同,状态差异自适应处理任务逻辑
|
||||
// 服务端收到任务请<E58AA1>?->确保服务端的workShop初始化完<E58C96>?->处理数据及同<E58F8A>??
|
||||
// ->客户机收到同步数据后->等待自己的workshop初始化完<E58C96>?->处理自己的逻辑
|
||||
// 同一种任务只处理最近一<E8BF91>?
|
||||
```
|
||||
|
||||
## HandlePreStreamTaskByNetTag()
|
||||
相关切区域与切镜代码会调用RequestPVWTaskServer()
|
||||
RequestPVWTaskServer() =>
|
||||
RequestPVWTask() => HandlePreStreamTaskDataMulticast() => HandlePreStreamTaskByNetTag()
|
||||
```ts
|
||||
HandlePreStreamTaskByNetTag(): void {
|
||||
if (this.prestreamTaskData) {
|
||||
switch (Utils.GetDirectorMode(this).TagName) {
|
||||
case DirectorMode.PVWAndPGM:
|
||||
if(!DirectorCamUtil.SubmitNewCommandIfDataNotChanged(this.preStreamTask, this.prestreamTaskData)){
|
||||
if (this.preStreamTask) {
|
||||
this.preStreamTask.Stop()
|
||||
}
|
||||
this.preStreamTask = DirectorCamUtil.CreateCamTask(this, this.prestreamTaskData, CamTaskType.FullStream, this.droneCamera,
|
||||
this.PVWWindow, this.handHeldCamera)
|
||||
if (this.preStreamTask) {
|
||||
this.preStreamTask.Start()
|
||||
if (this.PVWWindow) {
|
||||
this.PVWWindow.SetViewBorderColor(0, new UE.LinearColor(0, 1, 0, 1))
|
||||
}
|
||||
console.log('PVW Task:' + this.preStreamTask.workShop.BindPlacement.Title + " " + this.preStreamTask.groupName + " " +
|
||||
this.preStreamTask.camName)
|
||||
}
|
||||
}
|
||||
break
|
||||
case DirectorMode.Preview:
|
||||
this.RefreshWindowViewBorderColor()
|
||||
break
|
||||
case DirectorMode.PVW:
|
||||
this.HandlePVWTask()
|
||||
break;
|
||||
default:
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
# 130mm Bug日志
|
||||
```c++
|
||||
[2024.08.06-05.08.09:625][373]Puerts: (0x00000703D1DF42D0) request PVW: WorkShop:3F855CF84C91BBD9207C0FAF5273586C, CamGroup:9223AA8A478BA88F1217CD86911EDAE1, Index=0, StartFrame:0
|
||||
[2024.08.06-05.08.09:626][373]LogLevelSequence: Starting new camera cut: 'Cam_TalkShowZuo_ZhuJiWei24mm_1'
|
||||
[2024.08.06-05.08.09:626][373]Puerts: (0x00000703D1DF42D0) 设置相机目标:
|
||||
[2024.08.06-05.08.09:626][373]Puerts: (0x00000703D1DF42D0) PVW Task: 线下 站\n4 ZhuJiWei24mm
|
||||
[2024.08.06-05.08.11:550][487]Puerts: Warning: (0x00000703D1DF42D0) PauseOrResumeAllFxProp ,true
|
||||
[2024.08.06-05.08.11:551][487]Puerts: Warning: (0x00000703D1DF42D0) PauseOrResumeAllFxProp ,false
|
||||
[2024.08.06-05.08.11:551][487]LogChaosBone: Display: ResetDynamics: 1, ChaosBoneAssets Name: CBA_SK_JiaRan_Costume_BHair
|
||||
[2024.08.06-05.08.11:551][487]LogChaosBone: Display: ResetDynamics: 1, ChaosBoneAssets Name: CBA_SK_JiaRan_Costume_dress
|
||||
[2024.08.06-05.08.11:602][490]Puerts: Warning: (0x00000703D1DF42D0) BP_JiaRan_Costume_C_0 set visible false
|
||||
[2024.08.06-05.08.11:602][490]Puerts: Warning: (0x00000703D1DF42D0) teleport to livearea 031D1C1742D7EB4C76F6B397FF404FD8
|
||||
[2024.08.06-05.08.11:602][490]Puerts: Warning: (0x00000703D1DF42D0) PauseOrResumeAllFxProp ,true
|
||||
[2024.08.06-05.08.11:602][490]Puerts: (0x00000703D1DF42D0) X=0.000 Y=0.000 Z=0.000
|
||||
[2024.08.06-05.08.11:602][490]Puerts: Warning: (0x00000703D1DF42D0) PauseOrResumeAllFxProp ,false
|
||||
[2024.08.06-05.08.11:602][490]Puerts: (0x00000703D1DF42D0) BP_JiaRan_Costume_C_0,attach prop ,玩具水枪A
|
||||
[2024.08.06-05.08.11:603][490]Puerts: Warning: (0x00000703D1DF42D0) get socket of JiaRan: RightHandSocket
|
||||
[2024.08.06-05.08.11:604][490]Puerts: (0x00000703D1DF42D0) Attach prop 玩具水枪A
|
||||
[2024.08.06-05.08.11:604][490]Puerts: (0x00000703D1DF42D0) Idol.JiaRan successfully switch to 031D1C1742D7EB4C76F6B397FF404FD8
|
||||
[2024.08.06-05.08.12:085][519]Puerts: Error: (0x00000703D1DF42D0) OnFinishDisappearFx(), but the idol visibility is true!!BP_JiaRan_Costume_C_0
|
||||
[2024.08.06-05.08.12:107][520]Puerts: Warning: (0x00000703D1DF42D0) BP_JiaRan_Costume_C_0 set visible true
|
||||
[2024.08.06-05.08.12:108][520]LogBlueprintUserMessages: [BP_JiaRan_Costume_C_0] Apply Material. Oringinal Material: false
|
||||
[2024.08.06-05.08.12:108][520]Puerts: (0x00000703D1DF42D0) RefreshSceneCaptureShowList
|
||||
[2024.08.06-05.08.12:109][520]Puerts: (0x00000703D1DF42D0) CheckItemFxPool, size 0
|
||||
[2024.08.06-05.08.12:109][520]Puerts: (0x00000703D1DF42D0) TriggerHandPose
|
||||
[2024.08.06-05.08.12:109][520]Puerts: (0x00000703D1DF42D0) TriggerHandPose
|
||||
[2024.08.06-05.08.12:109][520]Puerts: Warning: (0x00000703D1DF42D0) Disable instrument pose
|
||||
[2024.08.06-05.08.12:109][520]Puerts: (0x00000703D1DF42D0) Detect hand pose ToyGun
|
||||
[2024.08.06-05.08.12:109][520]Puerts: (0x00000703D1DF42D0) TriggerHandPose ToyGun
|
||||
[2024.08.06-05.08.12:455][541]Puerts: (0x00000703D1DF42D0) request PGM: WorkShop:3F855CF84C91BBD9207C0FAF5273586C, CamGroup:9223AA8A478BA88F1217CD86911EDAE1, Index=0, StartFrame:0 , PushMethod =0
|
||||
[2024.08.06-05.08.12:805][562]Puerts: (0x00000703D1DF42D0) request PGM: WorkShop:3F855CF84C91BBD9207C0FAF5273586C, CamGroup:9223AA8A478BA88F1217CD86911EDAE1, Index=0, StartFrame:0 , PushMethod =0
|
||||
[2024.08.06-05.08.14:606][670]LogBlueprintUserMessages: [BP_JiaRan_Costume_C_0] Apply Material. Oringinal Material: true
|
||||
[2024.08.06-05.08.15:822][743]Puerts: (0x00000703D1DF42D0) request PVW: WorkShop:3F855CF84C91BBD9207C0FAF5273586C, CamGroup:DDB1F27A44E7E5B312830A828EB55464, Index=0, StartFrame:0
|
||||
[2024.08.06-05.08.15:823][743]LogLevelSequence: Starting new camera cut: 'Cine_Camera_Actor_1'
|
||||
[2024.08.06-05.08.15:823][743]Puerts: (0x00000703D1DF42D0) 设置相机目标:
|
||||
[2024.08.06-05.08.15:824][743]Puerts: (0x00000703D1DF42D0) PVW Task: 线下 贝拉2024生日 lengthtest
|
||||
[2024.08.06-05.08.15:824][743]LogBlueprintUserMessages: [BP_Cine_Cam_FOV_1] 35.0
|
||||
[2024.08.06-05.08.16:256][769]LogBlueprintUserMessages: [BP_Cine_Cam_FOV_1] 35.002922
|
||||
```
|
||||
|
||||
相关Log顺序:
|
||||
- request PVW: WorkShop:3F855CF84C91BBD9207C0FAF5273586C, CamGroup:DDB1F27A44E7E5B312830A828EB55464, Index=0, StartFrame:0
|
||||
- LogLevelSequence: Starting new camera cut: 'Cine_Camera_Actor_1'
|
||||
- Puerts: 设置相机目标:
|
||||
- Puerts: PVW Task: 线下 贝拉2024生日 lengthtest
|
||||
- PrintString BP_Cine_Cam_FOV_1 35.0
|
||||
|
||||
***HandlePVWTask中的prestreamTaskData 不对***
|
||||
|
||||
|
||||
```c
|
||||
// 播放指定相机到PVW.
|
||||
@ufunction.ufunction(ufunction.ServerAPI, ufunction.Reliable)
|
||||
PlayCamSequenceOnPVWServer(camGroupId:UE.Guid, camIndex:number):void{
|
||||
let shotExists = this.directorCamSubSystem.ShotExistInGroup(this.prestreamTaskData.WorkShopId, camGroupId, camIndex)
|
||||
if (shotExists || camIndex == DirectorCamUtil.DRONE_CAM_INDEX || camIndex == DirectorCamUtil.HANDHELD_CAM_INDEX) {
|
||||
let newPVWTaskData = DirectorCamUtil.CopyTaskData(this.prestreamTaskData)
|
||||
newPVWTaskData.CamGroupId = camGroupId
|
||||
newPVWTaskData.CamIndex = camIndex
|
||||
newPVWTaskData.StartFrame = 0
|
||||
newPVWTaskData.bPreviewOneFrame = false
|
||||
this.RequestPVWTaskServer(newPVWTaskData)
|
||||
}
|
||||
else {
|
||||
console.warn('当前镜头不存<E4B88D>?,切换无效!index=' + camIndex)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class TsDirectorCamSequencePlayBridge extends UE.Actor {
|
||||
PlayCamSequence(camGroupId:UE.Guid, camIndex:number): void {
|
||||
let camManager = TsDirectorCamManagerActor.Get(this);
|
||||
if (camManager) {
|
||||
camManager.PlayCamSequenceOnPVWServer(camGroupId, camIndex);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
```c++
|
||||
// 切换到当前直播区域中的多个workShop
|
||||
SwitchWorkShopInAreaServer(index: number): void {
|
||||
// [Server]监听到场景模块切换了直播区域后,自动切换<E58887>?0个workshop,当前切换事件用来切换当前直播区域中的多个workshop
|
||||
let levelControl = this.GetLevelAreaManager()
|
||||
let liveArea = levelControl.GetCurrentLiveArea()
|
||||
if (!liveArea) {
|
||||
console.error('DirectorCamManager@ cannot find LiveAreaBy id')
|
||||
return
|
||||
}
|
||||
let placement = DirectorCamUtil.GetPlacementInCurLiveArea(index, liveArea)
|
||||
if (!placement) {
|
||||
console.error('DirectorCamManager@SwitchWorkShopEvent:GetPlacementInCurLiveArea failed')
|
||||
return
|
||||
}
|
||||
|
||||
let GroupData = DirectorCamUtil.GetDefaultGroupData(this, placement.UUID)
|
||||
if (GroupData) {
|
||||
// 预览:切换workShop后播放第一个分<E4B8AA>?
|
||||
let newPreviewTaskData = new UE.CamTaskDataRPC()
|
||||
newPreviewTaskData.WorkShopId = DirectorCamUtil.CopyGuid(placement.UUID)
|
||||
newPreviewTaskData.CamGroupId = DirectorCamUtil.CopyGuid(GroupData.UUID)
|
||||
newPreviewTaskData.CamIndex = 0
|
||||
newPreviewTaskData.OperationId = this.previewTaskData.OperationId + 1
|
||||
newPreviewTaskData.StartFrame = 0
|
||||
newPreviewTaskData.bPreviewOneFrame = false
|
||||
this.HandlePreviewTaskDataMulticast(newPreviewTaskData);
|
||||
|
||||
// 预推流:切换workShop后,播放第一个分组的第一个镜头
|
||||
let newPVWTaskData = new UE.CamTaskDataRPC()
|
||||
newPVWTaskData.WorkShopId = DirectorCamUtil.CopyGuid(placement.UUID)
|
||||
newPVWTaskData.CamGroupId = DirectorCamUtil.CopyGuid(GroupData.UUID)
|
||||
newPVWTaskData.CamIndex = 0
|
||||
newPVWTaskData.StartFrame = 0
|
||||
newPVWTaskData.bPreviewOneFrame = false
|
||||
this.RequestPVWTaskServer(newPVWTaskData);
|
||||
}
|
||||
}
|
||||
```
|
Loading…
x
Reference in New Issue
Block a user