2024-04-24 18:56:20 +08:00
|
|
|
|
# TODO
|
2024-04-25 20:35:56 +08:00
|
|
|
|
1. [x] 项目目录中的EditorTools\\Python\\MaterialSetCharacter\\SetCharacter.py 是否是不需要使用的?
|
2024-04-24 18:56:20 +08:00
|
|
|
|
1. 以前使用的工具脚本,可以不用。
|
|
|
|
|
2. [ ] 思诺生日会
|
|
|
|
|
1. [ ] 道具衣服导入流程。
|
|
|
|
|
2. [ ] 直播流程跑通
|
|
|
|
|
4. [ ] Sequence播放逻辑跑通。
|
2024-05-07 17:21:42 +08:00
|
|
|
|
1. [ ] 使用c++实现一个新轨道,以此来捕捉当前的对应角色Actor的引用。
|
|
|
|
|
2. [ ] 在播放最后放置Cut/Take逻辑
|
|
|
|
|
3. [ ] 将这个播放功能放到4级里。
|
2024-04-25 21:13:23 +08:00
|
|
|
|
5. [ ] DCC插件
|
2024-04-25 20:35:56 +08:00
|
|
|
|
- [ ] 角色、衣服重新绑定。以及重定向。
|
|
|
|
|
- 角色裸模,骨骼权重传递给衣服。之后修改轴向脚本。
|
|
|
|
|
- [ ] 动画蓝图中的ASoul自研修形插件匹配。也就是在Maya中输出一个骨骼以及BlendShape信息JSON,之后导入UE。
|
2024-05-16 17:18:33 +08:00
|
|
|
|
6. [ ] ChaosBone
|
|
|
|
|
1. 参考资产,KawaiiPhysics与ChaosBone混用:`Content\ResArt\CharacterArt\BeiLa\BeiLa_SwimSuit\Animations\ABP_SK_BeiLa_Swimsuit_PostProcess.uasset`
|
2024-05-17 14:14:49 +08:00
|
|
|
|
7. [ ] 考虑将Sequence TakeRecord功能移植到导播台项目中(先确定可能性)
|
2024-04-24 18:56:20 +08:00
|
|
|
|
|
2024-05-06 16:50:58 +08:00
|
|
|
|
# Console
|
|
|
|
|
1. run0:
|
|
|
|
|
2. run3:运行三级导播。
|
|
|
|
|
3.
|
2024-04-24 10:49:50 +08:00
|
|
|
|
# 直播流程
|
2024-04-25 16:59:17 +08:00
|
|
|
|
PS.
|
|
|
|
|
1. 码率12000、1080p 一个画面 35Mbps上下行。外部直播需要准备主备路2条,ASoul主线路200M上下行对等。
|
|
|
|
|
2.
|
|
|
|
|
## 导播台Server/Client启动流程
|
|
|
|
|
1. 渲染机机房
|
|
|
|
|
1. Server先开,桌面找到`ue5 - 直播Server`或者`ue4`,启动bat。
|
|
|
|
|
2. 其他几台渲染机再开,`ue5直播用`。StartClient_win,启动bat。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
2. 导播台Client顺序随意
|
2024-04-25 16:59:17 +08:00
|
|
|
|
1. 桌面找到`ue5直播用`文件夹,启动bat。
|
|
|
|
|
2. StartClient_MotionProcessor.bat、MotionServer.bat,右上一。
|
|
|
|
|
3. StartClient_MapEnvironment开启4级导播台,右上二
|
|
|
|
|
4. StartCline_win,开启3级导播台,输入命令Run3。右下二。
|
|
|
|
|
3. 启动青瞳客户端。右下一。
|
|
|
|
|
1. 开启动捕数据测试工具Qingtong_Record,选择一个数据进行连通性测试。确定右上有输入动捕数据输入。
|
|
|
|
|
2. 关闭Qingtong_Record,启动CMTracker,桌面有快捷方式。
|
|
|
|
|
3. 在MotionProcessor中确认青瞳机器的IP正确。
|
|
|
|
|
4. 动捕棚设备确定。
|
|
|
|
|
4. 动捕设备确认,确认是否正常输入数据到MotionProcessor。
|
|
|
|
|
5. 推流机开启,打开OBS填写推流地址,ping一下内网以及网页在线测速确认网络环境正常。左上二,左下一。(左下上一二都可以)
|
|
|
|
|
6. vMix开启,连接OBS。(左下上一二都可以)
|
|
|
|
|
7. 使用B站、抖音直播的私密测试账号,推流私密画面确定推流以及音频输出没有问题。
|
|
|
|
|
8. 确认设备
|
|
|
|
|
1. 确认使用的平板、iphone等设备的摄像头是胶布贴住的。
|
|
|
|
|
9. 动捕演员就位,动捕设备就位后,重新开启MotionProcessor。
|
|
|
|
|
10. 检查
|
|
|
|
|
1. 检查虚拟偶像模型是否贴地(贴地、浮空)
|
|
|
|
|
2. 换套衣服,检查肩膀是否有问题。如果有问题使用MotionProcessor修正肩膀效果。
|
|
|
|
|
3. PVW PGM 时间同步,点击StartCline_win中的时间同步按钮。
|
|
|
|
|
|
|
|
|
|
## 导播台使用
|
|
|
|
|
1. 播放VJ视频
|
|
|
|
|
1. 远程放置一个远程VJ播放用Actor。
|
|
|
|
|
2. 远程连麦
|
|
|
|
|
1. 手机连接。
|
|
|
|
|
2. 走声卡,传递到调音台。
|
|
|
|
|
|
|
|
|
|
## StreamDock
|
2024-04-25 17:37:17 +08:00
|
|
|
|
- 第一行第一个按3下切换成下一页。
|
|
|
|
|
- 镜头分专用镜头(LiveArea中设定的镜头)、通用镜头(所有场景都可以使用)
|
2024-04-27 20:01:45 +08:00
|
|
|
|
- 添加镜头的方法(也可以用于播放特效以及其他Sequence中可以制作的效果) 月哥有记录
|
|
|
|
|
1. 新建一个Sequence,并且K好镜头。
|
|
|
|
|
2. 创建CameraGroup DataAsset资产。
|
|
|
|
|
3. 将该资产加入到场景中的LevelArea下面的XX数组就。
|
|
|
|
|
4. 点击导播工具按钮。
|
2024-04-25 16:59:17 +08:00
|
|
|
|
|
|
|
|
|
## 添加道具、物品、场景、特效
|
2024-04-25 17:37:17 +08:00
|
|
|
|
1. 添加物品道具。
|
|
|
|
|
1. 目录:Content-Props-CharacterProps-Items,找到对应类型的道具,复制后修改模型资产即可。
|
|
|
|
|
2. 添加道具类:TsIdelPropActor
|
|
|
|
|
3. 具有描边、骨骼模型、静态模型、Niagara组件。
|
|
|
|
|
4. 属性
|
|
|
|
|
1. 骨骼模型Socket设置,类属性的MountPointToTransform来设置。
|
|
|
|
|
2. Prop
|
|
|
|
|
1. DisplayName:导播那里的显示的名称。
|
|
|
|
|
2. 添加场景
|
|
|
|
|
3. 添加角色
|
|
|
|
|
4. 添加衣服
|
2024-04-23 13:22:31 +08:00
|
|
|
|
|
2024-04-24 10:49:50 +08:00
|
|
|
|
## 相关Bat作用
|
2024-04-23 13:22:31 +08:00
|
|
|
|
1. StartListenServer:服务器。
|
|
|
|
|
2. 导播台
|
|
|
|
|
1. StartClient_Win:PVW(预览屏)、PGW(推流机)、Preview(小窗口)* 2
|
|
|
|
|
2. StartClient_Win_VideoProcess:视频处理,将视频推到另外2个View上。
|
|
|
|
|
3. StartClient_MapEnvironment:导播台,控制地图场景。(4级、1级,视图-Layout处切换)
|
|
|
|
|
4. StartClient_IdolController_Master:导播台,角色控制相关。(3级)
|
|
|
|
|
5. StartClient_HandHeldCam:导播台,手持相机。
|
|
|
|
|
6. StartClient_MotionProcessor:导播台,动捕
|
|
|
|
|
7. 线下的
|
|
|
|
|
1. PGM2
|
|
|
|
|
2. PGMCameraRenderer
|
|
|
|
|
8. Pico
|
|
|
|
|
1. StartClient_PicoClient_0
|
|
|
|
|
2. StartClient_PicoClient_1
|
|
|
|
|
3. StartClient_PicoClient_2
|
|
|
|
|
4. StartClient_PicoClient_3
|
2024-04-24 18:56:20 +08:00
|
|
|
|
3. 启动编辑器:项目目录中的StartEditor_Win.bat
|
|
|
|
|
4. MotionServer:动捕相关。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
|
|
|
|
|
## 修改配置
|
|
|
|
|
1. MotionServer:通过修改源码来指定IP。
|
|
|
|
|
2. 上述StartClient_MapEnvironment.Bat修改Server IP。
|
|
|
|
|
3. 切身份、调试:StartClient_IdolController_Master、PVW(预览屏)、PGW(推流机)、Preview(小窗口),ChangeNetTag Operator.IdolController.Master
|
|
|
|
|
|
|
|
|
|
# Project
|
2024-04-24 10:49:50 +08:00
|
|
|
|
1. Designer:StreamDock插件相关,包括SreamDock插件工程(直接连接UE打包工程读取相关配置,之后自动生成图标预设并且加载)、若干预设文件。
|
|
|
|
|
2. **Engine**:编译版引擎。添加过ShaderModel、修改过Shader、添加过若干Editor代码。
|
|
|
|
|
3. **LiveDirector**:导播台项目工程。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
4. StartLiveDirector:启动Bat文件。
|
|
|
|
|
5. StartLiveDirectorCluster:分布式启动方案,带一个库。
|
|
|
|
|
6. Tools:一些第三方库,
|
|
|
|
|
1. JS加密,加密代码方便给第三方。
|
|
|
|
|
2. MotionReplayer:动捕数据回放工具。
|
2024-04-24 11:38:51 +08:00
|
|
|
|
3. **MotionServer**:动捕数据处理Server。主要用于转发青瞳的动捕数据给其他Client。 MotionServer - Server - DirectorLive Client,使用动画蓝图中的IsMotionProcess变量判断身份。
|
|
|
|
|
1. 还包括自研的面部App FaceMask的数据转发。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
4. obs-studio:OBS源码,添加了若干插件,但用不了,因为技术服务属于字节。
|
2024-04-24 10:49:50 +08:00
|
|
|
|
5. PixelStream:移植自UE官方,UE4版本有若干小改动。UE5版本不用。
|
|
|
|
|
6. Protobuf:动捕数据传输,google的那个协议。
|
|
|
|
|
7. VCluster:未完成,用于拉起所有机器的导播台程序。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
|
2024-04-26 16:26:29 +08:00
|
|
|
|
## 重定向逻辑
|
|
|
|
|
1. MotionProcessor关卡中每个角色的动画蓝图负责重定向。
|
|
|
|
|
1. 使用一个Control Rig节点进行重定向。接收MotionScale、SpineScale、ArmScale、HipsDiff以及MocapData、ShoulderDiff、ZOffset。之后进行自定义计算。优势就是非常灵活。
|
|
|
|
|
2. TsMotionRetargetComponent.ts
|
|
|
|
|
3. 挂载在BP_IdolController中。
|
|
|
|
|
|
|
|
|
|
肩校准左边的滑块,用于调整动捕角色与游戏模型的比例。
|
|
|
|
|
- 默认:默认比例是计算出来,对于角色(Motion,走路效果)最佳的比例。
|
|
|
|
|
- 对齐:团舞,所有连接角色的比例统一设置成一个数值(互相匹配,针对腿)。
|
|
|
|
|
- 对齐(道具模式,不建议使用,半废弃):团舞,所有连接角色的比例统一设置成一个数值(互相匹配,针对手)。
|
|
|
|
|
|
2024-04-23 15:44:29 +08:00
|
|
|
|
## 渲染管线
|
|
|
|
|
1. 添加ShaderModel。
|
|
|
|
|
1. ToonLit:通过CustomDatas传入阴影给Diffuse与Specular
|
|
|
|
|
2. ToonCustomBxDF:只有Diffuse 阴影过渡,Specular靠Matcap。
|
|
|
|
|
2. 改了ShadingModels.ush.
|
|
|
|
|
3. Encode/Decode GBuffer.
|
|
|
|
|
4. UE5 Encode/Decode GBuffer.
|
|
|
|
|
|
2024-05-16 12:26:24 +08:00
|
|
|
|
# Plugins
|
2024-04-24 10:49:50 +08:00
|
|
|
|
1. AssetProcess:自研?资源规范性检测、安全性检测。
|
|
|
|
|
2. AVAudioUE4:商城,公用库,音频播放库。
|
|
|
|
|
3. ChaosBone:自研,骨骼物理模拟插件。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
4. ChingReciver:青瞳的插件。
|
|
|
|
|
5. DataTableEditorUntilit:数据表插件。商城。
|
|
|
|
|
6. DirectAssistanter:辅助工具。
|
2024-04-24 10:49:50 +08:00
|
|
|
|
7. DTWebBrower:移植自UE、网页浏览器内嵌。
|
|
|
|
|
8. ControlRig:移植自UE。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
9. FacialExpression:自研面捕驱动插件。
|
2024-04-24 10:49:50 +08:00
|
|
|
|
10. FFMepg:移植自FFMEPG。
|
|
|
|
|
11. GFurPro:毛发插件。
|
2024-04-24 11:38:51 +08:00
|
|
|
|
12. GloveProcess:自研,手套数据后处理插件。手套数据后处理插件。机器学习算法,姿势会进行匹配选择一个最好的姿势输出。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
13. JNAAniamtion:自研,动画编辑相关。
|
|
|
|
|
14. KantanChert:商城,图表插件。
|
|
|
|
|
15. KawaiiPhysics
|
|
|
|
|
16. LDAssist:商城,美术编辑工具。
|
|
|
|
|
17. MotionCapture:青瞳的插件。
|
|
|
|
|
18. NDIO:NDIO
|
|
|
|
|
19. PixelCapture:官方
|
|
|
|
|
20. PixelStream:
|
|
|
|
|
21. Protobuf:
|
|
|
|
|
22. puerts
|
|
|
|
|
23. ReactUMG
|
2024-04-24 10:49:50 +08:00
|
|
|
|
24. RuntimeImportAudio:商城
|
2024-05-28 12:43:59 +08:00
|
|
|
|
25. RuntimeEditor:ASoul导播台的实时编辑器模块。
|
2024-04-23 13:22:31 +08:00
|
|
|
|
26. SerialComPLugin:串口插件。一些灯,现在不用了。
|
|
|
|
|
27. SimpleTCPServer:移植官方加修改,有在用。
|
|
|
|
|
28. SimpleUDP:移植官方加修改,有在用。
|
|
|
|
|
29. SPCR 布料插件
|
|
|
|
|
30. StreamDockLink:
|
2024-04-24 10:49:50 +08:00
|
|
|
|
31. TextureShare:自研,Pico相关插件,现在没用。
|
|
|
|
|
32. VRCapture:自研,Pico相关
|
|
|
|
|
33. VRPlaybackUE:自研,Pico相关。
|
|
|
|
|
34. VRTrack: 自研,VR手套相关。
|
2024-05-16 12:26:24 +08:00
|
|
|
|
## JNAAniamtion
|
|
|
|
|
字节自研的蒙皮角色蒙皮修形插件,实现了LinearPsdSlover、PsdSlover、TwistSlover、ComposeDriver、SkinWeightDriver。
|
|
|
|
|
需要使用中台研发的Maya插件导出角色的基础结构JSON文件,并将后缀名改成**UJSON**后导入。
|
|
|
|
|
|
|
|
|
|
1. [x] JNAnimation:空。
|
|
|
|
|
2. [x] JNAnimationEd:定义动画节点**AnimGraphNode_JNPoseDriver**。
|
|
|
|
|
3. [x] JNCustomAssetEd:定义角色蒙皮修形资产。定义数据格式位于**UJNPoseDriverAsset**
|
|
|
|
|
4. [x] JNCustomAsset:定义JSON数据载体UJNPoseDriverAsset(UBaseJsonAsset -> UObject)。
|
|
|
|
|
5. [ ] [[#JNAnimationTools]]:
|
|
|
|
|
1. FAnimNode_JNPoseDriver
|
|
|
|
|
2. FComposeDriver
|
|
|
|
|
3. FLinearSolver
|
|
|
|
|
4. FPoseDriverUtils
|
|
|
|
|
5. FPSDSlover
|
|
|
|
|
6. FSkinWeightDriver
|
|
|
|
|
7. FSolverDriver
|
|
|
|
|
8. FTwistSolver
|
|
|
|
|
|
|
|
|
|
### JNCustomAsset
|
|
|
|
|
```c++
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FDrivenInfos
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FString> BlendShape;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FString> Joint;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FAniCruveInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> Input;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FDrivenInfos DrivenInfos;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> Tangent;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> OutTangent;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> InTangent;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> Value;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FPSDAniCurveInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> B;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> U;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> D;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> F;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> DF;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> UF;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> DB;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> UB;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FPSDSloverInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FPSDAniCurveInfo aniCurveInfos;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FString driver;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> matrix;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FString parent;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> aimAxis;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FLinearSolverInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
float coefficient;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FString attribute;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FAniCruveInfo> aniCurveInfos;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FString driver;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FComposeDriverInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FString> curveName;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FString> blendshape;
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FSkinWeightDriverInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
int index;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FString joint;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FString> influenceObjects;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> weights;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<float> initPoint;
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FTwistSloverInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FString inputJoint;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
int twistAxis;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FString> twistJoints;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
bool isReverse;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
USTRUCT(BlueprintType)
|
|
|
|
|
struct FPoseDriverSolversInfo
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FPSDSloverInfo> psdSolvers;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FLinearSolverInfo> linearSolvers;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FComposeDriverInfo> composeDrivers;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FSkinWeightDriverInfo> skinWeightDrivers;
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
TArray<FTwistSloverInfo> twistSolvers;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
UCLASS(BlueprintType)
|
|
|
|
|
class JNCUSTOMASSET_API UJNPoseDriverAsset : public UBaseJsonAsset
|
|
|
|
|
{
|
|
|
|
|
GENERATED_BODY()
|
|
|
|
|
public:
|
|
|
|
|
virtual bool ParseFromJsonObject(const TSharedRef<FJsonObject>& JsonObjectRef) override;
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
UPROPERTY(BlueprintReadWrite, EditDefaultsOnly)
|
|
|
|
|
FPoseDriverSolversInfo SloversInfo;
|
|
|
|
|
};
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
### JNAnimationTools
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Script
|
2024-04-23 13:22:31 +08:00
|
|
|
|
1. DirectorCam:与24个镜头相关。
|
|
|
|
|
2. Editor:RuntimeEditor相关。
|
|
|
|
|
3. LiveDirector:
|
2024-05-24 18:21:55 +08:00
|
|
|
|
1. [ ] Character/TsIdolActor.ts:[[角色流程#TsIdolActor.ts]]
|
2024-04-23 13:22:31 +08:00
|
|
|
|
4. Camera
|
|
|
|
|
5. Characrer:
|
|
|
|
|
6. Danma:弹幕相关,View以及控制。
|
|
|
|
|
7. DeckLinkViewProcess:视频处理,叠加UI之类的操作。
|
|
|
|
|
8. Decoration:UI UMG类定义。
|
|
|
|
|
9. DeviceINputActor:Media以及串口控制器(Actor)
|
|
|
|
|
10. DirectorFrameWork:GameMode、Contorl、 UIManage之类的通用框架。
|
|
|
|
|
11. DirectorToolMenu:编辑器UI相关。
|
|
|
|
|
12. Level:场景切换控制器。
|
|
|
|
|
13. LiveArea:直播区域。
|
|
|
|
|
14. MapEnvironment:Level里的效果以及相关逻辑。天气控制。
|
|
|
|
|
15. Pico相关。
|
|
|
|
|
16. Prop:道具相关道具。
|
|
|
|
|
17. QuickControl:简单UI控制器。
|
|
|
|
|
18. ScreenPlayerTextureRenderer:将视频渲染成贴图之后再场景中渲染。
|
|
|
|
|
19. SeiSender:OBS Sei信息。
|
|
|
|
|
20. VideoStreamTransition:转场功能,闪白、转视频啥的。
|
|
|
|
|
21. Python:小工具
|
|
|
|
|
22. Sequoia:运镜录制剪辑工具。自研类似Sequence的 runtime editor,控制镜头。控制灯光。
|
|
|
|
|
23. SimpleLiveDirector:提供给外部供应商的简单版程序。
|
|
|
|
|
|
|
|
|
|
## Source
|
|
|
|
|
1. AppShells:做了一半,还没用。
|
|
|
|
|
2. Editor/HotKeyManager:快捷键相关,可以通过配置实现。
|
|
|
|
|
3. LiveDirector
|
|
|
|
|
4. LiveDirectorEditor
|
|
|
|
|
5. Module:
|
|
|
|
|
1. BlackMagicInput:UE官方移植,视频采集卡。
|
|
|
|
|
2. BlackMagicOutput:UE官方移植,视频采集卡。
|
|
|
|
|
3. DeckLinkOuput:UE官方移植,视频采集卡。
|
|
|
|
|
4. GameCluster:未完成
|
|
|
|
|
6. MultiViewRenderer:20个View的UI相关。
|
|
|
|
|
7. UIModule:UI样式定义,功能。
|
2024-04-23 15:44:29 +08:00
|
|
|
|
|
2024-04-24 18:56:20 +08:00
|
|
|
|
### HotKeyManager
|
|
|
|
|
实现UI控件SHotKeyEditor、SHotkeyInput。主要的功能是注册名为HotKeyManager的Tab,里面塞了前面2个UI控件。
|
|
|
|
|
TODO:找到在哪使用
|
|
|
|
|
|
|
|
|
|
### LiveDirector
|
|
|
|
|
#### AIACao(后续大概率不会再用)
|
|
|
|
|
AI NLP相关,需要自己接入服务。
|
|
|
|
|
|
|
|
|
|
#### AIgo(一欧元滤波器)
|
|
|
|
|
TODO:找到在哪使用
|
|
|
|
|
|
|
|
|
|
#### Animation
|
|
|
|
|
- FAnimNode_FullBody:动画蓝图中**非MotionProcessor** LiveDirector Client使用该节点。
|
|
|
|
|
- FSequenceMotionSource:一个单例类(没有继承),猜测与Sequoia系统记录数据有关。
|
|
|
|
|
|
|
|
|
|
#### Camera
|
|
|
|
|
- DirectorCamera
|
|
|
|
|
- CameraCopySettings
|
|
|
|
|
- CamTarget
|
|
|
|
|
- CamTargetManagerActor
|
|
|
|
|
- DroneCamera
|
|
|
|
|
|
|
|
|
|
|
2024-04-23 15:44:29 +08:00
|
|
|
|
## Material
|
|
|
|
|
ResArt-CommonMaterial-Material,M_ToonHair_v01。v02为新版。
|
|
|
|
|
- CommonMaterial-Functions:ShadingModel的骚操作。
|
|
|
|
|
## Character
|
|
|
|
|
- BP_Idlo_Base
|
|
|
|
|
- 继承=>
|
|
|
|
|
|
|
|
|
|
## LightChannel
|
|
|
|
|
1. 角色为LightChannel2。
|
|
|
|
|
|
|
|
|
|
## 资源
|
2024-05-06 16:50:58 +08:00
|
|
|
|
- Characters:角色蓝图类。
|
|
|
|
|
- 命名规则`BP_角色名_XXX`
|
|
|
|
|
- 由技术同学进行配置,
|
|
|
|
|
- 主要配置Outline材质。
|
|
|
|
|
- DressName(导播软件会)
|
|
|
|
|
- 动画蓝图:服装布料效果。
|
2024-04-23 15:44:29 +08:00
|
|
|
|
- ResArt
|
|
|
|
|
- CharacterArt
|
2024-05-06 16:50:58 +08:00
|
|
|
|
- Material
|
|
|
|
|
- Mesh
|
|
|
|
|
- Animations
|
|
|
|
|
- Dissolve:溶解材质,个数与名称需要与角色材质一一对应。
|
|
|
|
|
- MakeDissolveMaterial.py生成对应的溶解材质。
|
|
|
|
|
-
|
2024-04-23 15:44:29 +08:00
|
|
|
|
|
|
|
|
|
场景:
|
|
|
|
|
- BP_ASoulSky:天空盒控制。
|
2024-04-23 16:20:13 +08:00
|
|
|
|
- 场景变体:使用UE官方的SceneVariantManager。
|
|
|
|
|
- LiveDirector - Editor- SceneVariant :SceneVariantTool
|
|
|
|
|
- 使用一个工具蓝图来创建场景变体以此来实现场景溶解切换效果。
|
2024-04-24 11:38:51 +08:00
|
|
|
|
|
2024-05-06 16:50:58 +08:00
|
|
|
|
### 添加资产流程
|
|
|
|
|
#### 角色流程
|
|
|
|
|
如果只是修改若干资产数值,需要点击全量生成。(或者直接去修改JSON文件IdolPropAesstConfig)
|
|
|
|
|
|
|
|
|
|
#### 道具流程
|
|
|
|
|
Tag可以控制:
|
|
|
|
|
1. 谁可以拿
|
|
|
|
|
2. 拿的手势
|
|
|
|
|
3. 道具类型
|
|
|
|
|
4. 左右手的MountPoint数据
|
|
|
|
|
|
|
|
|
|
#### 场景流程
|
|
|
|
|
1. 角色需要`LiveArea`Actor
|
|
|
|
|
2. Sequence与Camera需要`CameraRoot`Actor(需要与LiveArea完全重叠)
|
|
|
|
|
1. ~~FollowMovementComponent编写各种相机跟踪物体(IdolName、Socket、Bone)~~
|
|
|
|
|
2. 摄像机挂载FollowingComponment。
|
|
|
|
|
3.
|
|
|
|
|
|
2024-04-24 11:38:51 +08:00
|
|
|
|
# 实现Sequence控制角色与镜头
|
|
|
|
|
1. Sequence镜头控制:屏蔽ASoul系统的镜头控制,屏蔽DirectorCam相关功能。
|
|
|
|
|
1. DirectorCam C++目录着重看Subsystem以及CameraManager。
|
|
|
|
|
2. 只要的耦合在Puerts脚本中 DirectorCam目录中,TsDirectorCamManagerActor、以及目录下面的StreamDock。
|
|
|
|
|
3. 1个LiveArea - 1个WorkShop - 多个CameraGroup - 24个镜头
|
|
|
|
|
2. 录制动画/动捕动画切换:修改动画蓝图。将录制的动画塞入。
|
|
|
|
|
3. 新添加功能实现24个镜头与Sequence镜头切换,位于DirectorCam - StreamDcok。
|
|
|
|
|
|
|
|
|
|
# 修型
|
|
|
|
|
在动画蓝图节点中,既控制BlendShape也有骨骼。
|
|
|
|
|
|
|
|
|
|
# StreamDock
|
|
|
|
|
1. 有了相关操作后刷新StreamDcok。
|
|
|
|
|
2. 配置蓝图。EUWBP_
|
|
|
|
|
1. 与LiveArea有关。
|
|
|
|
|
1. Dock实时读取BP_DefaultCamPlacem的目标Serup。
|
|
|
|
|
2. 生成LiveArea模板需要使用工具,DirectorTool-生成LiveArea。
|
|
|
|
|
|
|
|
|
|
# FaceMask位置
|
2024-04-24 12:21:23 +08:00
|
|
|
|
P4V - Trunk - tools - ARFaceCap
|
|
|
|
|
|
2024-04-28 15:27:52 +08:00
|
|
|
|
- 版本为Unity2020.1.16
|
2024-04-24 12:21:23 +08:00
|
|
|
|
# MotionServer
|
|
|
|
|
青瞳 -》 UE版MotionServer 重定向、过滤 -》.net MotionServer转发。
|
|
|
|
|
|
|
|
|
|
# UE5版本改动
|
|
|
|
|
1. 程序方面多了大世界系统逻辑,世界分区(WorldComposition)。其他逻辑是一样的。
|
2024-04-24 16:24:19 +08:00
|
|
|
|
2. 材质、渲染:使用一些trick技巧强行在材质中塞入一个宏强行打开CustomData来塞ShadowColor。
|
|
|
|
|
|
|
|
|
|
## 版本升级
|
|
|
|
|
1. 程序:升级代码后,QA负责测试。
|
2024-05-16 12:26:24 +08:00
|
|
|
|
2. TA:效果美术、QA负责观察。
|
|
|
|
|
|
|
|
|
|
# Content
|
|
|
|
|
## Maps
|
|
|
|
|
### 开发相关
|
|
|
|
|
- Maps
|
|
|
|
|
- Scenes
|
|
|
|
|
- Map_LookDev
|
|
|
|
|
- Map_Hide
|
|
|
|
|
- Map_Lightt
|
|
|
|
|
- Map_LookDev:角色LookDev
|
|
|
|
|
- Map_LookDev_WZY
|
|
|
|
|
- Map_Props:
|
|
|
|
|
|
|
|
|
|
### 大世界
|
2024-05-16 14:20:11 +08:00
|
|
|
|
- Maps
|
|
|
|
|
- Map_SeasideCity
|
2024-05-16 17:18:33 +08:00
|
|
|
|
- Map_SeasideCity
|
|
|
|
|
- Map_CHNature
|
|
|
|
|
- Map_CHNature
|
|
|
|
|
- Map_Stylized_Vilage
|
|
|
|
|
- Map_Stylized_Vilage
|
|
|
|
|
- Map_WorlddEnd
|
|
|
|
|
- Map_WorldEnd
|
|
|
|
|
|
|
|
|
|
其他用了大世界技术的小型地图:
|
|
|
|
|
- Maps
|
|
|
|
|
- Map_GreenScreen:绿幕效果。
|
2024-05-27 17:02:11 +08:00
|
|
|
|
- Map_Live:Live场景。
|