You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
TODO:apply additive 节点和 apply mesh space additive 节点,这个加法要怎么做呢,[ozz-animation samples](https://guillaumeblanc.github.io/ozz-animation/samples/) 中有做 additive animation 的例子,很有必要看看。另外 mesh space vs local space,看起来 local space 其实就是 bone space,而 mesh space 就是 model space,apply additive 和 apply mesh space additive 分别适用于 local space additive animation 和 mesh space animation,类似地 layered blend per bone 而也有 Mesh Space Rotation Blend 和 Mesh Space Scale Blend 选项,我尤其关心计算细节,需要看看源码,用公式把这个 blending 表示出来
170
-
* 我实际试了一个例子,在三人称模板中用 layered blend per bone 混合 base pose 为 idle 的第 0 帧和 base pose 0 为 run fwd 第 0 帧,感觉开启 Mesh Space Rotation Blend 选项后的结果更符合预期。应该说,开启该选项后,混合后的结果更贴近单纯 run fwd 输出的结果。我目前的解释是因为 Mesh Space 的混合会考虑父节点的效果。例如我设置从关节 spine_02 开始混合,如果为 local space 的混合,那么在 spine_02 处混合后,最终 spine_02 的关节的矩阵应该还有乘以父节点等等的旋转结果,但是由于是从 spine_02 开始混合的,它以上的变换完全丢失了,因此最终看到的结果差异很大,但如果是 mesh space 的混合,是先算出 spine_02 在 mesh space 下的变换矩阵再进行混合,由于这个变换矩阵已经考虑过 spine_01 这些父关节的变换了,因此得到了一个与原来的位姿更接近的结果
171
-
* 但上面的理解无法解释为什么我开启 Mesh Space Rotation Blend 后,将 blend 的关节从 spine_02 下调到 spine_03 后,动画中人物手的位置发生了移动。因为根据上面的理解,节点的 mesh space 变换矩阵不依赖于设置的混合的位置才对。我现在的理解是 手是只发生了移动,即只有 translation 变了,但 rotation 没有变,因此没有矛盾的地方,也许这里还需要细看源码,关注 translation 是怎么算的(动画蓝图中的一个 pose 对应到 C++ 代码是怎么样的
172
-
* 另外一个问题,我将 layered blend per bone 中的 bone 设置为 root,且 blend pose 0 的权重设置为 1,得到的结果就和 blend pose 0 完全一样了。这个应该还好理解,这说明它就是做一个纯粹的 blend,而不是 additive 那种,所以权重设置为 1 就表示完全地使用 blend pose 0 的结果
173
-
* layered blend per bone 的 Curve Blend Option 选项是怎么用的
174
152
#### Blending Space
175
153
TODO:理解 2D blending space
176
154
TODO:文档 [Blend Spaces in Animation Blueprints](https://dev.epicgames.com/documentation/en-us/unreal-engine/blend-spaces-in-animation-blueprints-in-unreal-engine?application_version=5.4) 中谈到的 blend space graph 是个什么玩意
*[What’s the difference between UE_SERVER and WITH_SERVER_CODE](https://forums.unrealengine.com/t/whats-the-difference-between-ue-server-and-with-server-code/124652)
* 文档 [Actor Relevancy](https://dev.epicgames.com/documentation/en-us/unreal-engine/actor-relevancy-in-unreal-engine) 有说明,如果 actor 在一个 connection 中一段时间不 relevancy,将会关闭这个 connection 里对应的 actor channel
42
+
* 文档 [Actor Network Dormancy](https://dev.epicgames.com/documentation/en-us/unreal-engine/actor-network-dormancy-in-unreal-engine) 中讨论了如何设置 actor dormancy(注意,dormant actor 不会再检测 relevancy),当 actor 进入 dormant 时,服务器会关闭 actor channel(具体关闭哪些 connection 的 actor channel 取决于 `ShouldActorGoDormant` 函数)
43
+
* 服务器上调用 `AActor::TearOff`。服务器会关闭所有连接中该 actor 对应的 channel,客户端会将该 actor 的 role 设置为 authority(见 `UNetDriver::ClientSetActorTornOff`)
TODO:移动组件的同步,看看 [Networked Movement in the Character Movement Component](https://dev.epicgames.com/documentation/en-us/unreal-engine/understanding-networked-movement-in-the-character-movement-component-for-unreal-engine) 以及 [# 移动组件详解](https://zhuanlan.zhihu.com/p/34257208)
0 commit comments