BlueRoseNote/02-Note/演讲与教程笔记/杭州UnrealCircle2022笔记.md
2023-06-29 11:55:02 +08:00

100 lines
4.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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并修改引擎的碰撞规则处理