我首先将一个模型(我们称之为版本1)导入VS2010 panda3d。然后我在3dsMax中修改了模型并再次将其导出到egg中(版本2)。但是,无论我导入了多少次,panda3d都会顽固地使用版本1.重命名.egg也无济于事。我怀疑panda3d缓存系统正在缓存我之前的模型,并且有一些重要的东西将所有版本链接在一起,默认panda3d引擎回到版本1.
主要问题是,我如何解决panda3d没有采用最新型号的问题?谢谢。
答案 0 :(得分:3)
如果你在Panda3D论坛上提出要求,我想你会更快地得到关于Panda3D的问题的答案。
但是为了回答您的具体问题,Panda确实合并了一个模型缓存,默认情况下会读取一次特定文件名(在会话期间),但在同一会话期间不会再次读取磁盘,即使文件发生更改(但是如果需要,你可以明确地要求它再次读取磁盘)。 Panda还有一个持久性磁盘缓存,默认情况下缓存模型在会话之间的加载,但在这种情况下,它总是在盲目返回先前模型之前检查文件的时间戳,如果文件更新,它将始终重新阅读并返回新版本。
如果您完全重命名该文件,它都不会返回缓存版本,因此在这种情况下必须继续其他内容。
禁用缓存的确切方式取决于您用于加载模型的特定调用。你引用VS2010,所以我推断你是用C ++编写的(但是使用VS2010代替VS2008并没有得到官方支持,所以你可能还有其他问题,除非你有很多方法可以正确使用VS2010)。
要避免特定模型的缓存,请尝试将标志中设置的LF_no_cache位的LoaderOptions对象传递给ModelPool :: load_model()(或者用于加载模型的接口)。