533 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			533 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# TODO
							 | 
						|||
| 
								 | 
							
								1. [x] 项目目录中的EditorTools\\Python\\MaterialSetCharacter\\SetCharacter.py 是否是不需要使用的?
							 | 
						|||
| 
								 | 
							
									1. 以前使用的工具脚本,可以不用。
							 | 
						|||
| 
								 | 
							
								2. [ ] 思诺生日会
							 | 
						|||
| 
								 | 
							
									1. [ ] 道具衣服导入流程。
							 | 
						|||
| 
								 | 
							
									2. [ ] 直播流程跑通
							 | 
						|||
| 
								 | 
							
								4. [ ] Sequence播放逻辑跑通。
							 | 
						|||
| 
								 | 
							
									1. [ ] 使用c++实现一个新轨道,以此来捕捉当前的对应角色Actor的引用。
							 | 
						|||
| 
								 | 
							
									2. [ ] 在播放最后放置Cut/Take逻辑
							 | 
						|||
| 
								 | 
							
									3. [ ] 将这个播放功能放到4级里。
							 | 
						|||
| 
								 | 
							
								5. [ ] DCC插件
							 | 
						|||
| 
								 | 
							
									- [ ] 角色、衣服重新绑定。以及重定向。
							 | 
						|||
| 
								 | 
							
										- 角色裸模,骨骼权重传递给衣服。之后修改轴向脚本。
							 | 
						|||
| 
								 | 
							
									- [ ] 动画蓝图中的ASoul自研修形插件匹配。也就是在Maya中输出一个骨骼以及BlendShape信息JSON,之后导入UE。
							 | 
						|||
| 
								 | 
							
								6. [ ] ChaosBone 
							 | 
						|||
| 
								 | 
							
									1. 参考资产,KawaiiPhysics与ChaosBone混用:`Content\ResArt\CharacterArt\BeiLa\BeiLa_SwimSuit\Animations\ABP_SK_BeiLa_Swimsuit_PostProcess.uasset`
							 | 
						|||
| 
								 | 
							
								7. [ ] 考虑将Sequence TakeRecord功能移植到导播台项目中(先确定可能性)
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# Console
							 | 
						|||
| 
								 | 
							
								1. run0:
							 | 
						|||
| 
								 | 
							
								2. run3:运行三级导播。
							 | 
						|||
| 
								 | 
							
								3. 
							 | 
						|||
| 
								 | 
							
								# 直播流程
							 | 
						|||
| 
								 | 
							
								PS.
							 | 
						|||
| 
								 | 
							
								1. 码率12000、1080p 一个画面 35Mbps上下行。外部直播需要准备主备路2条,ASoul主线路200M上下行对等。
							 | 
						|||
| 
								 | 
							
								2. 
							 | 
						|||
| 
								 | 
							
								## 导播台Server/Client启动流程
							 | 
						|||
| 
								 | 
							
								1. 渲染机机房
							 | 
						|||
| 
								 | 
							
									1. Server先开,桌面找到`ue5 - 直播Server`或者`ue4`,启动bat。
							 | 
						|||
| 
								 | 
							
									2. 其他几台渲染机再开,`ue5直播用`。StartClient_win,启动bat。
							 | 
						|||
| 
								 | 
							
								2. 导播台Client顺序随意
							 | 
						|||
| 
								 | 
							
									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 
							 | 
						|||
| 
								 | 
							
								- 第一行第一个按3下切换成下一页。
							 | 
						|||
| 
								 | 
							
								- 镜头分专用镜头(LiveArea中设定的镜头)、通用镜头(所有场景都可以使用)
							 | 
						|||
| 
								 | 
							
								- 添加镜头的方法(也可以用于播放特效以及其他Sequence中可以制作的效果) 月哥有记录
							 | 
						|||
| 
								 | 
							
									1. 新建一个Sequence,并且K好镜头。
							 | 
						|||
| 
								 | 
							
									2. 创建CameraGroup DataAsset资产。
							 | 
						|||
| 
								 | 
							
									3. 将该资产加入到场景中的LevelArea下面的XX数组就。
							 | 
						|||
| 
								 | 
							
									4. 点击导播工具按钮。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 添加道具、物品、场景、特效
							 | 
						|||
| 
								 | 
							
								 1. 添加物品道具。
							 | 
						|||
| 
								 | 
							
									1. 目录:Content-Props-CharacterProps-Items,找到对应类型的道具,复制后修改模型资产即可。
							 | 
						|||
| 
								 | 
							
									2. 添加道具类:TsIdelPropActor
							 | 
						|||
| 
								 | 
							
									3. 具有描边、骨骼模型、静态模型、Niagara组件。
							 | 
						|||
| 
								 | 
							
									4. 属性
							 | 
						|||
