100 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			100 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								title: 杭州UnrealCircle2022笔记
							 | 
						|||
| 
								 | 
							
								date: 2022-08-09 13:55:15
							 | 
						|||
| 
								 | 
							
								tags:
							 | 
						|||
| 
								 | 
							
								rating: ⭐️⭐️
							 | 
						|||
| 
								 | 
							
								excerpt: 
							 | 
						|||
| 
								 | 
							
								---
							 | 
						|||
| 
								 | 
							
								# 杭州UnrealCircle
							 | 
						|||
| 
								 | 
							
								## ChaosCloth
							 | 
						|||
| 
								 | 
							
								1. 与引擎其他模块协作,比如**动画系统**
							 | 
						|||
| 
								 | 
							
								2. 基于PositionBase,稳定的表现效果。应该是基于粒子的。
							 | 
						|||
| 
								 | 
							
								3. 允许使用AnimDriveMask 动画蓝图节点以及参数设置。
							 | 
						|||
| 
								 | 
							
								4. 支持蓝图设置参数以及对应的Debug工具。
							 | 
						|||
| 
								 | 
							
								5. 支持老算法(NvCloth?)的结算结果。
							 | 
						|||
| 
								 | 
							
								6. Chaos没有碰撞体数量限制,NvCloth<32。新增只会影响Cloth的TaperedCapsules。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- 对角色的Clothing菜单里的,勾选与环境进行碰撞,即可实现与环境碰撞。collision with environment。
							 | 
						|||
| 
								 | 
							
								- MeshSkinning->Mesh Skinning选项,对与高面Cloth的优化方案
							 | 
						|||
| 
								 | 
							
								- CVARs Debug命令与PIE参数可视化
							 | 
						|||
| 
								 | 
							
									- p.ChaosClothEditor.Debugxxx
							 | 
						|||
| 
								 | 
							
									- p.ClothPhysics.WaitForParallelClothTask 1
							 | 
						|||
| 
								 | 
							
									- p.ChaosDebugView.DebugRaw;
							 | 
						|||
| 
								 | 
							
								- Lo-Hi值与Mask值相关。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 博采传媒 基于Unreal的虚拟制片
							 | 
						|||
| 
								 | 
							
								剧本->资产制作->剧本可视化 制作预演短片。
							 | 
						|||
| 
								 | 
							
								Previz-》Techviz-》虚拟制景-》LED环幕拍摄
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								博采制作了一个半圆柱形的LED棚来解决工业光魔 棚的缺陷。杭州750平米5米高;安吉900平米8米高。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								一个月制作 0特效 科幻短片,LED棚实拍。 
							 | 
						|||
| 
								 | 
							
								优点:可以节约实景道具,同时获得结果接近的光影效果。
							 | 
						|||
| 
								 | 
							
								难点:如何将LED屏幕的光打到角色身上。比如拍摄夜景时,控制DMX灯光与LED屏场景同步,来对角色进行补光。
							 | 
						|||
| 
								 | 
							
								道具研发:比如模拟棚内汽车颠簸的承载系统。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 需要大量拍摄技巧
							 | 
						|||
| 
								 | 
							
								为了保证演员脸上的间接照明,演员必须里LED屏幕非常接近(2m,夹角150°)。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								个人想法:是否可以使用无人机矩阵进行补光处理。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- 小场景丁达尔光
							 | 
						|||
| 
								 | 
							
								- 小置景大场景:需要小场景与背景结合经验。
							 | 
						|||
| 
								 | 
							
								- 丁达尔光:可以直接做出丁达尔光的场景。
							 | 
						|||
| 
								 | 
							
								- 摄像机仰拍:部分镜头因为圆顶屏幕的限制需要使用仰拍视角来规避。
							 | 
						|||
| 
								 | 
							
								- 虚拟拍摄与DMX拍摄
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 虚幻引擎在短视频中的应用
							 | 
						|||
| 
								 | 
							
								可以购买LED电视代替LED屏(低配版)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 虚幻录像系统
							 | 
						|||
| 
								 | 
							
								视频地址:https://www.bilibili.com/video/BV1Z34y1n72n?share_source=copy_web
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 概念
							 | 
						|||
