评分
完整支持GLTF格式动画系统
为《星空》引入了基于GLTF标准的独立动画框架,允许玩家通过Blender等工具创建并导入自定义角色动画,实现高度自由的角色动作设计。
多角色同步与热键控制
支持多个角色同步播放动画,并提供控制台命令、Papyrus脚本API以及跨插件调用接口,方便MOD开发者进行整合使用;还提供上下键快速切换动画的调试模式。
持续优化中并已支持Papyrus绑定与同步实例
最新版本新增Papyrus绑定功能,支持任意数量角色同步动画,并加入根骨骼控制功能,提升动画播放稳定性,计划中将支持共用存档序列化以记忆动画状态。
结合最近20条用户讨论生成
讨论
24感谢您的回复,还有这个模组!它非常好用!安装和运行完全没有问题。我希望找到一种方法来自动执行这个过程,而不必每次都进入控制台。我觉得宏和快捷键可能是一个部分解决方案,但是……我不太擅长这些模组相关的东西。所以恐怕我得等等看其他人可能会或不会创造出什么。再次感谢您的回复和这个模组!
2025-04-06
建议使用常用的模组管理器之一来安装此模组:Vortex 或 Mod Organizer 2。安装完成后,连同相关依赖项,通过 sfse_loader.exe 启动游戏以启用 SFSE 模组支持。
2025-04-06
这个模组不会与角色装备交互,它只是播放和混合动画。你可能在想其他的模组。
2025-04-06
当角色在动画播放时仍然穿着衣物,这意味着什么? 动画确实会播放,但他们全程都穿着衣服? 我也在使用“可玩NPC服装”模组。
2025-04-06
我刚在控制台收到消息,说当我搜索时找不到NAF
2025-04-03
有一个问题,我该如何安装这个程序?我是新手,在安装模组方面不太熟悉。游戏内只显示一条消息,说正在发生某些事情,但之后什么也没发生。
2025-04-03
谢谢您的回复。我有一些进一步的补充说明: #1 感谢您的解释。您让我意识到,我可以简单地检查是否接收到正确次数的 PhaseBegin 事件(每个阶段一次),如果在那之前我收到了 SequenceEnd 事件,我就知道出了问题并可以处理错误。此外,我也可以总是使用序列而不是 PlayAnimation(),所以真的没有必要实现这个功能。虽然不是必须的,但您可以添加一个在 SequenceEnd 之前触发的 PhaseFailed/SequenceFailed 事件,用于指示动画播放失败的情况。(这样像我这样的懒人就不用去数 PhaseBegin 事件了;) #2 / #3 将会非常受用。在我看来,检查文件是否存在应该就足够了,因为用户在 NAF 目录中存在损坏的 .glb 文件的概率极低。 #4 是的,这应该是完全可以实现的!我通过在玩家上调用 GetSequencePhase() 进行了测试。我很高兴地报告,即使未安装 NAF 或 SFSE(或两者皆无),Papyrus 也能很好地处理这种情况。它会返回 "None",抛出错误但继续执行。 因此,通过在 NAF.pex 中添加类似以下内容,我们(其他模组作者)可以通过简单调用 NAF.isInstalled() 来判断 NAF 是否已安装以及 SFSE 是否已安装: ```html ; 检查 NAF 及其依赖项 SFSE 是否已安装。 ; 返回值: ; None => NAF.pex(此脚本)缺失; ; false => NAF.pex 已安装,但 SFSE 或 NAF.dll 缺失; ; true => NAF.pex、NAF.dll 和 SFSE 均已安装 bool Function IsInstalled() Global If (IsSFSEInstalled()) Return true Else Return false EndIf EndFunction ; 辅助函数。请改用 IsInstalled()。 bool Function IsSFSEInstalled() Native "IsSFSEInstalled()" ``` 只需让您的 SFSE 插件始终返回 true 即可实现此功能。这将非常棒,因为它允许我们在游戏中向玩家显示一条消息,明确说明模组无法运行的具体原因(例如 NAF 未安装或 SFSE 未安装)。
2025-03-30
请安装 Trainwreck Crash Logger,当游戏崩溃时,它会在 Documents\My Games\Starfield\SFSE\Crashlogs 生成日志文件,然后将日志内容作为新的错误报告上传到本页面的“Bugs”标签下。
2025-03-30
嘿,谢谢,很高兴你喜欢这个模组 ^^ 关于建议,有一些技术上的挑战会阻止其中一些功能的实现: #1 目前还无法完全实现,因为涉及到多线程问题。当脚本调用 `PlayAnimation()` 或 `StartSequence()` 函数时,NAF 会通知其内部文件管理器,角色 A 需要加载动画文件 B。然后,当条件允许时,文件管理器的工作线程会尝试加载动画文件 B,并告知角色 A 是否成功加载。这样设计是为了避免在等待硬盘读取时出现卡顿问题。我可以通过将 `PlayAnimation()` 和 `StartSequence()` 设为延迟函数来解决这个问题,但直到 SFSE 添加协程保存序列化功能之前,脚本函数无法安全地设为延迟(否则 Papyrus 栈可能会永久冻结)。 不过,在使用 `StartSequence()` 时,你可以注册 `PhaseBegin` 事件,以了解动画文件何时完成加载并开始播放。如果文件加载失败,则会触发 `SequenceEnd` 事件。 #2 和 #3 是可行的,我会尝试以某种形式添加这些功能。(与 #1 相关的是,我可以使 `PlayAnimation()` 和 `StartSequence()` 根据简单的“文件是否存在”检查返回 true/false,但在这种情况下,true 的值并不能保证动画一定会播放,因为文件可能包含格式错误的数据。) 对于 #4,NAF 本身无法提供 `IsInstalled()` 函数,因为如果 NAF 的 .pex 文件和/或 .dll 文件未安装,那么调用 `NAF.IsInstalled()` 的模组将会报错,并且在此调用之后的代码将不会执行。不过,`GetVersion()` 功能绝对可以实现。
2025-03-30
我一直在努力尝试安装这个模组。我是通过 Vortex 安装的,CustomCommandFramework 和 SFSE 库也是通过 Vortex 安装的。但当我进入游戏时,发现 NAF 命令不存在。我按照解决方案尝试使用 sfse_loader.exe 来启动游戏,但每次加载存档时都会立即崩溃,有人可以帮忙吗?
2025-03-29