| 
								 | 
							
										1. 骨骼模型Socket设置,类属性的MountPointToTransform来设置。
							 | 
						|||
| 
								 | 
							
										2. Prop
							 | 
						|||
| 
								 | 
							
											1. DisplayName:导播那里的显示的名称。
							 | 
						|||
| 
								 | 
							
								2. 添加场景
							 | 
						|||
| 
								 | 
							
								3. 添加角色
							 | 
						|||
| 
								 | 
							
								4. 添加衣服
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 相关Bat作用
							 | 
						|||
| 
								 | 
							
								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
							 | 
						|||
| 
								 | 
							
								3. 启动编辑器:项目目录中的StartEditor_Win.bat 
							 | 
						|||
| 
								 | 
							
								4. MotionServer:动捕相关。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 修改配置
							 | 
						|||
| 
								 | 
							
								1. MotionServer:通过修改源码来指定IP。
							 | 
						|||
| 
								 | 
							
								2. 上述StartClient_MapEnvironment.Bat修改Server IP。
							 | 
						|||
| 
								 | 
							
								3. 切身份、调试:StartClient_IdolController_Master、PVW(预览屏)、PGW(推流机)、Preview(小窗口),ChangeNetTag Operator.IdolController.Master
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# Project
							 | 
						|||
| 
								 | 
							
								1. Designer:StreamDock插件相关,包括SreamDock插件工程(直接连接UE打包工程读取相关配置,之后自动生成图标预设并且加载)、若干预设文件。
							 | 
						|||
| 
								 | 
							
								2. **Engine**:编译版引擎。添加过ShaderModel、修改过Shader、添加过若干Editor代码。
							 | 
						|||
| 
								 | 
							
								3. **LiveDirector**:导播台项目工程。
							 | 
						|||
| 
								 | 
							
								4. StartLiveDirector:启动Bat文件。
							 | 
						|||
| 
								 | 
							
								5. StartLiveDirectorCluster:分布式启动方案,带一个库。
							 | 
						|||
| 
								 | 
							
								6. Tools:一些第三方库,
							 | 
						|||
| 
								 | 
							
									1. JS加密,加密代码方便给第三方。
							 | 
						|||
| 
								 | 
							
									2. MotionReplayer:动捕数据回放工具。
							 | 
						|||
| 
								 | 
							
									3. **MotionServer**:动捕数据处理Server。主要用于转发青瞳的动捕数据给其他Client。 MotionServer - Server - DirectorLive Client,使用动画蓝图中的IsMotionProcess变量判断身份。
							 | 
						|||
| 
								 | 
							
										1. 还包括自研的面部App FaceMask的数据转发。
							 | 
						|||
| 
								 | 
							
									4. obs-studio:OBS源码,添加了若干插件,但用不了,因为技术服务属于字节。
							 | 
						|||
| 
								 | 
							
									5. PixelStream:移植自UE官方,UE4版本有若干小改动。UE5版本不用。
							 | 
						|||
| 
								 | 
							
									6. Protobuf:动捕数据传输,google的那个协议。
							 | 
						|||
| 
								 | 
							
									7. VCluster:未完成,用于拉起所有机器的导播台程序。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 重定向逻辑
							 | 
						|||
| 
								 | 
							
								1. MotionProcessor关卡中每个角色的动画蓝图负责重定向。
							 | 
						|||
| 
								 | 
							
									1. 使用一个Control Rig节点进行重定向。接收MotionScale、SpineScale、ArmScale、HipsDiff以及MocapData、ShoulderDiff、ZOffset。之后进行自定义计算。优势就是非常灵活。
							 | 
						|||
| 
								 | 
							
								2. TsMotionRetargetComponent.ts
							 | 
						|||
| 
								 | 
							
								3. 挂载在BP_IdolController中。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								肩校准左边的滑块,用于调整动捕角色与游戏模型的比例。
							 | 
						|||
| 
								 | 
							
								- 默认:默认比例是计算出来,对于角色(Motion,走路效果)最佳的比例。
							 | 
						|||
| 
								 | 
							
								- 对齐:团舞,所有连接角色的比例统一设置成一个数值(互相匹配,针对腿)。
							 | 
						|||
| 
								 | 
							
								- 对齐(道具模式,不建议使用,半废弃):团舞,所有连接角色的比例统一设置成一个数值(互相匹配,针对手)。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 渲染管线
							 | 
						|||
| 
								 | 
							
								1. 添加ShaderModel。
							 | 
						|||
| 
								 | 
							
									1. ToonLit:通过CustomDatas传入阴影给Diffuse与Specular
							 | 
						|||
| 
								 | 
							
									2. ToonCustomBxDF:只有Diffuse 阴影过渡,Specular靠Matcap。
							 | 
						|||
