diff --git a/.obsidian/plugins/various-complements/histories.json b/.obsidian/plugins/various-complements/histories.json index 021a589..9f4dfe9 100644 --- a/.obsidian/plugins/various-complements/histories.json +++ b/.obsidian/plugins/various-complements/histories.json @@ -1 +1 @@ -{"OutlinePass":{"OutlinePass":{"internalLink":{"count":1,"lastUpdated":1715346170348}}},"JNCustomAssetEd:定义修型资产":{"JNCustomAssetEd:定义修型资产":{"currentFile":{"count":1,"lastUpdated":1715827692229}}},"GreenScreen":{"GreenScreen":{"currentFile":{"count":1,"lastUpdated":1715843645080}}},"Character":{"Character":{"currentFile":{"count":1,"lastUpdated":1715848900346}}},"定义了·FGuid":{"定义了·FGuid":{"currentFile":{"count":1,"lastUpdated":1715915171873}}},"(例如Idol.BeiLa)。以及FollowingSocketName":{"(例如Idol.BeiLa)。以及FollowingSocketName":{"currentFile":{"count":1,"lastUpdated":1716192086731}}},"DirectorCamera为场景相关的相机(静态镜头)。":{"DirectorCamera为场景相关的相机(静态镜头)。":{"currentFile":{"count":1,"lastUpdated":1716192192053}}},"ECS资料":{"ECS资料":{"currentFile":{"count":1,"lastUpdated":1716465594941}}},"DebugView":{"DebugView":{"internalLink":{"count":1,"lastUpdated":1716796051996}}},".p4ignore":{".p4ignore":{"currentFile":{"count":1,"lastUpdated":1717048569032}}},"admin":{"admin":{"currentFile":{"count":1,"lastUpdated":1717123692206}}},"具体的命令应该说是":{"具体的命令应该说是":{"currentFile":{"count":1,"lastUpdated":1717749753511}}}} \ No newline at end of file +{"JNCustomAssetEd:定义修型资产":{"JNCustomAssetEd:定义修型资产":{"currentFile":{"count":1,"lastUpdated":1715827692229}}},"GreenScreen":{"GreenScreen":{"currentFile":{"count":1,"lastUpdated":1715843645080}}},"Character":{"Character":{"currentFile":{"count":1,"lastUpdated":1715848900346}}},"定义了·FGuid":{"定义了·FGuid":{"currentFile":{"count":1,"lastUpdated":1715915171873}}},"(例如Idol.BeiLa)。以及FollowingSocketName":{"(例如Idol.BeiLa)。以及FollowingSocketName":{"currentFile":{"count":1,"lastUpdated":1716192086731}}},"DirectorCamera为场景相关的相机(静态镜头)。":{"DirectorCamera为场景相关的相机(静态镜头)。":{"currentFile":{"count":1,"lastUpdated":1716192192053}}},"ECS资料":{"ECS资料":{"currentFile":{"count":1,"lastUpdated":1716465594941}}},"DebugView":{"DebugView":{"internalLink":{"count":1,"lastUpdated":1716796051996}}},".p4ignore":{".p4ignore":{"currentFile":{"count":1,"lastUpdated":1717048569032}}},"admin":{"admin":{"currentFile":{"count":1,"lastUpdated":1717123692206}}},"具体的命令应该说是":{"具体的命令应该说是":{"currentFile":{"count":1,"lastUpdated":1717749753511}}},"添加一个Idol.xxx标签。":{"添加一个Idol.xxx标签。":{"currentFile":{"count":2,"lastUpdated":1718092533903}}}} \ No newline at end of file diff --git a/01-Diary/周小结/2024.5.md b/01-Diary/周小结/2024.5.md index 378e522..9397bfa 100644 --- a/01-Diary/周小结/2024.5.md +++ b/01-Diary/周小结/2024.5.md @@ -13,8 +13,3 @@ 5. 完成6台手机的FaceMask部署。 6. 帮助绑定同学使用UE5动画重定向程序实现贝拉动画=>思诺动画。 -# 6.3~6.7 -1. 给所有同事的电脑部署p4v以及工作区。 -2. 设置P4各个账号的权限、规范工作区与commit Log。 -3. 完成3级导播台RootMotion、PostAnimBlueprint的启用/禁用切换功能。 -4. 添加新角色的F08相关的代码,待测试。 \ No newline at end of file diff --git a/01-Diary/周小结/2024.6.md b/01-Diary/周小结/2024.6.md new file mode 100644 index 0000000..5dbe850 --- /dev/null +++ b/01-Diary/周小结/2024.6.md @@ -0,0 +1,10 @@ +# 6.3~6.7 +1. 给所有同事的电脑部署p4v以及工作区。 +2. 设置P4各个账号的权限、规范工作区与commit Log。 +3. 完成3级导播台RootMotion、PostAnimBlueprint的启用/禁用切换功能。 +4. 添加新角色的F08相关的代码,待测试。 + +# 6.11~6.14 +1. [ ] 学习之前的角色添加录制视频,解读ASoul新角色的蓝图的创建规范。 +2. [ ] 尝试创建新角色的蓝图以及文件夹结构。 +3. [ ] \ No newline at end of file diff --git a/02-Note/DAWA/ASoul/流程笔记/角色流程.md b/02-Note/DAWA/ASoul/流程笔记/角色流程.md index 0818c05..ac0366b 100644 --- a/02-Note/DAWA/ASoul/流程笔记/角色流程.md +++ b/02-Note/DAWA/ASoul/流程笔记/角色流程.md @@ -2,10 +2,30 @@ 继承关系:BP_XXX_Base -> BP_Idol_Base -> TsIdolActor -> AVCharacter -> ACharacter 。 主要逻辑位于TsIdolActor中,文件路径为`Script/LiveDirector/Character/TsIdolActor.ts` +# 添加新衣服流程 +1. 在Content/Character/XXX中创建继承自BP_XXX_Base的蓝图。 +2. 设置SkeletalMesh。 +3. 添加对应的OutlineMaterial。 +5. 在DressName中输入新衣服的显示名称。 +6. 添加Prop标签。 + 1. Idol.XXX + 2. Prop.Dress(第一件衣服需要设置成Prop.Dress.Default) + 3. Prop.MountPoint.Body +7. ***脚本扫描***:点击编辑器的嘉然头像->角色道具配置全量生成 or 角色道具配置增量生成。会往IdolPropAssetConfig.json添加对应衣服或者道具配置数据。 # 添加新角色流程笔记 1. 添加一个Idol.xxx标签。 - -## 含有标签的文件 +2. 修改下面相关文件[[#含有角色标签的文件]]。 +3. 添加对应的蓝图与文件结构。 + 1. Content/Character + 1. 在Idol_Base中添加[[#BP_XXX_Base]]。 + 2. Content/ResArt/CharacterArt:放置角色与服装,按照 +4. 指定用于修型的PostProcess动画蓝图。 +5. 添加Prop标签。 + 1. Idol.XXX + 2. Prop.Dress + 3. Prop.MountPoint.Body +6. ***脚本扫描***:点击编辑器的嘉然头像->角色道具配置全量生成 or 角色道具配置增量生成。会往IdolPropAssetConfig.json添加对应衣服或者道具配置数据。 +## 含有角色标签的文件 1. [x] TsCharacterItem.ts `Script\LiveDirector\Character\View\TsCharacterItem.ts` 1. 3级角色控制界面相关的UI操作。 2. [x] TsCharacterMocapViewTmp.ts :这个是MotionProcess的UI,继承控件`/Content/UIAssets/Character/Mocap/WBP_CharacterMocapViewTmp` @@ -17,54 +37,18 @@ 2. 快捷命令 快速创建4个角色 IdolCostume 5. [x] TsSpawnPointSettingItem.ts 1. IdolItemUI,继承控件`/Content/UIAssets/Character/WBP_SpawnPointSettingItem` -6. [ ] TsIdolPropManagerComponent.ts +6. [x] TsIdolPropManagerComponent.ts 1. 没有思诺与心怡 2. 需要搞清楚。 7. [x] ~~TsSimpleLevelManager.ts~~ 1. SwitchLiveArea()中调用,只调用了Idol.BeiLa,属于容错语句。 8. ~~CameraDebug.cpp ~~(这个不需求) -## MotionProcess可疑的地方 -```ts - // #region 角色创建 - static ServerCreateIdolControllerAtLiveArea(World: UE.World, IdolRootTag: UE.GameplayTag, variance:number, LiveAreaGIUD: UE.Guid): TsIdolControllerActor { - let bpClass = UE.Class.Load(this.BluePrintPath) - if (bpClass == null) { - console.error("IdolController BluePrint is null") - return null; - } - - let levelController = TsLevelAreaManager.Get(World) - if (levelController) { - let liveArea = levelController.GetLiveArea(LiveAreaGIUD) - if (liveArea == null) { - console.error("Cannot create idol because of invalid livearea guid!!") - return null; - } - } - - let spawnTransform = new UE.Transform() - let controller = UE.GameplayStatics.BeginDeferredActorSpawnFromClass(World, bpClass, spawnTransform) as TsIdolControllerActor - controller.LiveAreaGIUD = LiveAreaGIUD - if (variance < 0) { - variance = this.GetVarianceNumber(World, IdolRootTag) - } - controller.Identity = new UE.IdolIdentity(IdolRootTag, variance) - controller.visibility = true - var mgr = Utils.GetPropManager(controller.GetWorld()) - controller.Index = mgr.CharacterIndex - mgr.CharacterIndex += 1 - UE.GameplayStatics.FinishSpawningActor(controller, spawnTransform) - controller.SetTransformToLiveArea() - controller.PropComp.ServerLoadPropPreset(0) - DirectorEventSystem.Emit(World, DirectorEvent.CharacterGeneratedServer, controller, controller.Identity.RootTag.TagName) - - console.log("Successfully load " + controller.GetIdentityName()) - return controller - } -``` - - `DirectorEventSystem.Emit(World, DirectorEvent.CharacterGeneratedServer, controller, controller.Identity.RootTag.TagName)` +## BP_XXX_Base +1. 指定动画蓝图。 +2. 指定LiveLinkName。 +3. 指定OutlineMaterial。 +4. # AVCharacter 主要实现了`virtual void OnRep_AttachmentReplication() override;`,声明了若干BlueprintNativeEvent: @@ -141,4 +125,6 @@ CanSyncRelativeTransform(): boolean { let fullbodyNode = Reflect.get(animInstance, 'AnimGraphNode_Fullbody') as UE.AnimNode_FullBody return !(fullbodyNode && fullbodyNode.bGetMotionData) } -``` \ No newline at end of file +``` + +# Prop.Dress.Default