添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

有一些错误我在知乎更新了: https://zhuanlan.zhihu.com/p/375114938

--------------------------------------------------------------------------------------

约定:ABC都是动画蓝图,A是父亲 ,B是继承A的孩子,AB不同骨骼

版本4.26

基于ue的技术:Anim graph overrides和 Animation Blueprint Linking两种技术

Anim graph overrides:可以在B中修改A中某个动画节点所引用的动画序列。

Animation Blueprint Linking:可以在AB中分别指定某个功能模块用的AnimBP

有以上两个技术支撑,就可以完全的在不同骨架间自由的继承和重写了。 而且由于动画蓝图不再加载未使用的动画,因而还可节约内存。

分两种情况:

某段逻辑完全相同就可以用Anim graph overrides技术

某段逻辑完全不同就可以用 Animation Blueprint Linking 技术

Animation Blueprint Linking具体步骤

一个Animation Layer Interface  AIN  定义了 Layer1  layer2 layer3  三个虚的layer

A 继承AIN  分别重载了layer1  layer2 layer3三个layer(layer中可以不写逻辑),在Anim graph中 分别用了layer1 layer2 layer3(重点是用了)

B继承A  (但是B不能重载layer1 layer2 layer3)

A骨架生成C动画蓝图 继承AIN,重载三个layer,写A的具体逻辑

B骨架生成D动画蓝图 继承AIN,重载三个layer,写B的具体逻辑

在A的character中调用

Link Anim Class Layers 设置为C

在B的character中调用

Link Anim Class Layers 设置为D

-------------------------------------------------老的 废弃----------------------------------------------------------

1、B继承A,利用 Asset Override Editor编辑B对应A的动作。

B的Anim graph 就没有,Animation layer也没有,所以想直接扩展这方面的逻辑,貌似不行,但是有两条弯曲的路

a、在A中把逻辑写全,bool变量控制流程,在B中设置正确的bool,感觉没有多大意义,相当于所有的角色逻辑都写在了A中。

b、B的mesh 用post prosess anim blueprint。不过这ppab貌似逻辑上很难和A进行交互耦合,实现不了我们想要的继承功能。这个ppab在B之后  物理之前运行。

目前以上两个方案 很难和蓝图(c++)的继承相匹配。

但是B的event graph几乎和蓝图的继承一样

B能重载A的function和Custom Event

B能设置A的变量

B继承A有一个非常明显不可替代的好处:B和A 可以是不同的骨架。

2、如果A中充分用linked Anim graph呢?

其实这样解决不了根本问题,只是让A的逻辑更清晰而已。

因为link的C,必须和A同一个骨架,这就导致了其他骨架的B不能直接link C(没有Anim Graph你也写不了linked 节点),所以如果A作为parent,C一样要是纯逻辑不能有具体的动画资源。

总结:鉴于以上的局限性,anim graph的逻辑只能写在A中,如果B和A在逻辑上差异不大(相似度60%以上)可以把所有逻辑都写在A中。如果B和A的逻辑性差异非常大(相似度30%以下)不建议用继承关系。

https://zhuanlan.zhihu.com/p/147654817

https://www.unrealengine.com/zh-CN/tech-blog/tips-tricks-sharing-animation-blueprints

1、B继承AB的Anim graph就没有,Animation layer也没有,所以想直接扩展这方面的逻辑,貌似不行,但是有两条弯曲的路a、在A中把逻辑写全,bool变量控制流程,在B中设置正确的bool,感觉没有多大意义,相当于所有的角色逻辑都写在了A中。b、B的mesh 用post prosess anim blueprint。不过这ppab貌似逻辑上很难和A进行交互耦合,实现不了我们想要的继承功能。这个ppab在B之后 物理之前运行。目前以上两个方案 很难和蓝图(c++)的继承相..
在实际项目中,开发者有时希望 不同 骨架 间共享同一套 动画 蓝图 ,尤其是状态机的重用,从而实现 动画 转换逻辑的统一的配置。实际运行时仍然使用 骨架 对应的 动画 资源。例如 不同 种类怪物的 动画 状态机共享。 引擎中的 动画 蓝图 是与 骨架 绑定的,无法直接跨骨骼应用;这里给出一个简单的 蓝图 使用小技巧来实现 动画 蓝图 的共享。 示例工程: 下载链接:https://pan.baidu.com/s/1FIWdNvgcYakajbTqJE89LA 适用版本:引擎版本 4.22.2 or later 示例说明: 打开项目,地图中有两个角色,一个
动画 蓝图 运用:在角色 蓝图 中嵌入 动画 蓝图 ,在角色 蓝图 中的Mesh选项中Animation加入已有的 动画 蓝图 。 结构: 动画 蓝图 主要分为EnentGraph事件图,AnimGraph 动画 图。通常在EnentGraph中设置变量,在AnimGraph中调用设置好的变量(也可以从角色 蓝图 中获取变量)。 Blendspace:线性混合,复合节点,根据 不同 的数据,控制模型动作之间的切换, 在Cocos-2d场景 动画 中,常常出现多个Sprite的同一行为 动画 假设场景中此时有两个精灵sprite1,sprite2 他们其实点分别在场景左侧,需要完成的动作CCMoteTo到场景最右侧 初始状态如下图: 初始尝试: - (void)playAction //1.试图两个精灵播放同一个 动画 CGSize size = [[CCDirect
#include “Kismet2/BlueprintEditorUtils.h” #include “Kismet2/KismetEditorUtilities.h” void UYMToolBPLibrary::ReparentBlueprint(UBlueprint* Blueprint, UClass* NewParentClass) if (!Blueprint || !NewParentClass) UE_LOG(LogTemp, W 1. 首先,你可以使用一个循环来找到两个数中的较小值,作为循环的终止条件。 2. 在循环中,使用一个判断条件来判断当前的循环变量是否同时能整除两个数。 3. 如果能整除,将当前的循环变量作为最小公约数,并结束循环。 4. 如果不能整除,继续循环,直到找到最小公约数或者循环结束。 这样,你就可以在 UE4 蓝图 中计算出两个数的最小公约数了。\[3\] 希望对你有帮助! #### 引用[.reference_title] - *1* [小学生编程一些log](https://blog.csdn.net/ccanan/article/details/128761401)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [图形学笔记](https://blog.csdn.net/k351316217/article/details/111608283)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]