| 
								 | 
							
								2. 改了ShadingModels.ush.
							 | 
						|||
| 
								 | 
							
								3. Encode/Decode GBuffer.
							 | 
						|||
| 
								 | 
							
								4. UE5 Encode/Decode GBuffer.
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# Plugins
							 | 
						|||
| 
								 | 
							
								1. AssetProcess:自研?资源规范性检测、安全性检测。
							 | 
						|||
| 
								 | 
							
								2. AVAudioUE4:商城,公用库,音频播放库。
							 | 
						|||
| 
								 | 
							
								3. ChaosBone:自研,骨骼物理模拟插件。
							 | 
						|||
| 
								 | 
							
								4. ChingReciver:青瞳的插件。
							 | 
						|||
| 
								 | 
							
								5. DataTableEditorUntilit:数据表插件。商城。
							 | 
						|||
| 
								 | 
							
								6. DirectAssistanter:辅助工具。
							 | 
						|||
| 
								 | 
							
								7. DTWebBrower:移植自UE、网页浏览器内嵌。
							 | 
						|||
| 
								 | 
							
								8. ControlRig:移植自UE。
							 | 
						|||
| 
								 | 
							
								9. FacialExpression:自研面捕驱动插件。
							 | 
						|||
| 
								 | 
							
								10. FFMepg:移植自FFMEPG。
							 | 
						|||
| 
								 | 
							
								11. GFurPro:毛发插件。
							 | 
						|||
| 
								 | 
							
								12. GloveProcess:自研,手套数据后处理插件。手套数据后处理插件。机器学习算法,姿势会进行匹配选择一个最好的姿势输出。
							 | 
						|||
| 
								 | 
							
								13. JNAAniamtion:自研,动画编辑相关。
							 | 
						|||
| 
								 | 
							
								14. KantanChert:商城,图表插件。
							 | 
						|||
| 
								 | 
							
								15. KawaiiPhysics
							 | 
						|||
| 
								 | 
							
								16. LDAssist:商城,美术编辑工具。
							 | 
						|||
| 
								 | 
							
								17. MotionCapture:青瞳的插件。
							 | 
						|||
| 
								 | 
							
								18. NDIO:NDIO
							 | 
						|||
| 
								 | 
							
								19. PixelCapture:官方
							 | 
						|||
| 
								 | 
							
								20. PixelStream:
							 | 
						|||
| 
								 | 
							
								21. Protobuf:
							 | 
						|||
| 
								 | 
							
								22. puerts
							 | 
						|||
| 
								 | 
							
								23. ReactUMG
							 | 
						|||
| 
								 | 
							
								24. RuntimeImportAudio:商城
							 | 
						|||
| 
								 | 
							
								25. RuntimeEditor:ASoul导播台的实时编辑器模块。
							 | 
						|||
| 
								 | 
							
								26. SerialComPLugin:串口插件。一些灯,现在不用了。
							 | 
						|||
| 
								 | 
							
								27. SimpleTCPServer:移植官方加修改,有在用。
							 | 
						|||
| 
								 | 
							
								28. SimpleUDP:移植官方加修改,有在用。
							 | 
						|||
| 
								 | 
							
								29. SPCR 布料插件
							 | 
						|||
| 
								 | 
							
								30. StreamDockLink:
							 | 
						|||
| 
								 | 
							
								31. TextureShare:自研,Pico相关插件,现在没用。
							 | 
						|||
| 
								 | 
							
								32. VRCapture:自研,Pico相关
							 | 
						|||
| 
								 | 
							
								33. VRPlaybackUE:自研,Pico相关。
							 | 
						|||
| 
								 | 
							
								34. VRTrack: 自研,VR手套相关。
							 | 
						|||
| 
								 | 
							
								## 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
							 | 
						|||
| 
								 | 
							
								1. DirectorCam:与24个镜头相关。
							 | 
						|||
| 
								 | 
							
								2. Editor:RuntimeEditor相关。
							 | 
						|||
| 
								 | 
							
								3. LiveDirector:
							 | 
						|||
