1

これまでのところ、モデルのインポートに関して Panda3d に本当に不満を感じていました。Panda3d はモデルを 1 回だけインポートし、二度と更新することはありません (.egg ファイルの名前を変更した後でも)。

最初に、モデル (バージョン 1 と呼びましょう) を VS2010 panda3d にインポートしました。次に、3dsMax でモデルを修正し、再度 Egg にエクスポートしました (バージョン 2)。ただし、何度インポートしても、panda3d は頑固にバージョン 1 を使用します。.egg の名前を変更しても効果はありません。panda3d キャッシュ システムが以前のモデルをキャッシュしていて、すべてのバージョンをリンクする重要な何かがあり、デフォルトで panda3d エンジンをバージョン 1 に戻しているのではないかと疑っています。

主な質問は、panda3d が最新モデルを取り込まないというこの問題をどのように解決するかということです。ありがとうございました。

4

1 に答える 1

3

Panda3D フォーラムで質問すると、Panda3D に関する質問に対する回答がより迅速に得られると思います。

しかし、特定の質問に答えるために、パンダには実際にモデルキャッシュが組み込まれています。これは、デフォルトで特定のファイル名を(セッション中に)1回読み取りますが、ファイルが変更された場合でも、同じセッション中にディスクを再度読み取ることはありません(ただし、明示的にこれが必要な場合は、ディスクを再度読み取るように依頼してください)。Panda には永続的なディスク キャッシュもあり、デフォルトではセッション間のモデルの読み込みもキャッシュされますが、この場合、前のモデルをやみくもに返す前に常にファイルのタイムスタンプをチェックし、ファイルが更新された場合は、常に再読み込みし、代わりに新しいバージョンを返します。

どちらの場合も、ファイルの名前を完全に変更すると、キャッシュされたバージョンが返されないため、その場合は何か他のことが起こっている必要があります。

キャッシュを無効にする正確な方法は、モデルの読み込みに使用している特定の呼び出しによって異なります。あなたは VS2010 を参照しているので、C++ で書いていると推測します (ただし、VS2008 の代わりに VS2010 を使用することは公式にサポートされていないため、VS2010 を正しく使用する方法をはるかに超えていない限り、他の問題も発生する可能性があります)。

特定のモデルのキャッシュを回避するには、フラグに LF_no_cache ビットが設定された LoaderOptions オブジェクトを ModelPool::load_model() (またはモデルの読み込みに使用しているインターフェイス) に渡してみてください。

于 2012-12-01T15:06:58.647 に答える