1

到目前为止,我对 Panda3d 的导入模型感到非常沮丧。Panda3d 只会导入一次模型,并且永远不会再更新(即使更改了 .egg 文件的名称)

我首先将一个模型(我们称之为版本 1)导入到 VS2010 panda3d 中。然后我在 3dsMax 中修改了模型并再次将其导出到 egg(版本 2)。但是,无论我导入多少次,panda3d 都会顽固地使用版本 1。重命名 .egg 也无济于事。我怀疑 panda3d 缓存系统正在缓存我以前的模型,并且有一些重要的东西将所有版本链接在一起,默认 panda3d 引擎回到版本 1。

主要问题是,我如何解决 panda3d 没有采用最新模型的问题?谢谢你。

4

1 回答 1

3

如果您在 Panda3D 论坛上提问,我认为您会更快地获得有关 Panda3D 的问题的答案。

但是为了回答您的具体问题,Panda 确实包含了一个模型缓存,默认情况下(在会话期间)读取特定文件名一次,但在同一会话期间不会再次读取磁盘,即使文件发生更改(但您可以显式如果需要,请它再次读取磁盘)。Panda 还有一个永久性磁盘缓存,默认情况下也会缓存会话之间模型的加载,但在这种情况下,它总是在盲目返回之前的模型之前检查文件的时间戳,如果文件更新,它将始终重新阅读并返回新版本。

如果您完全重命名文件,在这两种情况下都不会返回缓存版本,因此在这种情况下必须进行其他操作。

禁用缓存的精确方式取决于您用于加载模型的特定调用。您引用了 VS2010,所以我推断您是用 C++ 编写的(但官方不支持使用 VS2010 而不是 VS2008,因此除非您无法正确使用 VS2010,否则您可能还会遇到其他问题)。

要避免特定模型的缓存,请尝试将带有标志中设置的 LF_no_cache 位的 LoaderOptions 对象传递给 ModelPool::load_model() (或您用于加载模型的任何接口)。

于 2012-12-01T15:06:58.647 回答