| 
								 | 
							
									1. [ ] Character/TsIdolActor.ts:[[角色流程#TsIdolActor.ts]]
							 | 
						|||
| 
								 | 
							
								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样式定义,功能。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 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
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## Material
							 | 
						|||
| 
								 | 
							
								ResArt-CommonMaterial-Material,M_ToonHair_v01。v02为新版。
							 | 
						|||
| 
								 | 
							
								- CommonMaterial-Functions:ShadingModel的骚操作。
							 | 
						|||
| 
								 | 
							
								## Character
							 | 
						|||
| 
								 | 
							
								- BP_Idlo_Base
							 | 
						|||
| 
								 | 
							
									- 继承=>
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## LightChannel
							 | 
						|||
| 
								 | 
							
								1. 角色为LightChannel2。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 资源
							 | 
						|||
| 
								 | 
							
								- Characters:角色蓝图类。
							 | 
						|||
| 
								 | 
							
									- 命名规则`BP_角色名_XXX`
							 | 
						|||
| 
								 | 
							
									- 由技术同学进行配置,
							 | 
						|||
| 
								 | 
							
										- 主要配置Outline材质。
							 | 
						|||
| 
								 | 
							
										- DressName(导播软件会)
							 | 
						|||
| 
								 | 
							
										- 动画蓝图:服装布料效果。
							 | 
						|||
| 
								 | 
							
								- ResArt
							 | 
						|||
| 
								 | 
							
									- CharacterArt
							 | 
						|||
| 
								 | 
							
										- Material
							 | 
						|||
| 
								 | 
							
										- Mesh
							 | 
						|||
| 
								 | 
							
										- Animations
							 | 
						|||
| 
								 | 
							
										- Dissolve:溶解材质,个数与名称需要与角色材质一一对应。
							 | 
						|||
| 
								 | 
							
											- MakeDissolveMaterial.py生成对应的溶解材质。
							 | 
						|||
| 
								 | 
							
								- 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								场景:
							 | 
						|||
| 
								 | 
							
								- BP_ASoulSky:天空盒控制。
							 | 
						|||
| 
								 | 
							
								- 场景变体:使用UE官方的SceneVariantManager。
							 | 
						|||
| 
								 | 
							
									- LiveDirector - Editor- SceneVariant :SceneVariantTool
							 | 
						|||
| 
								 | 
							
									- 使用一个工具蓝图来创建场景变体以此来实现场景溶解切换效果。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 添加资产流程
							 | 
						|||
| 
								 | 
							
								#### 角色流程
							 | 
						|||
| 
								 | 
							
								如果只是修改若干资产数值,需要点击全量生成。(或者直接去修改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. 
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# 实现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位置
							 | 
						|||
| 
								 | 
							
								P4V - Trunk - tools - ARFaceCap
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								- 版本为Unity2020.1.16
							 | 
						|||
| 
								 | 
							
								# MotionServer
							 | 
						|||
| 
								 | 
							
								青瞳 -》 UE版MotionServer 重定向、过滤 -》.net MotionServer转发。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# UE5版本改动
							 | 
						|||
| 
								 | 
							
								1. 程序方面多了大世界系统逻辑,世界分区(WorldComposition)。其他逻辑是一样的。
							 | 
						|||
| 
								 | 
							
								2. 材质、渲染:使用一些trick技巧强行在材质中塞入一个宏强行打开CustomData来塞ShadowColor。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								## 版本升级
							 | 
						|||
| 
								 | 
							
								1. 程序:升级代码后,QA负责测试。
							 | 
						|||
| 
								 | 
							
								2. TA:效果美术、QA负责观察。
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								# Content
							 | 
						|||
| 
								 | 
							
								## Maps
							 | 
						|||
| 
								 | 
							
								### 开发相关
							 | 
						|||
| 
								 | 
							
								- Maps
							 | 
						|||
| 
								 | 
							
									- Scenes
							 | 
						|||
| 
								 | 
							
										- Map_LookDev
							 | 
						|||
| 
								 | 
							
											- Map_Hide
							 | 
						|||
| 
								 | 
							
											- Map_Lightt
							 | 
						|||
| 
								 | 
							
											- Map_LookDev:角色LookDev
							 | 
						|||
| 
								 | 
							
											- Map_LookDev_WZY
							 | 
						|||
| 
								 | 
							
											- Map_Props:
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								### 大世界
							 | 
						|||
| 
								 | 
							
								- Maps
							 | 
						|||
| 
								 | 
							
									- Map_SeasideCity
							 | 
						|||
| 
								 | 
							
										- Map_SeasideCity
							 | 
						|||
| 
								 | 
							
									- Map_CHNature
							 | 
						|||
| 
								 | 
							
										- Map_CHNature
							 | 
						|||
| 
								 | 
							
									- Map_Stylized_Vilage
							 | 
						|||
| 
								 | 
							
										- Map_Stylized_Vilage
							 | 
						|||
| 
								 | 
							
									- Map_WorlddEnd
							 | 
						|||
| 
								 | 
							
										- Map_WorldEnd
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								其他用了大世界技术的小型地图:
							 | 
						|||
| 
								 | 
							
								- Maps
							 | 
						|||
| 
								 | 
							
									- Map_GreenScreen:绿幕效果。
							 | 
						|||
| 
								 | 
							
									- Map_Live:Live场景。
							 |