Hello!
I am quite a newbye in Panda, so coul you please tell me if it’s possible to use the same 3D model (geometry and texture) in multiple nodes. I mean not loading the same file but to share already loaded model.
Thank you!
The answer depends on what your goal is.
- If you want to reduce load time, this is not an issue.
Loading a model keeps it cached in memory, so if you try to load it again it is just making a copy in memory and is very fast.
# first one reads from hard drive
first_model = loader.loadModel("my_model_file")
# second one reads from memory
second_model = loader.loadModel("my_model_file")
- If you want to update many of the same model by just changing one of them, then you can use Python’s copy module. This results in a sort of weak copy where you can manipulate one model and have the rest mirror the first one.
first_model = loader.loadModel("my_model_file")
import copy
second_model = copy.copy(first_model)
- If you want to improve frame rate, Panda does have hardware instancing, but it is not well documented and a bit difficult to use.
If I recall correctly, you can also use a form of NodePath instancing to improve animation-related performance; see this manual entry for more.
Great! Thanks a lot for the help, guys!
I’ve also found an implementation of hw instancing in the recent bolog posts:
http://www.panda3d.org/blog/?p=44