| 
								 | 
							
								- ReplaySubsystem:一个全局的回放子系统,封装核心接口并且暴露给上层使用。
							 | 
						|||
| 
								 | 
							
								- DemoNetdriver:继承自NetDriver,宏观控制回放的录制与播放。
							 | 
						|||
| 
								 | 
							
								- DemoNetConnection:继承自NetConnection,自定义实现回放数据的发送位置。
							 | 
						|||
| 
								 | 
							
								- ReplayHelper:防撞一些放回处理数据的接口,将回放逻辑与DemoNetDriver进行解耦。
							 | 
						|||
| 
								 | 
							
								- XXXNetworkReplayStreamer:序列化数据的存储类。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### Streamer(流送)有5种方式:
							 | 
						|||
| 
								 | 
							
								1. Null
							 | 
						|||
| 
								 | 
							
								2. Http
							 | 
						|||
| 
								 | 
							
								3. 内存
							 | 
						|||
| 
								 | 
							
								4. 文件
							 | 
						|||
| 
								 | 
							
								5. 还有一个忘记了
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 实现快进
							 | 
						|||
| 
								 | 
							
								1. CheckPoint:存档点,即一个完整的世界快照,每隔一段时间记录一个。
							 | 
						|||
| 
								 | 
							
								2. Stream:一段连续时间的数据流,存储着从上一个Checkpoint到当前的所有录制数据。
							 | 
						|||
| 
								 | 
							
								3. Event:记录一些特殊的自定义事件。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 录像系统的Streamer使用方式:
							 | 
						|||
| 
								 | 
							
								- UGameInstance* GameInstance=GetWorld()->GetGameInstrance();
							 | 
						|||
| 
								 | 
							
								- GameInstance->StarrtRecordingRecord()
							 | 
						|||
| 
								 | 
							
								- GameInstance->PlayReplay()
							 | 
						|||
| 
								 | 
							
								- 在CS模块文件中增加**NetworkReplayStreaming**与**LocalFileNetworkReplayStreaming**模块;按照需求还可以增加InMemoryNetworkReplayStreaming与HttpNetworkReplayStreaming。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 版本兼容
							 | 
						|||
| 
								 | 
							
								- SendProperties_BackwardsCompatible_r/ReciveProperties_BackwardsBackwardsCompatible_r
							 | 
						|||
| 
								 | 
							
									- 跨版本兼容:将本版蹦属性的名称等信息一并写入NetFieldExports结构体,再进行序列化; 
							 | 
						|||
| 
								 | 
							
								-  SendProperties_r/RecevieProperties_r
							 | 
						|||
| 
								 | 
							
									- 不考虑兼容:只序列化某个属性的Index以及内容,不记录属性名称。 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 关卡设计思路
							 | 
						|||
| 
								 | 
							
								- 游戏中的死亡回放要使用内存Streamer。
							 | 
						|||
| 
								 | 
							
								- 在进行比赛的同时播放死亡录像采用:DuplicatedLevelCollection方案实现。
							 | 
						|||
| 
								 | 
							
								- 对Level进行划分:DynamicSourceLevel原始世界、StaticLevel存放静态Actor、DynamicDuplicatedLevels存放回放世界。
							 | 
						|||
| 
								 | 
							
								- 使用ActorGUID来区分是服务器Actor还是本地Actor。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 观战系统
							 | 
						|||
| 
								 | 
							
								FHttpNetworkReplayStreamer,通过服务器发送一个拷贝到观战服务器中。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								#### 优化
							 | 
						|||
| 
								 | 
							
								- 尽量避免RPC,而多使用属性同步
							 | 
						|||
| 
								 | 
							
								- 使用PlayerState,不适用Controller来存储同步数据
							 | 
						|||
| 
								 | 
							
								- 服务器与客户端都可以录制回放
							 | 
						|||
| 
								 | 
							
								- 建立对象池,来避免加载、Spawn、Destroy、Actor GC的卡顿问题
							 | 
						|||
| 
								 | 
							
								- 回放世界与真实世界是同一个物理场景,需要避免碰撞
							 | 
						|||
| 
								 | 
							
									- 避免在回放世界打开物理
							 | 
						|||
| 
								 | 
							
									- 通过设置PxFilterFlags FCollisionFilterData并修改引擎的碰撞规则处理
							 |