Python 如何在PyOpenGL中更快地从数据加载模型?

Python 如何在PyOpenGL中更快地从数据加载模型?,python,performance,opengl,pyopengl,Python,Performance,Opengl,Pyopengl,我一直在使用Python OpenGL用Python制作一个3D游戏。我使用了很多由Blender制作的.obj文件,主要是因为有动画和很多模型。加载和解析这些文件(花了几分钟)并将其转换为顶点似乎需要很长时间。如何更快地加载这些文件 从中,我找到了将obj数据转储到内存(文件)并将所有小文件放入大文件的可能解决方案,但我不知道如何执行这两种操作 当我使用.gltf文件作为替代文件时,我从PYPI中找到了pytf模块,但不知道如何使用它 提前感谢, Noah花几分钟加载一堆模型文件似乎非常慢,即

我一直在使用Python OpenGL用Python制作一个3D游戏。我使用了很多由Blender制作的.obj文件,主要是因为有动画和很多模型。加载和解析这些文件(花了几分钟)并将其转换为顶点似乎需要很长时间。如何更快地加载这些文件

从中,我找到了将obj数据转储到内存(文件)并将所有小文件放入大文件的可能解决方案,但我不知道如何执行这两种操作

当我使用.gltf文件作为替代文件时,我从PYPI中找到了pytf模块,但不知道如何使用它

提前感谢,


Noah

花几分钟加载一堆模型文件似乎非常慢,即使对于.obj这样的非理想格式也是如此。这些文件有多少个,有多大?您使用什么加载程序来完成这项工作?我的建议是放弃这种方法,看看您是否能够说服Blender生成适合骨骼动画的输出文件(这需要一个.Obx文件,一个骨骼+骨的列表,然后是动画中每个骨头的位置/旋转信息。如果你不能做到以上几点,考虑把你的.Obf文件预处理成打包的二进制文件(例如)。因此,您可以将整个顶点信息上传到顶点缓冲区对象和面信息到单独的索引缓冲区对象。您的绘制调用是一个单一的代码> GLDRAWELMENS <代码>。您可以考虑的另一种格式是GLTF。我相信KHRONOS(OpenGL委员会的人)。我为blender制作了一个导出器。如果需要,您可以选择使用二进制格式导出文件,使其速度更快。如果您使用的是我在pygame网站上经常看到的OBJloader,那可能效率也很低。我认为它会将顶点数据加载到python列表中,而在复制时更倾向于使用连续的numpy数组这些数据可以有效地应用到GPU。继续寻找更多的这些加载程序,我就越看越近!它是一个包装在一个C++库周围的,可以加载Obj/MTL文件。